メッセージ。 - [技術] Haskellを詳しく知らないプログラマさんにHaskellをどう説明するか

# [技術] Haskellを詳しく知らないプログラマさんにHaskellをどう説明するか

ちょっと人と会ってHaskellについて説明する機会があって。そのときはうまく説明できなかったのだが、帰り道に「ああ言えばよかったなぁ」と後悔した。そういうことはよくあるのだが、とりあえず今日の件をここに書き下しておく。

Haskellは、ほかのプログラミング言語と比べて一段抽象的にプログラミングができますが、逆に言えば一段抽象的にしかプログラムが書けないということでもあります。ここで「一段の抽象化」と言ったのがまさに「遅延評価」です。

Haskellでは一段抽象的にプログラムを書けるので、つまりコーディングが簡潔になります。コードの可読性は高くなりますし、「Cで書くよりRubyで書くほうが簡単」なのと同じように、「Rubyで書くよりHaskellで書くほうが簡単」になります(少なくとも理論上は)。

しかし一方で、基本的にHaskellでは一段抽象的にしかプログラムが書けません。これは、Haskellのプログラム内で具体的なこと、たとえば関数の実行順序やメモリ使用量などをコントロールしたい(減らしたい)といったことが、(ほかの言語でできるようには)自由にできないことを意味します。

たとえばC言語でプログラムを書いていると、ところどころでインラインアセンブラを使いたくなることがあるかもしれません。そういうとき、もし、「このCコンパイラではインラインアセンブラが使えないんですよ」と言われたらどうでしょうか? 不便に感じるかもしれません。まぁそれはそれで仕方がないかと思うかもしれません。

Haskellにもそういうところがあります。普通の言語がアセンブラだとしたら、Haskellは「インラインアセンブラが使えないCコンパイラ」みたいなものです。Haskellは一段抽象的なため、プログラムが書きやすくなります。ですが一方で、メモリ使用量や実行効率、デバッグ方法などの面で、ちょっと手が届かないところがでてきます。
2010-02-08 12:58:21 / ふじさわ / Comment: 0 / Trackback: 0

Comment

コメント投稿機能は無効化されています。

Trackback

TrackBack投稿機能は無効化されています。