ポール・グレアム「Javaの表紙」を翻訳しました。


翻訳にあたりkorompa様、moonan様、katsumushi様、yotachi様のご協力をいただきました。


原題は「Java's Cover」で、原文は以下です。


http://www.paulgraham.com/javacover.html


Javaの表紙


2001年4月


このエッセイは、Javaから怪しい臭いがする理由について、私と数名のプログラマが交わした私的な会話を発展させたものだ。これはJavaの批判ではない! ハッカーのレーダーに関するケース・スタディーだ。


ハッカーは時とともに、良い(もしくは悪い)技術に対するカンを磨く。なぜ私にはJavaが疑わしく思えるのか、書き連ねるのも面白いんじゃないかと私は思った。


ここまで読んで、今まで書かれていないものを書く面白い試みだと思う人もいるだろう。また一方、私が理解していないことについて書こうとしていることに対して、トラブルになるだろうと言う人もいるだろう。したがって万一の場合に備え、私はJavaについて書いているのではなく(私はJavaを使ったことがない)、ハッカーのレーダー(それに関しては非常に深く考えた)について書いている、ということをはっきりさせておこう。


「本は表紙じゃ分からない」という警句は、本がそっけないボール紙の表紙で売られて、買った人が好みの表紙を付けて自分で製本していた時代に生まれたものだ。だが出版はその時代から進化した。現在の出版社は、表紙で本の内容がわかるようにするために一生懸命だ。


私は書店で多くの時間をすごしたおかげで、本の表紙を見れば出版者が伝えたいことは全部分かるようになったし、たぶんそれ以上のことさえもある程度見て取れるようになったと思う。書店にいないときは、私はほとんどコンピュータの前におり、技術を本と同じように表紙で判断することを、いくぶん学んだように思う。単に運が良かっただけかもしれないが、私は後に本当にクズだったと判明した少数の技術に深入りしないで済んだ。


今までのところ私はJavaは怪しいと思う。私はJavaのプログラムを書いたことがないし、参考図書にざっと目を通す以上のことはしていないが、Javaはあまり成功する言語にはならないという予感がある。技術の予測は危険な仕事であり、私の誤解だったとわかるかもしれない。とはいえ、後にタイムカプセルの役にぐらいは立つかもしれないので、Javaの見た目のどこが気に食わないのかを以下に挙げておく。


1. 熱心な誇大広告をされている。本当に標準となるものには宣伝の必要がない。CやUnixやHTMLを宣伝する必要はなかった。本当に標準となるものは、ほとんどの人々がそれを聞く頃には、既に確立されているのが普通だ。ハッカーのレーダー・スクリーンには、PerlはそのメリットによってJavaと同じか、それ以上の大きさに映っている。


2. 志が低い。JavaはCに慣れたプログラマに難しすぎないように設計したと、ゴスリングはオリジナルのJavaのホワイト・ペーパーではっきり述べている。JavaはCにより高度な言語のアイデアをいくつか追加し、もう1つのC++であるように設計された。ドタバタのお笑いやジャンク・フードやパッケージ・ツアーのように、Javaの設計者は、自分たちほど賢くない人々のために意図的に製品を設計した。歴史的には、Cobol、PL/I、Pascal、Ada、C++のように、他の人々が使うために設計された言語は出来が悪かった。良い言語はC、Perl、Smalltalk、Lispのように、作成者自身のために設計されたものだった。


3. 隠された動機がある。かつてこういった人がいる。「もし人々が、本を書きたいからという理由からではなく、単に言いたいことがあるから、という理由で本を書けば、ここはもっとましな世界になるだろう」。さてJavaについての「理由」というものは、聞くかぎり、プログラミング言語について何か言いたいことがある、というものではない。ではその理由といえば、マイクロソフトをひっくり返そうというSunの計画の一部なのである。


4. 誰もそれを愛さない。C、Perl、Python、Smalltalk、Lispのプログラマは自分たちの言語を愛している。でも私は、誰かが「私はJavaを愛している」と言うのを聞いたことがない。


5. 人々は無理矢理それを使わされる。私の知人でJavaを使っている人は義務で使っている。資金の提供を受けたがっているとか、顧客はそう望むかもしれないとか、上司に命令されたなど、どこか義務的なものを感じている。技術が良いのであれば、賢い人々が自発的にその言語を使っているはずだ。


6. 船頭が多すぎる。最良のプログラミング言語は小さな集団が開発する。Javaは委員会によって運営されているようだ。もしJavaが良い言語であると判明したなら、史上初めて、委員会が良い言語を設計したことになるだろう。


7. Javaは官僚的だ。小耳に挟んだところでは、Javaで何かをするには、いつも多くの手続きがあるようだ。本当に良い言語はそうじゃない。やりたいことだけをやれば済み、手続きは要らないものだ。


8. 見せかけだけのクールさ。現在Sunは、Javaが草の根的なものであり、PerlやPythonと同様のオープン・ソース言語であるふりをしている。でも実際は巨大な企業によって管理されている。だからJava言語は、大企業が生み出すすべてのものと同様の、退屈さと野暮ったさがあるように見える。


9. 大きな組織向けに設計されている。大きな組織はハッカーとは異なった目標を持つ。大きな組織の人々は、フツーのプログラマの大集団が使うのにふさわしい(と信じた)言語を欲しがる。つまり(訳注: 引越し用トラックをレンタルする)U-Haul社のトラックにあるスピードリミッターのように、愚か者があまりにも多くの損害を与えるのを防ぐ機能を備えた言語だ。ハッカーは自分たちを見下すような言語が好きではない。ハッカーが求めるのは力だけだ。歴史的に、大きな組織(PL/I、Ada)向けに設計された言語は負けている一方でハッカー言語(C、Perl)は勝っている。その理由は、今日の十代のハッカーは明日のCTO(最高技術責任者)だからだ。


10. ダメな人たちがJavaを好む。私が最もすごいと思うプログラマは、概してJavaに心を惹かれていない。Javaを好きなのはいったい誰だろうか? 各言語の違いは知らなくとも、Javaがマスコミでよく取り上げられていることは知っているネクタイ族か、C++より良い言語があると知って驚くような大企業のプログラマか、就職に役立ちそうなものなら何でも好きになるつめこみ式の大学生(これテストに出るかなー)だ。彼らの意見は風が吹くたびに変わる。


11. お父さんがピンチだ。Sunのビジネスモデルは2つの面でむしばまれている。デスクトップ・マシンで使われているのと同じタイプの安いインテルのCPUは、現在、サーバには十分すぎる速度だ。またFreeBSDはサーバ用途のOSとしてSolarisと少なくとも同程度であるようだ。Sunの広告は、業務用アプリケーションとしてSunのサーバが必要だとほのめかしている。もしこれが真実ならば、YahooはSunの製品を買うために真っ先に列に並んでいるはずだ。しかし私がYahooで働いていたころ、サーバはすべてFreeBSDが走っているインテルの箱だった。これはSunの未来にとって暗雲だ。Sunに問題が起きたらJavaも巻き添えになるかもしれない


12. アメリカ国防総省に好かれている。国防省はデベロッパーにJavaの使用を奨励している。私はこれは最悪のサインだと思う。国防省は、高くつくにせよ国を維持する素晴らしい仕事をする。だが国防省は計画、手順、手続きが大好きだ。国防省の文化はハッカー文化の正反対であり、ソフトウェアに関しては、彼らは間違ったものに賭けることが多い。前回、国防省が本当に好きになったプログラミング言語はAdaだった。


これはJavaの批評ではなく、その表紙の批評である、ということを忘れないでほしい。私はJavaを好きか嫌いかを言えるほどにはJavaを知らない。これは単に、なぜ私がJavaを熱心に学びたがらないのかの説明だ。


ある言語でプログラムを書いたこともないのに、その言語を捨てることは乱暴に思えるかもしれない。しかしこれは、すべてのプログラマがする必要があることだ。技術がありすぎて、全てを学ぶわけにはいかないからだ。どれに時間を費やす価値があるかを見た目で判断することを学ぶ必要がある。私は特にCobol、Ada、Visual Basic、IBM AS400、VRML、ISO9000、SETプロトコル、VMS、Novell Netware、CORBAを乱暴にも見限った。単にダメな臭いがしたからだ。


Javaに関しては、私の誤解であることもありうる。他の企業を追い落とすためにある大企業によって宣伝され、「メインストリーム」の大衆向けに委員会が設計し、限りなく大げさに宣伝され、国防省の愛人であり、でもたまたま、私がプログラミングにおいて好むような、クリーンで美しくパワフルな言語だということもありうる。その可能性はあるけれど、非常に低いと思う。