そしてJavaが生き残ったとか言ってみる

昨日、なんとなくyazuとメッセをしていた時に言ってみた。コンテキスト的には、LL魂gaucheプログラミングがでるよ -> 最近プログラミングの本よくでてるよな -> そしてJavaが生き残ったみたいな感じで。そのときは、半分ネタで、半分またそうなるんじゃないのかなぁと思っていってみた。

で、今日のお仕事は楽しいビルド環境のインストール。1本のHDに12,3個のLinuxをインストール。1環境あたりインストール時間3,40分程度にCDを5,6枚いれかえなきゃいかんもんで、もう単純作業楽しすぎてへどがでる。アナコンダなインストールはいいんだけど、YaSTはもう一度に設定を勝手にしてくれてこれでいいですかと聞いてくるもんで、苦手な環境です。そんなこんなで、他の作業がほとんどできなかったんだけど、もの考える時間はたくさんあった。そのとき、ちょっと思ったことを書いてみる。

Rubyが今のりにのっているわけなんだけど、このままだとこのブームがJavaのようにスタンダードにはならないんじゃないのかなぁと思っているんですよ。今のところいいのかもしれないんだけど、そのうちブームに乗ろうとして(もう遅すぎだと思うんだけど)とりあえずRuby使ってみました的に作ってみて、性能でないじゃんとか、Rubyて簡単にできるんだから、あれもこれもやってね、開発期間も短くていいんだよね、簡単なんだから安いよねみたいになって炎上とか(今でもRubyプロジェクトが炎上ってネットでちらほらみるんだけどね)。Rubyならプログラミングが楽しいと聞いたのに楽しくないじゃんとか。

で、結局Javaにまたもどっていくんじゃないかと。

誤解しているうちにもの使って、よけいに悪い方向にいってしまうんじゃないのかなぁと思ってみた。構築する環境の選択権は、開発者側が持っていることって少ないと思うし。そうなると、そのうち悪い噂がたちだして、やっぱJavaじゃなきゃだめとかなるのかなぁと。

というわけで、Java(VM)の上にのる言語に期待。yarvはやっぱりrubyにとりこまれてるわけだから、すごく頑張ってほしいんだけど。LLの嫌なところは、Unixな環境にはインストールだとか優しいんだけど、windowsにすごく面倒ということ。rubyの安定板だけでも、cygwin版だとかmsなんちゃら版だとかで、どれ選ぶべきかわからんくなるわけで。そこで、Javaで動く処理系ならインストールに迷わなくていいなぁと。

そろそろJavaだけの上で動く、独自の言語もできていいんじゃないかと思う。最近、JavaFX(ちゃんと調べてないんだけど)というのができたけど、ああいうDSL替わりのものじゃなくて、ちゃんとした言語。そういえば、JavaFXで思ったんだけど、こういうのRubyだとかLispだったら、ちょこちょことDSLとして実装できると思うと、パーサとかで頑張って作って別の特化言語を作らなきゃいけないJavaはめんどくさいなぁと。Cレベルのマクロぐらい使えれば、もっと楽になるのにね。

あと、もう古いかもしれないが、Binary Hacksの前書きで河合史郎さんの言葉を借りるとすると、抽象化の向こう側にいくようなことにあっても、今の環境だと実際のアーキとの戦いになるが、Java上の言語なら抽象化の上に抽象化がかぶっているのだから、一段下がって動き探るのも楽だろうし。JavaVMの恩恵をうけるのも楽そうだし。

昔のブログでも書いたんだけど、僕はJavaという言語は嫌いだけど、VMとしては好きだから。なので、JRubyの方々には、MatzRubyの文法から分岐とか行ってほしくないなぁと思ってます。たぶん、そのときはJRubyの書き方は好きな書き方ではない気がするから。

まぁ、僕は今のところ、仕事でJavaとかRubyとか、ましてやDBやWebなんて関係のないお仕事をやっているわけなんですが、勝手に想像で言ってみました。

というわけで、Javaの上で動く、Haskellだとかがないかなぁ。Jaskellは別もんだったからなぁ。あと、SunのwebテクノロジーディレクターがJavaに関数型の要素をとか語っていたみたいなんですけど、Java言語自体に、クロージャーはまだしも、遅延評価だとかπ計算が書けるようになったら、それはそれでアレな気がするのは僕だけでしょうか?