James Goslingのブログで
Javaにクロージャ導入をテーマにしたエントリがありました。
→The Black Hole Theory of Design
Lispはスゲーなー、マネしたーい、みたいな内容です。
そのコメントには、
Closure = Poor Man's Inner Class
Inner Class = Poor Man's Closure
とか、いろいろと議論(チャチャ入れ?)が続いてて、なんとなく面白い。
クロージャって何?という方、また本件に関して興味ある方は、こちらの記事が良いキッカケになると思います。
→ついにJavaにもクロージャ? James Gosling氏らJDK7へ導入提案個人的には、Javaにクロージャがなくても不便はないので、なにも感じることはないのですが、なんだかちょっと心配事が増えたような感覚があります。
今日はその「ほんのちょっとの心配事」について。
Javaが目指すEoDは、これでいいの?
昨今のJava業界のキーワード EoD(Ease of Development)を旗印に、「より簡潔なコード」「スクリプト言語の手軽さ」を求める声が多くなっているようです。話題のGroovyや、もっと昔からあるJRuby/Jythonなんてのも、そういうニーズから生まれたものなのでしょう。
でも、ここでふと胸をよぎるのは、
はたしてJavaが目指すべきEoDは、「コードが簡単に書けること」なのか?
という疑問です。
それよりも、
型や
制約を重視して、もっともっとビジュアル開発ツールや接続規格に力を注ぐべきなのでは?Javaが目指すべきなのは、「オーディオ機器をケーブルでつなぐようにシステムを構築できること」なのだろう、とずっと思っていました。
今頃になってヘタにスクリプト言語化して、これまでずっと大切にしてきたインターフェース/クラス/厳格さの概念を否定してしまうと、(今のスクリプト言語がそうであるように)全部キーボードをパンチしまくって開発するようなスタイルに
逆戻りしてしまわないのでしょうか?
それに「誰が見ても理解できるソースコードをみんなで共有する」というコンセプトも、大きな意味でEoDのはず。言語仕様をポンポンと増やして、開発者の自由度を上げてしまうのは、大きなリスクのはずなのです。
そういった
Javaが当初から持っていたコンセプトが、維持されたままなのか、忘れ去られたのか、あるいは、そのようなコンセプトはもう意味をなさないと判断されているのか、利用する側としては、
見極めが必要かもしれませんね。
個人的な考えとしてはやっぱり、
EoD = Lightwight Language ではない
と思っています。
1年前のお昼休み
同僚たちとこんな会話をしたのを思い出しました。
「もー言語とかフレームワークとか、覚えんのめんどくせー。」
「言語なんてさー、1個でいいじゃん1個で。RubyとRailsだけでいいっつーの。」
「どんな言語にも変換できる中間言語みたいなの、
だれか作ってくんねーかなぁー。」
「それって、XMLのことじゃ・・」
「いやいや、
1個ソース書いたらPHPにもJavaにも変換してくれるヤツよ!」
「おお!作ったら売れるんじゃない?作るか!!」
「そんなのできたら、他の言語に変換する意味ないじゃん。」
・・あ、Javaは、なんでもできる1個の言語、を目指してるのかな?