JavaScript の良さ Haskell の良さ

Haskell の関数を JavaScript に移植してみてびっくりしたのは、JavaScript の仕様がコンパクトであるにもかかわらず、柔軟な表現力があるということだ。

それは、関数がファーストオーダーオブジェクトであることや、記述がCに準じていることや、オブジェクトを連想配列で簡潔に記述できることなどによるものではないだろうか。構造が単純なので、覚えることが少ない。C言語の資産を継承しており、再学習する量が少ない。文の区切りに ; が必須なことや、function などの長ったらしいキーワードが何とかなれば、コンパクトなのに強力な未来の言語が垣間見えるような気がする。

しかし、タイポには悩まされた。function などは、funciton などと書いてしまうとすぐにバグとりをしないといけなくなってしまう。Haskell の = が恋しかった。せめて Ruby なみの def かあるいは fn にしてもらえないものだろうか。

個人的なアルゴリズムの勉強などには、今のところ Haskell を使いたい気がする。 ; も {} もないし、関数の引数に () や , がないので、タイポが激減する。また、コンパイルが通ればほとんどそのまま動いてしまう。関数型言語の癖のあるイディオムも慣れてくると自然に発想できるようになってきた。プログラム言語の楽しさは、その多くをバグ取りから免除されることに負っているのではないかと思った。

プログラミングが楽しいと思えるもう一つの要因は、インタラクティブ性だ。自分の書いたスニペットの動作がすぐに検出されれば、どこをいじったらよいかのフィードバックが早いので開発の負担が軽く感じる。関数型の言語の場合、入力と出力の関係をインタラクティブシェル上で簡単に確認できる。手続き型の言語の場合も、できるだけ関数の形のプログラミングをすることによって、動作チェックが同時進行的に行える。その点は、Haskell の Hugs や、ghci、Ruby の irb などを使ってみるとよくわかるが、JavaScript でも、FireFoxの FireBug や、Google chrome の JavaScript コンソールなどが出てきたので、使い勝手が随分改善されてきた。

一般にIOなど副作用のある処理は、インタラクティブに確認するのが難しい。純粋関数部分とそういう副作用を発生させる部分を分けて開発することは、関数型言語だけでなく、手続き型言語の場合も、上に述べたようなインタラクティブな開発をやりやすくするように思われる。

さらに、ブラウザやネットワークのプログラミングには、JavaScript は不可欠だ。その言語が、プログラム言語の素性としても頼りになるのではないかと思えるのは心強い。
[PR]
by tnomura9 | 2010-12-12 12:03 | Haskell | Comments(0)
<< JavaScript ターミナル JavaScript Hask... >>