なんか、すごいゆっくりしたペースでブログエントリで対話しているような...。
最上の日々より。
中身が見えない方は、言語が許していないことはとたんに難しくなるけど、これが、まさに私が嫌いな事です。とすると、やはりどちらが良いかでは無くて、ユーザの種類によりけり、ということなんでしょう。
Lisp:S式の理由 なんかも私には関連したテーマに見えます。
それが嫌いな人がいるのはわかります。 別にそれが悪いってわけではなくて、 そういう人にはLispって言語がありますから。
で、Lispでない言語の中身が見える必要があるかどうか、ですが、 (私にとって)重要な点は、日常的なユースケースで不便が出るかどうかです。 つまり、ほとんどの場合では「中身が見える/操作できる」ことは プログラムを書くことと直結しないので、 そのような領域に悪影響を及ぼさないかどうかが非常に重要です。
で、私の知る範囲内で、そのような「中身が見える」系の言語 (たとえばJavaScript, Perl5, Python, Ioが思いつきます)では、 日常的なユースケースの記述が繁雑になる傾向があるように思います。 JavaScriptでオブジェクトの継承や委譲を操作すると とたんにプログラムが難しくなるとか、 Pythonでいつもselfを書かないといけないとか。
私自身は中身を見せないことと、簡潔な記法にどのくらい密接な関係があるのか 断言できるほど考察が進んでいるわけではないのですが、 少なくとも実際の言語を見る限りではかなり正の相関がありそうです。
また、「中身を見せない」方がパフォーマンスチューニングの余地が大きい というのもあります。 もっとも、やることがシンプルな方が高速だったりするのはよくあることですし、 パフォーマンスチューニングの余地が大きいはずのRubyが 他の言語より遅かったりして、 「お前が言うか」というようなレベルなのは恥ずかしいですが (YARVが改善してくれるに違いない)。
この点においてLispってのはやや特殊で、 中身が相当見えるのに、繁雑さはマクロで隠蔽できるという特徴があります。 それはそれですばらしいことですが、 マクロはマクロで、(私にとって)イヤな点があるので、ねぇ。
つい先日リリースされたPrototype.js 1.5の新機能について。
なんかますますRubyに似てきてる。succとか$wとか。
っていうか、この間書きおわった日経Linux 2007年3月号(2/8売り)の 原稿でPrototype.js 1.4について解説したばっかりだったんだけどなあ。 脱稿直後にリリースがあってげんなり。