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