見出し画像

アルゴリズムからストラクチャーへ

アルゴリズムの重要性が叫ばれて久しい。しかし実際には、アルゴリズムを知っているプログラマーは今や少数派だ。アルゴリズムそのものを作り出すプログラマーも、ほとんどいない。なぜならば大半のプログラムは、アルゴリズムを意識することなく書けるように進化してきたからだ。

プログラマーをやってもう40年近くになるが、「これは俺が考えたアルゴリズムだ!」と呼べるのは一つか二つくらいしかないし、それとて、海の向こうで同じことを考えてる人がたくさんいて、本当のオリジナルのアルゴリズムなど僕は作れた試しがない。アルゴリズムを業界外の人でもわかるように説明するとすれば、それは数学における「公式」であり、ある問題を解く時にはなくてはならない考え方である。

世の中に何百万人ものプログラマーがいるが、彼らが毎年のように新しい「数学の公式」を発明しているとしたら大事件である。当然ながら数学者が過去何百万人いたとしても、誰もが知ってる「公式」として認められるものを作ることができた人間は百人程度しかいない。彼らは天才と呼ばれる人たちであり、多くの人は彼らのようにはなれない。

「アルゴリズムを現実の世界に応用しよう」という考え方が世界的に叫ばれ始めた時、プログラマーではない多くの人は誤解とともにそれを受け入れる。つまり、新しいアルゴリズムを作り出そうとしてしまう。しかしそれは、「数学を現実の仕事に役立てよう」というときに公式を新しく作ろうとするくらい無謀な挑戦になる。

どのような場面でも、全く新しいアルゴリズムをゼロから作り出そうとすると、必ずこの百年でプログラマーが直面してきた歴史をなぞることになる。ほぼ全ての問題はアルゴリズムの開発が試みられており、その歴史は失敗の積み重ねでできているからだ。つまりアルゴリズムは「考える」より先に過去の歴史の中から「探し出す」方が大事なのである。

実際問題、たとえばUnityでゲームを作るときや、iPhoneのアプリを作るとき、アルゴリズムはほとんど意識されない。もちろん特殊なアルゴリズムが必要なアプリもあるが、それは特殊なアプリだけだ。

アルゴリズムのほとんどはフレームワークの内部に隠蔽され、プログラマーはアルゴリズムの中身を知らないままにただ使うというのが通常だ。どうしてもアルゴリズムに注意を払わなければならない時というのは、求めるパフォーマンスが出ない時だけで、それとて一年もすれば新機種が出て自動的に解決してしまうかもしれない。

昔と今で何が違うかといえば、人々が圧倒的に多くのお金をコンピュータに注ぎ込むようになったことだ。

Appleが果たした功績は大きい。Appleはコンピュータをファストファッション化することに成功した。しかもほとんど単一のデザインと非常に少ないカラーバリエーションで。これはファッションの歴史としても、コンピュータの歴史としても画期的なことだ。

今、かつてないほどのペースで人々は自分のコンピュータを買い替えている。しかも、それがコンピュータであるとは全く意識せずに。

ここから先は

3,081字

¥ 980