「文法は重要だから、Javaと似た文法のGroovyを使おう。 SunはJRubyに投資すべきじゃない。Scala? とんでもない」という話。
私は賛同しない。
文法は重要じゃない、とは言わない。 文法はそれなりに意味があるし、言語選択にあたっての重要な要素になる。 しかし、もっとも重要な要素ではない。
重要なのは「メンタルモデル」である。 「文化」と言ってもいい。これが違ってたら、多少文法が似てても意味がない。
表面的な類似を除けば、JavaとGroovyってそんなに似てるか?
多少の文法の違いを乗り越えるのは人間にとって簡単である。 そこはむしろ人間の得意な領域だろう。 苦手なのはメンタルモデルをスイッチすることである。
モデルが似ていないのであれば、 むしろ文法が似ていることは邪魔にさえなる。
実例を示そう。
私は日常的にふたつのプログラミング言語を使っている。 ひとつはRubyで、もうひとつはCである。 これらはかなり文化の違う言語である。
ここでRubyとCの文法がかなり違うことで、 むしろ私の脳のスイッチが切り替わるのを助けてくれている。 もし、Rubyの文法がある程度以上Cに似ていたら、 今どの言語でプログラミングしているのかの手がかりが減って、 むしろストレスが増加してしまうだろう。
繰り返す。文法は重要だが、メンタルモデルが異なる言語で 文法が似ていることが重要なのではない。むしろ逆である。
次に、Rubyを「貶める」根拠として、 Rubyの求人数が少ない点(RUBY COMES IN DEAD LAST!)を示している。
まあ、求人数を気にする人がいるのは分かるけど、 求人数ってそんなに大事なのかな。 だって、求人サイトへの登録って玉石混淆だし(まあ、応募者はもっと玉石混淆だけど)。 本当に大事なのは自分の要求(報酬とか仕事の内容とか)にあった 仕事があるかどうか、なんじゃないかな。
で、応募者側の立場から言ったら、自分を差別化するためには むしろ求人も多く、コモディティ化しつつあるような技術(JavaとかPHPとか)よりも まだまだの技術(このリストだとPythonとかRubyとか)に賭けた方が 成功できるんじゃないかな。1000件求人があると安心するよりも、 すばらしい仕事をひとつ見つける方が私には価値があるけどね。
鶏口牛後ってことわざもあるしね。
もちろん、リスクを取らないでコモディティに生きるというのも ひとつの戦略だし、それを否定するつもりもないけどね。