IT Pro: Javaの知られざる欠陥(閲覧には無料登録が必要)》かなり刺激的なタイトルだが、中身は結局Java擁護だったりする。最初で書かれてる、


Javaの欠点と言われるのは次の三つだ。(1)オブジェクトではないデータ型があること,(2)一つの表現でいろいろなクラスに当てはまるような記述法がないこと,(3)二つ以上のクラスの実装を継承できないこと,である。
という三つの批判だが、まあ割と順当なところ(2番の意味がわかりにくいが、ようするにダウンキャストの問題のことである)。当然私はJavaマンセーなので反論はできるわけだが、結局本文でもその批判は必ずしも適切ではないよねという結論になっていて、Java嫌いな人にはかなり屈辱的な文章ではある(^_^;
どうでもいいっちゃいいんだけど、

Rubyの作成者であるまつもとゆきひろ氏は「多重継承の代わりにインタフェースを使ったのはJavaの賢いところ。ただし,実装の継承を落としたことはとても痛い」と指摘する。
と書いているが、型の継承ができれば実装はインスタンスで持てばいいんだから別に落としてるわけじゃないんじゃないかと私は思うのだがどうよ。少なくとも、無くてもできることに新しい構文を導入するのはGoslingの趣味じゃないんじゃないかと。
まつもと氏は自称オブジェクト指向オタクと言っているだけあって、プログラミング言語には詳しいのだろうけれど、言語設計者としてのセンスがないと私は思う。少なくとも私がJavaに感じた魅力的な部分はRubyにはこれっぽっちも存在しない。
私がJavaが好きな理由は、なんと言っても「プログラマー性悪説」、「KISSの原則」という私の最も尊重する二つのポリシーに沿って作られているからだ。この二つを満たすのは一見簡単そうではあるが非常につらいことだ。
例えば、前者では過去のメジャーな言語はポインタ、malloc & freeと自分でメモリをコントロールできた。プログラマの自由を奪ったとガベージコレクションを嫌うプログラマは沢山いる。それがわかっていながらもGoslingはガベージコレクションの導入を選択した。また、処理速度の低下の問題がありながらも配列境界の検査も導入した。コンパイル時に多くの問題がわかるようにプログラマにはかなり強い制約を課した。これらのことは、バグの少ないプログラムを普及させるためには必要なことである。特に初のネットワーク対応言語であるJavaにはセキュリティの問題は軽視できないし、プログラマが作ったバグでブラウザごと落ちたりメモリを書き換えられたりされたらたまらない。Javaは初めてのオブジェクト指向言語ではなかったが、初めての「安全な」言語だとは言っていいのではないかと思う。
後者では、上記の記事でもある程度触れられてはいたが、Javaでは新しい要素も大胆に取り入れながらも、無駄だと思われる要素や便利だが問題もあるような機能は極力切り落とされている。真の芸術作品に無駄がないようにJavaにも無駄がないのである(全くないとは言わないが)。ユーザの要求に十分こたえながらも、楽しみも斬新な機能も加えずなんてこんなことそう簡単にできることではない。PerlRubyのように同じことをいく通りもの書き方で書けるというのがそんなにうれしいのだろうか。C++設計者のStroustrupに至っては、「まわりから多重継承は絶対無理だと言われたからがんばって作った」などと言い始める始末である。
たぶん、プログラマからみた場合、Javaというのは「特別便利でもないが、不満もそうあるわけではない」そういう言語に見えるはずだ。でも、これってすごいことでしょ。ユーザ・インタフェイスの分野の格言を持ち出すならば「最も優れたインタフェイスは誰も気づかない」ということ。まさにJavaと同じでしょ。まあ、将来はわからないけれど、今のところは最も優れたインタフェイスを持つ言語ということなんだと私は感じている。

IT Proの記事に触発されて、こんな文章を書いてみたのだけど、徹夜明けなんであんまりまとまってないかも。……眠い。おやすみ〜。