haskellって?

haskellはプログラミング言語の1つだね。

プログラミング言語というと、CやC++、JAVAなんかが有名だけど、なぜhaskellを使うのだろう?
それはhaskellが純粋関数型言語であり、最新の技術が取り入られた新しい言語だからなんだ。

実際に何が違うのか、詳しい説明は余所に譲るとして、簡単な説明をしてみよう。
よく使われる例がこれ。

Quicksort in Haskell

qsort []     = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

Quicksort in C

void qsort(int a[], int lo, int hi) {
{
  int h, l, p, t;

  if (lo < hi) {
   l = lo;
    h = hi;
    p = a[hi];

    do {
      while ((l < h) && (a[l] <= p)) 
          l = l+1;
      while ((h > l) && (a[h] >= p))
          h = h-1;
      if (l < h) {
          t = a[l];
          a[l] = a[h];
          a[h] = t;
      }
    } while (l < h);

    t = a[l];
    a[l] = a[hi];
    a[hi] = t;

    qsort( a, lo, l-1 );
    qsort( a, l+1, hi );
  }
}


極端な例だけど、こんな風にCでは複雑なプログラムを簡潔に書ける。
簡潔に書けると何が良いのか。
スペースを取らないだけでなく、意味が分かりやすくなる。
エラーが起きたときに確認する部分が減る。
なんとなく簡単な気がする。

これがhaskellを使う理由なんだ。見通しがいいということが、大事なキーワードだ。

では、問題はないのかというと、もちろんある。
なんでこんなに簡潔に書けるかということに、直接関わってくる。

一つは、多数の理論が取り入れられていること。
日本語に漢字があるから、他のそうでない言語より字の数を減らせるように、haskellも記述方法が色々あるので、簡潔な記述が可能になる。
もちろん、上手く書くには、それぞれの理論を学ばなくてはいけない。

もう一つは処理速度や消費メモリの問題。Cは実行することを直接書いている。だから、記述がくどくなるけど、処理速度は速いし、メモリも無駄に使わない。
Haskellは簡潔な書き方に出来る代わりに、コンピュータの処理は最適にはならない。

こんな感じで取っつきにくい部分もある。要は方向性の問題なんだ。
Haskellは新しいことをするのに向いている。Haskellでプログラムを書いていれば、そのうち最適な理論が分かってくる。
どうしても実行速度が足りないときは、その部分をCで書き直せばいいのだ。

というわけで、プログラミングの上達のためにHaskellを探求してみよう。

次はとりあえず、処理系を導入するで。

タグ:

+ タグ編集
  • タグ:
最終更新:2007年09月26日 04:25