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 変革のための開発者ガイド

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

完全に無人運転? 2035年より前になる可能性は低いです!

無人運転技術の研究に対する熱意は相変わらず高いが、現実は市場に冷水を浴びせかけている。今後15年間で...

コンピュータービジョン GPT の瞬間!カリフォルニア大学バークレー校の3つの巨人が最初の純粋なCV大規模モデルを発表し、その推論はAGIの火花を示した

コンピューター ビジョンの GPT の瞬間が到来しました。最近、カリフォルニア大学バークレー校のコン...

AIとビッグデータ2017「成長痛」

2017 年、人工知能とビッグデータの開発では次の 10 の成長痛が発生しました。 [[21567...

IoTとAIの組み合わせ:さまざまなスマートフォンが互いに学習できるようにする

センサーといえば、まず思い浮かぶのはウェアラブルデバイスです。今ではウェアラブルデバイスが広く普及し...

自動化がビジネスに具体的な価値をもたらす方法

[[404690]]長年にわたり、多くの企業がロボット、自動化、人工知能などのテクノロジーからより多...

自動運転マシンビジョンの4つの基本タスクを理解するための1万語

ディープラーニングは、機械学習の中で最も急速に成長し、最もエキサイティングな分野の 1 つになりまし...

製造業におけるロボット:脅威か、それともチャンスか?

過去10年間で製造業におけるロボットの使用が増加しています。先進オートメーション協会が最近発表した調...

IoT、AI、デジタルツインをどのように統合するのか?

デジタル ツインは、物理世界とデジタル世界をつなぐため、常に興味深いものです。将来的には、すべてのも...

...

Web3.0時代: インターネット上で作成したものはすべてあなたのものになります

Web3.0 の最も特別な点は、ユーザーが作成したデジタル コンテンツの所有権と管理権がユーザーに...

...

企業が人工知能を活用してサービスをパーソナライズする方法

パーソナライズされたサービスが大きなメリットをもたらすことは間違いありません。うまく行けば、投資収益...