プログラマはアルゴリズムを知る必要がありますか?

文字列を規則性で分割するための標準のスクリプト機能の代わりに、脆弱な心をa敬の念に抱く状態マシンでCのようなコードを作成する開発者に会ったことがありますか?



また、複雑な赤黒木の複雑さを知らない、または線形判別分析をニュートンの第二法則と混同しないほどひどいですか?



これについては多くの話があります:会議、大規模なパーティー、インタビューなど...しかし、実際には、厳しい締め切りの中で特定のビジネス上の問題を解決するとき、学問的な知識は「どうしても必要ない」奇妙なものであり、ホットな脳のキャッシュであることが判明するかもしれません効果的な作業のために、ブースト、Java、またはUNIXコンソールコマンドのライブラリの名前、ログファイルへのパス、およびバックルームのビットへの増分されていないパスのみが含まれています。







はい、チューリングコンピューター、正規表現の有限状態機械理論、およびragelだけでなく、実際には、一般的なケースのレベルでgrep、egrep、awk、perlのビット、および通常の構文があることを知っておく必要があります。



はい、 RBツリーのノードは削除するのが非常に楽しく、 優先度キューが役立つこともありますが、古き良き料理のSQLクエリを作成し、インデックスを使用します。



もちろん、オペレーティングシステムの目的は「一般的に」理解できますが、現時点では、 psコマンドでスレッドに関する詳細を表示するキーに興味があります。



グラフ理論からの詳細な検索と、孫を怖がらせることができる経験の浅い人々のための多くのNP困難なタスクとトリックについて知ることは有用ですが、IPの仕組み、パッケージの構成、このスクリプトが遅くなる理由を指やつま先で理解する必要がある場合が多く、ホットコーヒーを飲む陰気な笑顔の開発者によって書かれました。



はい、もちろん、プロセッサはハードワイヤされたコマンドを実行し(完全ではありませんが、多くの場合CISCおよびRISCで)、小さく制限されたプリミティブな命令セットを理解します-しかし、同僚は、この10GB RAMに命を吹き込むことなく、しばしば明確ではありませんワニに。



過去半世紀にわたるコンピューティングの分野でのわずかな数回で収集できるほとんどすべての科学的成果は、データベース、分散ファイルシステム、特に現在流行しているNoSQLソリューションで何百回も収集され、吸い込まれて実装されていることがわかります。 そして、かなり頻繁に別の問題が発生します-それがすでに行われ、長い間準備ができており、そこにあることを知って、車輪を再発明して、論文の誰かがずっと前に働くためのアルゴリズムを思い付かないことです



科学コミュニティで何十年も頭を吸っているよりも、実際にはあまり複雑ではないが、深く没入できる、広範な応用知識(C ++の微妙さ、UNIXシステムコール、TCPパケット構造、psコマンドキー、jvmガベージコレクタータイプ)を持っているほうがはるかに価値があるという印象がありますアルゴリズムとコンピューティングの理論。 もちろん、自由時間に視野を広げることは確かに有用なことです。







機械学習



もう1つ、数十年ぶりに、ニューロンのファッション- ディープラーニングと大規模なデータセットでの「ゴールド」の検索が、そうですね、もう少し楽しくなりました。 彼らは、ロジスティック回帰を用いた「忘れられた」平凡な数学的統計、ひげを生やした百年のベイズ分類器を思い出し始めました。 「ビッグデータ分析」ユーティリティは、雨の後のキノコのように見えました。これは、内部でアルゴリズム的に複雑なものを表すものではなく、Spark、Hadoop / MRなどの休暇で平均的な開発者によって書かれています



言語分析



この分野では、機械学習のないローションを含む裸の逆索引は、もちろん非常に困難です。 繰り返しますが、これはかなり狭い地域であり、言語学者ではなく、学校レベルでロシア語を知っている場合、基本的な用語を理解するまで、1、2年は汗をかかなければなりません。



結論



理論的知識を習得する狂信は多くの時間と労力を要する可能性がありますが、実際には、知識は役に立たず、風化しないかもしれません-なぜなら 人類が必要とするほぼすべてのものは、標準ライブラリ、データベース、ファイルシステム、およびその他のクラシックで既に100回書き込ま/書き換えられています。



実践的なスキルの習得:プログラミング言語、UNIX機能、ソフトウェア設定、開発環境、SQL、ファッショナブルなNoSQL機能(これらはやはり忘れられていた古い種類のアルゴリズムです)、ファッショナブルではないがそれほど強力ではないSQLツールの詳細-はるかに便利です。



グラフ理論の浅い知識を心配する必要はありません。この問題に直面する運が良ければ、 既製の解決策を講じてください。



チームでコミュニケーションを取り、働くことを学ぶ。 良い気分は、プロジェクトの成功の鍵です。



機械学習やビッグデータの無能さについて悩む必要はありません。 これは、科学者、数学者、アナリスト、科学者向けです。学校で複雑さが増すという問題を解決しなければ、まだ何も理解できません。 ビジネスアプリケーションを理解することがより重要です。 そして、だまされたニューロンが画像と音声の認識の問題の解決に引き付けられていることが判明した場合、あなたのオンラインゲームやウェブプロジェクトは何の助けにもなりません-神経細胞を無駄にすることはありません。



UNIXマニュアルを最後まで読んでください。 それらの多くがあります、これは長い時間と深刻です。 プログラムが安定して予測どおりに動作するようになったら、お茶を注いで、このような本を注文し、科学お楽しみください



皆さんの幸運、より実践的なケース、そして良い気分!



All Articles