Hacker News のホットな話題: 利用できるパッケージが非常に多いにもかかわらず、プログラマーは依然としてアルゴリズムを学ぶ必要があるのでしょうか?

Hacker News のホットな話題: 利用できるパッケージが非常に多いにもかかわらず、プログラマーは依然としてアルゴリズムを学ぶ必要があるのでしょうか?

さまざまなアルゴリズムの実装やソフトウェア パッケージがオープン ソースで利用できる世界において、アルゴリズムはプログラマーにとって依然として重要ですか?

[[333416]]

数十年前にプログラマーだった人は、アルゴリズムに精通していて、自分でアルゴリズムを書く必要があったことが多かったはずです。しかし今日では、アルゴリズムは「商品」となり、実践者は既製のソフトウェア パッケージや購入したアルゴリズムを使用しています。 「機械学習には数学は必要ない。多くのアルゴリズムがパッケージ化されており、パッケージを調整するだけでよい」という見解を主張する人もいます。

本当に時代は変わったのでしょうか?最近、関連トピックに関する記事が Hacker News の Web サイトで議論を巻き起こしました。

記事の主な内容は次のとおりです。

私が最初にソフトウェア開発を始めた頃は、開発者は使用するアルゴリズムのほとんどを自分で実装する必要がありました。ハードウェア ベンダーはいくつかのライブラリを提供していましたが、当時の開発環境は全体的に、独自のアルゴリズム (より技術的で複雑な数学関数を除く) を作成するというものでした。

ほとんどの開発者は、Donald Knuth 著の「The Art of Computer Programming」を読むでしょう。この本は、アルゴリズムを段階的に実装するための非常に信頼できる読み物リソースです。また、ライブラリのコピーに、アルゴリズムの更新内容が非常に小さな文字で手書きされ、前のページのテキストの上に貼り付けられているのを見たのを覚えています。

当時は、コンピューターが一般的な問題を許容できる速度で解決できるほど高速ではなかったため、アルゴリズムが非常に重要でした。一般的な命令の実行時間と命令時間、および特定の CPU で使用可能なレジスタの数は、開発者がよく議論するトピックです。メモリ容量は通常キロバイト単位で報告され、すべてのバイトが重要です。

それはアルゴリズムの時代でした。

メモリ容量がメガバイトからギガバイトに移行するにつれて、オープンソースの商用アルゴリズムとコンピューターのストレージ速度は劇的に向上しました。

今日の開発者は、アルゴリズムの実装に関して幅広い選択肢を持っています。解決すべき問題が他にもたくさんあるのに、なぜアルゴリズムの実装に時間を無駄にするのでしょうか?

現在、アルゴリズムは橋のボルトのようなもので、非常に重要であるにもかかわらず無視されています。今日の開発者は、ストーリーポイント、機能、ビジネス ロジックなどについて議論することを好みます。問題が明確に定義されている場合、多くの開発者は、コードをゼロから作成するのではなく、既存のパッケージを探すことを好むようになりました。

新しいアルゴリズムは現在も開発中であり、研究者は既存のアルゴリズムを継続的に改良しています。しかし、これは比較的ニッチなものです。

一部の企業のアルゴリズムは商品ではありません。 Google の規模では、一見非常に小さな改善でも、会社は数百万ドルを節約できます (膨大な数のほんの一部でも、かなりの額であるため)。一部の企業にとって、アルゴリズム開発はコア競争力の一部である可能性があります。アルゴリズムの非コモディティ性は、そのような企業に競争上の優位性を与えますが、非コア競争力の中では、アルゴリズムはコモディティと見なされます。

ドナルド・クヌースの『The Art of Computer Programming』は、アルゴリズムを一般に公開する上で重要な役割を果たしました。この本はよく引用されるが、今では読む人はほとんどいないのではないかと思う。

数年前、私が読んでいたソフトウェア エンジニアリングの本にアルゴリズムに関する専用の章がないことに突然気づきました。

今日、私たちはソフトウェア開発エコシステムの時代にあります。

このアルゴリズムはまだ完全に忘れ去られてはいません。人々がコンピューターに必要なことを伝えるだけでよくなり、実装の詳細を気にする必要がなくなるまで(または遺伝的アルゴリズムのプログラミングがより良く開発されるまで)、このアルゴリズムは完全には忘れ去られないでしょう。

開発者はどう思いますか?

「アルゴリズムは依然として重要ですか?」この疑問は長い間存在し、開発者の間でさまざまな態度で議論されてきました。

将来、コンピューターが音声からコードへの変換を通じてアルゴリズムをコンパイルできるようになったとしても、プログラマーの仕事はコンピューターに実装するアルゴリズムを読み取ることになるかもしれません。

アルゴリズムをまったく書かない開発者の割合は高くなっていますが、アルゴリズムを書く開発者の絶対数は 1980 年代より増えています。しかし、「アルゴリズムの時代」があるとすれば、それは今だと思います。今日では、かつてないほど多くのアルゴリズムが存在します。

アルゴリズム業界が経験している変化を説明するために、アルゴリズムを写真に例えた人がいました。

今の時代、私たちの想像にぴったり合う絵を数分以内に見つけることができます。そのため、商業的な観点からは、純粋な芸術としての写真の価値は失われてしまいました。しかし、なぜ人々はいまだに写真家を雇うのでしょうか?

写真家は「最高の画像を提供する」ために報酬を受け取るのではなく、クライアントが望む写真の主題と効果をカスタマイズするために報酬を受け取ります。これはソフトウェア業界の現状でもあると思います。私たちはアルゴリズムの「芸術レベル」の頂点を目指しているのではなく、特定のビジネスやニーズに合わせてカスタマイズされたソリューションを提供しようとしています。これはマクロレベルのイノベーションではなく、ミクロレベルのイノベーションです。

時代は変わりました。つまり、プログラマーも目標を調整する必要があるということです。 「多くの人にとって、純粋で、一般的で、美しいものを書くことの方が魅力的でしょう。残念ながら、Google がオープンソース化したパッケージと同じくらい優れたものを書く機会は私たちにはないかもしれません。」

最も適切なアルゴリズムを自分で書くかどうかは自分の選択だと言う人もいますが、最終的な実装結果に影響しないのであれば、なぜそのような単純で低レベルの作業に時間を無駄にするのでしょうか?

また、次のように考える人もいます。カプセル化パッケージは、低レベルで面倒な作業から解放してくれるが、実際の作業では、開発者自身が実装する必要があるカプセル化されていないアルゴリズムが常に存在するため、アルゴリズムをいくつか記述する必要がある。

アルゴリズムのスキルは決して時代遅れになることはありません。実際、いくつかの高品質なアルゴリズム実装が広く利用可能になったことで、そのようなアルゴリズムを手作業で実装する必要がなくなるかもしれません。しかし、開発者はデータ構造でサポートされている操作だけでなく、その複雑さも理解する必要があります。この方法でのみ、アプリケーション自体の複雑さの要件を満たすことができます。

「なぜそうなるのか、なぜそうなるのかを知る」というのは、今日でも良いアドバイスでしょうか?便利に利用できるラッパーによってアルゴリズムが時代遅れになるでしょうか?これは検討する価値があります。

<<:  ML プロジェクトを実行するときに、タスクが多数あり、些細な場合はどうすればよいでしょうか?このセルフチェックリストはあなたの心を整理するのに役立ちます

>>:  機械学習におけるアルゴリズムとモデルの違い

ブログ    

推薦する

「安佳」の人工知能版? 「AI仲介人」が近々登場?

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

栄創同志、競争は発展を促進する。第1回「AIIAカップ」人工知能ツアー説明会が北京で開催

2月28日、中国人工知能産業発展連盟「AIIAカップ」人工知能ツアー報告会において、中国航天科技集団...

複雑なクエリと集計操作の実装: MongoDB データベースでの Java の応用

MongoDB データベースに Java を適用すると、複雑なクエリや集計操作を実装できるため、開発...

...

デジタルヘルスのイノベーションを妨げる5つの主要な課題

現在、医療業界はこれまで以上に、コストの上昇を抑制し、アクセスを向上させ、人材不足による問題を緩和し...

機械学習にはどのような数学的基礎が必要ですか?

[[184240]]ここ数か月間、データサイエンスの世界にチャレンジして、機械学習の技術を使って統...

テンセントクラウドのフルリンクAI開発者サービスシステムがAIと産業の融合を加速

12月15日、第1回テンセントクラウド+コミュニティ開発者会議で、テンセントクラウドの副社長である王...

...

あなたの顔を「動かした」のは誰?顔認識技術の背後にあるプライバシー保護

[[392874]] 4月9日午後、中国初の顔認識訴訟が杭州中級人民法院で最終判決を受けた。被告杭州...

深層強化学習の謎を解く

【51CTO.com クイック翻訳】 深層強化学習は、人工知能の最も興味深い分野の 1 つです。ボー...

...

...

...

モノのインターネットは単なるトレンドではなく、未来を形作る

今日、ますます多くの企業が IoT のメリットを活用しています。機械学習、人工知能、即時フィードバッ...

...