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

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

ブログ    
ブログ    
ブログ    

推薦する

3つの勾配降下法アルゴリズム(BGD、SGD、MBGD)の違い

序文ネットワークをトレーニングするときに、batch_size を設定することがよくあります。この ...

機械学習の時代に神経科学者はいかにして人間の思考を読み取り解読できるか

[[408373]]この記事では主に機械学習 (ML) と機能的磁気共鳴画像法 (fMRI) の応用...

...

将来を見据えたデータセキュリティのためのAIソリューション

今日、ビジネスリーダーは急速に進化するデジタル世界における多数のデータセキュリティの脅威に対処してい...

...

...

小中学校の授業に人工知能教育が取り入れられました!

近年、人工知能分野の発展はますます加熱し続けており、現在の人材不足が注目を集めています。国務院が20...

【慎重に応募】今後10年間で消滅する可能性が最も高く、代替される可能性が最も低い22の職業

[[373618]] 5Gの商用利用、人工知能、スマートシティ、スマートホーム、自動運転車、無人スー...

Ant Group は、動画の著作権侵害検出用に 16 万本の動画ペアと 28 万本のクリップペアからなる大規模なデータセットを公開しました。

従来の著作権保護業界は、時間がかかり、労働集約的で、コストがかかります。膨大な量のコンテンツを完全に...

GenAIの課題に対応するためにデータガバナンスはどのように進化する必要があるか

最近、データ ガバナンスが気になっていたので、ChatGPT に「データ ガバナンスとは何ですか?」...

...

マーケターがAIと機械学習を活用して顧客にリーチする方法

数十年前、技術者が初めて人工知能の概念を生み出したとき、彼らは人間の知能を模倣できる技術を生み出そう...

予測分析アルゴリズムを効果的に使用するための 10 のステップ

予測分析プロジェクトを成功させるには、ソフトウェアを導入してそれを使用してデータを分析するだけではあ...