« Ruby1.9の空気読まなさは異常 | トップページ | Perl6とはてな »

2009年6月27日 (土)

うーむ。RubyもPythonも仕様が安定しないのならば

やはりCommon Lispに流れるなあ。。
CLISPがより魅力的になってしまう。
PythonもRubyもそろそろ言語が安定してきたというときに後方互換性を捨ててしまった。
ぶっちゃけ、これは痛すぎる。
このようなことをするということは、たとえ新しい仕様が安定したとしても、未来においては再度仕様の変更が生じるというリスクが存在することを意味している。
Perl、Python、Ruby、PHP、これらの代表的なLL言語は、未来において仕様が変化しうるというリスクを抱えており、それが解消される可能性も小さい。
これらは代表的な個人が仕様を策定しており、そしてそれらはソースコードが仕様となっている。
実は、ソースコードそのものが仕様となっていること自体には問題はない。
ソースコードが仕様なのならば、それを解読すれば自然言語で仕様書が作れるからだ。

問題は、それらの仕様が後方互換性を考慮することなく不意打ち的に変わりうるという点だ。つまり、仕様は存在するが、安定し得ない状態にある。
ここから生じるリスクは、言語の処理系が変わってしまうことで、既存のコード資産が動かなくなってしまうということだ。
事実、PythonとRubyという代表的なLL言語は後方互換性を捨てて新しい仕様を起こしてしまった。
このリスクが標準化を経るなどして解消しない以上、これらLL言語には常にコード資産が無駄になってしまうというリスクが存在している。

Javaは後方互換性を維持するポリシーがあり、かつ、仕様が企業間のコミュニティーによって合議制で決められるため、コード資産が無駄になる可能性が少ない。
これがJavaの最大の強みでもある。

Common LispもANSIによる標準化によって、同様の強みを持っている。
ただし、Javaと違うのは、Common Lispの場合は標準化されているのは言語のコアの部分だけなので、それ以外の部分は処理系による独自拡張となってしまうという点だ。
しかしそれでも既存の個々の処理系はLL言語以上の歴史を持って安定しており、今後後方互換性が崩れる可能性は小さい。少なくともLL言語のように既存のコードに対して破壊的な影響を与える心配は少ないと思われる。
これがLL言語として Common Lisp を採用するメリットである。
よく言われるように、Common Lisp が言語的に優れているから、というのではなく、言語仕様が安定しているからというのが最大の理由である。
言語仕様の安定性は、言語の機能性よりも重要である。
図らずも黒田さんと同じことを言うようになってしまった。

PythonやRubyが仕様変更をしなければ、黒田さんの説が説得力を持つことは無かっただろうが、どうも現実にそれが起きてしまったというわけで。。

やはりLL言語は将来性の面で怖いと思うのだが、企業はその辺どう考えているのだろうか。

このような教訓を得ることで、残念ながら流行のLL言語への熱は冷めてしまった。
私は言語仕様の安定性を基準として言語を選んでいこうと思う。

|

« Ruby1.9の空気読まなさは異常 | トップページ | Perl6とはてな »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« Ruby1.9の空気読まなさは異常 | トップページ | Perl6とはてな »