Paul Grahamのプログラミング言語観・その4

by tanabe on April 27, 2005

ハッカー Grahamの見る言語の未来

最後に、ハッカーとしてのGrahamが見る言語の未来をまとめて、言語観についての話を終わりとしたい。

Paul Grahamのプログラミングへの考察はその多くが「こうあるべきだ」という姿を描いている。「こうなるだろう」という予測を述べたものは意外なほどに少なかった。Paul Grahamのプログラミング言語観の最後として、少ない中からGrahamの予測するプログラミング言語の未来をまとめておく。

Javaについて

現在、Javaがエンタープライズ系のシステムで使われる主要言語の一つであることに異論がある人はいないだろう。日本でも確実に使用事例が増え、Javaプログラマの求人は絶えない。企業の新人研修でもJavaを学ばせるところが増加しており、まさにオブジェクト指向時代のエース格といった扱いである。

しかし、GrahamのJavaへの印象は少し毛色が違う。Javaはたしかに普及はしている。だが、言語としてのJavaにはこれ以上の進化の可能性は少ないというのがGrahamの見方だ。


生物種と同様に、言語も枝分かれや行き止まりがそこらじゅうにある進化の系統樹を形成する。既にその一部は現在でも観て取れる。 Cobolは、かつてあれだけ流行ったのに、知能ある子孫を残してはいないようだ。それは進化の行き止まり、ネアンデルタール言語なんだ。

Javaも似たような運命をたどるのではないかと私は予測している。時々、「Javaが成功する言語にならないなんて言うのはどうかしてるよ。もう成功してるじゃないか」というようなメールを私に送って来る人がいる。確かに、成功の度合いを本、それも個人所有の本が書棚を占有する幅だとか、あるいは就職に必要だと信じてその言語を勉強する学部生の数で測るなら、 Javaは成功していると言えるだろう。私がJavaは成功する言語にならないだろうと言うのは、もう少し限定した意味においてだ。すなわちJavaは、 Cobolがそうであったように、進化の袋小路に向かうだろうということだ。

from "百年の言語 --- The Hundred-Year Language ---"

Javaは統制の取れた言語だ。(そうでもない部分もあるが。)安全にコントロールされた状態を目的としたシステム開発には非常に向いている。だからこそ、企業がこぞって使いこれだけの人気言語となったのだろう。しかし、その安全を手に入れるための代償として、制限というデメリットを生んでいる。

Javaはルールを覚えれば、無難にプログラムがしやすい言語だ。ただ、そのルールがきっちりと固まっている。顕著なのは、画面にhello, worldと表示するだけのプログラムをどれだけの行数で書けるかというものだが、Javaの場合は「おまじない」と通称される前手続きが他の言語に比べかなり多い。このルールがしっかりとしている点が、企業にとっては安心に繋がり、言語としては先行きの自由度の低さを生んでいる。細かい点での進歩は遂げるだろうけど、劇的なパラダイムシフトへ対応するような進化は期待できない、と言えば良いだろうか。

そういった意味でGrahamはJavaはCobol的だと言っているのだろう。これはJavaに先はないという意味ではない。Cobolのように現存するシステムを繋いでいくためにJavaの需要は尽きることがないだろう。ただ、その普及はこれまでのような爆発力はなくなり、もうしばらくすると新しく作られるシステムにはよりWebの開発に向いた言語が選択されるケースが増えてくるということだ。

このJavaの未来図には実感としてかなり納得できる。あとはこの変化のスピードがどの程度かが問題だが、少なくとも日本においては意外とゆっくりであると思う。ベンチャー系の企業はWebに適したDynamic Language(PerlやPython、そしてRuby)の採用が増えていく。Dailyでリリースをかけられ、どんどん不具合の修正や新機能の追加を行うというWebの開発にはDynamic Languageが適しているからだ。

エンタープライズでのWeb開発がJavaからDynamic Languageへシフトするのは、その後だ。彼らはスタンダードを踏襲する。あくまで前例として確立されるまでは、すでに確立されたスタンダードであるJavaによる開発を続けるだろう。(1)Web最前線でのDynamic Languageの開発が主流となり、(2)それが事例として認知され、(3)エンタープライズの現場でも採用され始める、という手順を考えると4〜5年かけての変化となりそうだ。

余談になるが、Dynamic Language(もしくはスクリプト言語)についてはMatzにっきでも紹介があった"The State of the Scripting Universe"辺りが今日の共通認識と思っていいと思う。

(続く)