Loading...

JAVAの表紙

Original

2001年4月

このエッセイは、私がJavaに疑念を抱いた理由について、他のプログラマーとの会話から生まれたものです。これはJavaの批評ではありません。ハッカーのレーダーについての事例研究です。

時間とともに、ハッカーは優れた(そして悪い)テクノロジーの嗅覚を養っていきます。Javaが私に疑わしく感じられる理由を書いてみるのは興味深いかもしれません。

これを読んだ人の中には、これまで書かれたことのないことについて書こうとしているのは興味深いと感じる人もいれば、自分の理解していないことについて書いているのではないかと心配する人もいます。念のため言っておきますが、ここで私が書いているのはJava(私は一度も使ったことがない)ではなく、ハッカーのレーダー(これについては長年考えてきました)についてです。

「表紙で本を判断することはできない」という格言は、本が無地の段ボールの表紙に入れられ、購入者が自分の好みで装丁していた時代に生まれました。その当時は、表紙で本を判断することはできませんでした。しかし、出版業界は進化し、現代の出版社は本の表紙を、本の内容を示すものにするよう努力しています。

私は本屋によく行きますが、出版社が本の表紙で私に伝えようとしていることを理解できるようになったと感じています。本屋に行かない時間は主にコンピューターの前で過ごしていますが、テクノロジーの表面的な特徴からも、ある程度判断できるようになったと思います。運が良かったのかもしれませんが、本当に酷いものだと後に判明したテクノロジーから自分を守ることができました。

これまでのところ、Javaは私にとって酷いものに見えます。Javaのプログラムを一度も書いたことがなく、リファレンスブックもほとんど見たことがありませんが、Javaはそれほど成功しない言語だと予感しています。私が間違っているかもしれません。テクノロジーについて予測するのは危険な事業です。しかし、時間カプセルのように、Javaの外見が気に入らない理由を書いておきます。

  1. 熱心に宣伝されている。真の標準は宣伝する必要がありません。Cも、Unixも、HTMLも、誰も宣伝する必要がありませんでした。真の標準は、ほとんどの人が知る前に既に確立されています。ハッカーのレーダー上では、Javaと同じか、それ以上の存在感を持っているのがPerlです。それは自らの長所によるものです。

  2. 低い目標を目指している。Javaの最初の白書で、Goslingは明示的にJavaはC言語に慣れた人向けに設計されたと述べています。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について私の知る限りでは、物事を行うためのプロトコルが多すぎるようです。本当に良い言語にはそのようなものはありません。やりたいことをさせ、邪魔にならないのです。

  8. 偽のヒップさがある。Sunは今、PerlやPythonのようなオープンソースの草の根的な言語運動としてJavaを装っています。ただし、それは巨大企業が管理しているのです。したがって、この言語は大企業から生み出されるものと同じ陰気な重厚さを持つ可能性があります。

  9. 大組織向けに設計されている。大組織と、ハッカーとでは目的が異なります。大組織は、(信じられる)中程度のプログラマーが使えるような言語を求めています。つまり、U-Haul社のスピード制限装置のように、愚かな人間が大きな被害を及ぼすのを防ぐ機能を持つ言語です。ハッカーはそのような言語を好みません。ハッカーは単に力を求めているのです。歴史的に見ると、大組織向けに設計された言語(PL/I、Ada)は敗北し、ハッカー向けの言語(C、Perl)が勝ってきました。その理由は、今日の10代のハッカーが明日のCTOになるからです。

  10. 間違った人々が好きだ。私が最も尊敬するプログラマーの多くは、Javaに魅了されていません。Javaを好むのは、言語の違いがわからないスーツ、C++よりも優れたものがあると驚くビッグカンパニーのプログラマー、そして就職に役立つかもしれないと喜ぶ学部生です。これらの人々の意見は、風向きとともに変わっていきます。

  11. その父親は窮地に陥っている。 Sunのビジネスモデルは2つの面で侵食されている。 デスクトップマシンと同じタイプのIntelプロセッサが、サーバーにとって十分高速になっている。 そしてFreeBSDは、Solarisと少なくとも同等のサーバーOSのようだ。 Sunの広告は、産業用の強力なアプリケーションにはSunサーバーが必要だと示唆している。 しかし、私がそこで働いていた時、サーバーはすべてIntelボックスでFreeBSDが動いていた。 これはSunの将来にとって悪い兆候だ。 Sunが困難に陥れば、Javaを引きずり下ろす可能性がある。

  12. 国防総省は気に入っている。 国防総省は開発者にJavaの使用を奨励している。 これが私にとって最も決定的な兆候のように思える。 国防総省は国を守る優れた(ただし高価な)仕事をしているが、計画、手順、プロトコルを愛している。 その文化はハッカー文化とは正反対であり、ソフトウェアの問題では間違った賭けをする傾向がある。 国防総省が本当に気に入った最後のプログラミング言語はAdaだった。

Javaそのものを批判しているのではなく、その表層を批判しているのだ。 私はJavaをよく知らないので、好きか嫌いかわからない。 これは私がそれを学ぼうとしない理由の説明にすぎない。

プログラムを書いてみる前に言語を軽視するのは軽率に見えるかもしれない。 しかし、これは全てのプログラマがしなければならないことだ。 学ばなければならない技術が多すぎるのだ。 時間の価値に値するものを見極める方法を学ばなければならない。 私はCobol、Ada、Visual Basic、IBM AS400、VRML、ISO 9000、SETプロトコル、VMS、Novell Netware、CORBAなども軽視してきた。 それらはうまくいかないと感じられたからだ。

Javaの場合、私が間違っているかもしれない。 1つの大企業が別の企業を攻撃するために推進し、委員会によって「メインストリーム」の聴衆のために設計され、宣伝され、国防総省に愛されているプログラミング言語が、しかしながら、私が愛して書きたくなるような、きれいで強力な言語かもしれない。 そうかもしれないが、それはあまりにも可能性が低いように思える。