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