http://yoshiori.org/blog/2007/09/_java.php
そして、Java が好きな僕はおなじく
>まつもと氏によれば,Rubyには「向く現場」と「向かない現場」があるという。Rubyが向いているのは,少数精鋭で進めているプロジェクトだという。
と言う言葉を聞いて思うのです。
少数精鋭なら言語は何でも良いんじゃないか?
だったら Java でも良いじゃないか!!と
言語には力の差がある。「精鋭」は、機械語よりもJavaを選ぶように、JavaよりもRubyやPythonを選ぶ。 http://practical-scheme.net/trans/icad-j.html
例:
//java (Mathはstatic import済みとする) Comparator<int> cmpr = new Comparator<int>() { public int compare(int x, int y) { return abs(x) - abs(y); }};
#Python cmpr = lambda x, y: abs(x) - abs(y)
Pythonの例は、Javaプログラマから見ると、上のJavaのコードを短くするだけのSyntax Sugarでしかないかもしれない。ある言語機能が、無意味に言語を複雑にするSyntax Sugarなのか、無いとプログラムを書くのが退屈で面倒な作業になるSyntax Sugarなのかは、プログラマによって違う。ただ、「精鋭」と呼ばれる人の多くにとって、Javaは退屈な言語だと思う。
ただし、C#が出てきてから、Javaも「そんなSyntax Sugarイラネ」から「C#に負けるな」という雰囲気になってきていると思う。上記の例は、Java7ではこうかけるかもしれない。*1
int(int,int) cmp = (int x, int y) : abs(x) - abs(y);
素晴らしい。是非こういう方向に進化して欲しい。
そういえば、C++0xのautoやC#3.0のvarは入らないのかな?
var cmp = (int x, int y) : abs(x) - abs(y);
みたいの。