ジャバのカバー
Original2001年4月
このエッセイは、Javaが疑わしい匂いを放っている理由について、他のプログラマーたちと交わした会話から発展しました。これはJavaに対する批判ではありません! これはハッカーのレーダーのケーススタディです。
時間が経つにつれて、ハッカーは良い技術(および悪い技術)を見分ける嗅覚を発達させます。Javaが私にとって疑わしく見える理由を記録してみるのは面白いかもしれないと思いました。
これを読んだ人の中には、これまで書かれたことのないことについて書こうとする興味深い試みだと思う人もいます。別の人は、私が理解していないことについて書いているように見えるため、問題になるだろうと言います。ですので、もし何か良いことがあるとすれば、ここで私が書いているのはJavaについてではなく(私は一度も使ったことがありません)、ハッカーのレーダーについて(私はそれについて多く考えてきました)であることを明確にしておきます。
「表紙で本を判断できない」という格言は、本が無地の段ボールカバーで販売され、各購入者が自分の好みに応じて装丁していた時代に起源があります。その頃は、本を表紙で判断することはできませんでした。しかし、出版はそれ以来進歩しました:現代の出版社は、表紙を本を判断できるものにするために一生懸命働いています。
私は書店で多くの時間を過ごしており、出版社が本について私に伝えようとしていること、そしておそらくそれ以上のことを理解する方法を学んだように感じています。書店で過ごさなかった時間は主にコンピュータの前で過ごしており、技術を表紙で判断する方法もある程度学んだように感じています。これは単なる運かもしれませんが、実際にひどい技術から自分を救ってきました。
これまでのところ、Javaは私にとってひどいもののようです。私はJavaプログラムを書いたことがなく、参考書をちらっと見たことがあるだけですが、あまり成功しない言語になるのではないかという予感があります。間違っているかもしれません;技術について予測を立てることは危険なビジネスです。しかし、価値があるとすれば、タイムカプセルのようなものとして、私がJavaの見た目を好まない理由は以下の通りです:
-
非常にエネルギッシュに宣伝されています。真の標準は宣伝される必要はありません。CやUnix、HTMLを宣伝する必要はありませんでした。真の標準は、ほとんどの人がそれについて聞く頃にはすでに確立されています。ハッカーのレーダースクリーンでは、PerlはJavaと同じくらい大きいか、それ以上です。
-
目標が低いです。元のJavaホワイトペーパーで、ゴスリングはJavaがCに慣れたプログラマーにとってあまり難しくないように設計されたと明言しています。これはC++の別の形として設計されました:Cにいくつかの高度な言語からのアイデアを加えたものです。シットコムやジャンクフード、パッケージツアーの制作者のように、Javaのデザイナーは自分たちよりも賢くない人々のために意識的に製品を設計していました。歴史的に、他の人が使うために設計された言語は悪いものでした:Cobol、PL/I、Pascal、Ada、C++。良い言語は、自分たちの創造者のために設計されたものです:C、Perl、Smalltalk、Lisp。
-
裏の意図があります。誰かがかつて言ったことがありますが、人々が本を書く理由が本を書きたいからではなく、何かを言いたいからであれば、世界はより良い場所になるでしょう。同様に、私たちがJavaについて常に耳にする理由は、プログラミング言語について何かを言いたいからではありません。私たちは、サンがマイクロソフトを弱体化させる計画の一環としてJavaについて耳にします。
-
誰もそれを愛していません。C、Perl、Python、Smalltalk、Lispのプログラマーは自分の言語を愛しています。Javaを愛していると言った人を聞いたことがありません。
-
人々はそれを使わざるを得ません。私が知っている多くのJavaを使っている人々は、使わざるを得ないと感じています。資金を得るためにやらなければならなかったこと、顧客が望むと思ったこと、または管理者からやるように言われたことのいずれかです。これらは賢い人々です;技術が良ければ、自発的に使っていたでしょう。
-
料理人が多すぎます。最高のプログラミング言語は小さなグループによって開発されてきました。Javaは委員会によって運営されているようです。もしそれが良い言語であることが判明すれば、委員会が良い言語を設計したのは歴史上初めてのことになります。
-
官僚的です。私が知っている限りでは、Javaには物事を行うための多くのプロトコルがあるようです。本当に良い言語はそうではありません。彼らはあなたが望むことをさせ、邪魔をしません。
-
擬似ヒップです。サンは今、JavaがPerlやPythonのような草の根のオープンソース言語の取り組みであるふりをしています。この言語は巨大企業によって制御されています。したがって、この言語は大企業から出てくる他のものと同じように、無味乾燥で不格好である可能性があります。
-
大規模な組織向けに設計されています。大規模な組織はハッカーとは異なる目的を持っています。彼らは、大規模な中程度のプログラマーのチームによって使用される(と信じられている)言語を望んでいます。U-Haulトラックの速度制限装置のように、愚か者があまりにも多くの損害を与えないようにする機能を持つ言語です。ハッカーは自分たちを見下す言語を好みません。ハッカーはただ力を求めています。歴史的に、大規模な組織向けに設計された言語(PL/I、Ada)は敗北し、ハッカー言語(C、Perl)は勝利しました。その理由は:今日のティーンエイジャーのハッカーは明日のCTOです。
-
間違った人々がそれを好みます。私が最も尊敬するプログラマーたちは、全体としてJavaに魅了されていません。誰がJavaを好むのでしょうか?スーツを着た人々で、彼らは一つの言語と別の言語を区別できませんが、プレスでJavaについて耳にすることが多いことを知っています;大企業のプログラマーたちで、C++よりもさらに良いものがあることに驚いています;そして、何か仕事を得るために好きになりそうなものなら何でも受け入れる準備ができているプラグアンドチャグの学部生たちです(これはテストに出ますか?)。これらの人々の意見は風に流されます。
-
その親は困っています。サンのビジネスモデルは二つの面で弱体化しています。デスクトップマシンで使用されるのと同じタイプの安価なインテルプロセッサは、今やサーバーに十分な速さを持っています。そして、FreeBSDはSolarisと同じくらいサーバーに適したOSのようです。サンの広告は、産業用アプリケーションにはサンのサーバーが必要だと示唆しています。もしこれが真実であれば、Yahooはサンを買うために最初に並ぶでしょう;しかし、私がそこで働いていたとき、サーバーはすべてFreeBSDを実行しているインテルボックスでした。これはサンの未来にとって悪い兆候です。もしサンが問題に直面すれば、Javaも一緒に引きずり下ろされる可能性があります。
-
国防総省がそれを好みます。国防総省は開発者にJavaを使用するよう奨励しています。これは私にとって最も決定的な兆候のように思えます。国防総省は国を守るために素晴らしい(ただし高価な)仕事をしていますが、彼らは計画や手続き、プロトコルを愛しています。彼らの文化はハッカー文化とは正反対です;ソフトウェアに関する問題では、彼らは間違った賭けをする傾向があります。国防総省が本当に好きだった最後のプログラミング言語はAdaでした。
念のために言っておきますが、これはJavaの批判ではなく、その表紙の批判です。私はJavaを十分に理解していないので、好きでも嫌いでもありません。これは、私がJavaを学ぶことに熱心でない理由の説明に過ぎません。
プログラムを書く前に言語を軽視するのは無責任に思えるかもしれません。しかし、これはすべてのプログラマーがしなければならないことです。学ぶべき技術があまりにも多すぎて、すべてを学ぶことはできません。外見的な兆候から、どれがあなたの時間に値するかを判断する方法を学ばなければなりません。私も同様に、Cobol、Ada、Visual Basic、IBM AS400、VRML、ISO 9000、SETプロトコル、VMS、Novell Netware、CORBAなどを軽視してきました。彼らはただ間違った匂いがしました。
Javaの場合、私が間違っている可能性もあります。ある大企業が別の企業を弱体化させるために宣伝し、委員会によって「主流」の聴衆のために設計され、空高く宣伝され、国防総省に愛されている言語が、にもかかわらず、クリーンで美しく、強力な言語であり、プログラミングするのが大好きになる可能性もあります。それはあり得るかもしれませんが、非常にありそうにありません。