山下さんに Haskell の洗脳をされる。
数年前に机を並べてたときには、全然 Haskell を
使う気にならなかったんだけどなあ。
ちょっとしたワンライナーは Ruby とか Perl を使ってたけど、
Haskell を使ってみるかなあ、という気がしてきたよ。
以下、洗脳の要点。
1. 開発環境
弱いと思ってたけど、そんなことはない。
Eclipse のプラグインなんてものもあるらしい。
スウエーデンの大学(Chalmers大学?)では、
Haskell に強力に取り組んでて支援ツールを
いっぱい出している。
2. 実行環境
いちいちコンパイルして実行しなきゃいけないんじゃ、
かったるいよな〜、それに速度も遅いんじゃない、
と思ったらそれも誤解。
インタプリタがあるので、Lisp や Python のように
使うことができる。
遅いっていうのも、最近文字列処理とかで、
高速なライブラリができたので、むしろ速いかも、と。
3. 実用性
使う場面がそもそもない、と思ってたけど、
ネットワークオペレーションや LL 言語で良く使う、
フィルター的なプログラムを書くには実は向いてるかも。
パターンマッチには、正規表現を使うのが一般的だけど、
BNF記法でマッチしたほうが楽なケースもある。
Hakell は BNF記法をそのまま書くだけで、
フィルターが書けちゃう。
正規表現は括弧のネストに弱いけど、BNF記法は、
そういう弱点はないし。
ログの解析、通信モジュールなんかを書くには、
実は向いてるような気がしてきた。
ネットワークで使うストリーミング文字列なんてのは、
単なる無限リストなわけで、それをリストを扱うように
頭から処理できる、というのは他の言語より強力かも。
他の言語だと、読みこんでパースして、とか
やんなきゃいけないわけで。
4. プログラミングのしやすさ
一般的な言語でプログラムを書くときには、
ループや変数の概念を駆使するのが基本。
でも普通の人がその概念を理解するのは意外と難しい。
でも世の中の問題は、再帰や継続のような考え方をするほうが、
実は楽なことが多い。
一般的なプログラマは、再帰が必要な問題は、
頭の中でループに変形させてからプログラムを書くけど、
Haskell だと問題をそのままプログラムに書けて楽。
Haskell は楽すぎて他の言語が使えなくなっちゃう。
※そう言ってる人は、本当に他の言語が使えないので、
非常に説得力があった ;-p
5. 保守性
Haskell を使える人の絶対数が少ないので、
保守に困るんじゃないかと思ってたけど、
最近は若手に流行っているらしい。
たしかに Haskell の人ってみんな若い。
前途は明るい気がたしかにするなあ。
※ Kahua はおっさんばっかり。なんとかしようね。
とりあえず、アサマシ、と。
ふつうの Haskell プログラミング ふつうのプログラマのための関数型言語入門
入門Haskell - はじめて学ぶ関数型言語
ついでに過去の日記の Haskell 関連のネタリスト。
○Haskell勉強用
Haskell の勧め --> [2004-04-08-3]
なぜ関数プログラミングは重要か --> [2005-10-30-5]
山下さんの翻訳。
Haskellを使った関数型プログラミング --> [2006-09-03-4]
IBM Developerworks の記事
結城浩の Haskell 日記 --> [2006-05-31-1]
結城浩さんによる Haskell 勉強日記
○Haskellのネタ
Haskell 診断 --> [2005-12-07-4]
Haskell に向いている人はこういう人だ、というネタ。
関数型言語による脳への悪影響 --> [2005-03-03-5]
Lisp とか Haskell を使うとバカになるよ、という話。
ゲーム脳流行ってたからね。
他の言語処理系を書く、というネタ。
Perl6 のコンパイラ Pugs は Haskell で書かれている --> [2005-03-09-1]
Haskell で書かれた Ruby インタプリタ、RType --> [2005-09-16-7]
プログラミングコンテストで Haskell が優勝 --> [2005-09-28-7]
Haskell がいつも強いんだよね。
Haskellのクイックソートは格好良いけど遅い --> [2006-06-17-4]
データ構造を考えてアルゴリズムを考えよう、という話。
○その他、Haskell に似た言語
超特急 1時間でわかる ML 超入門 --> [2005-10-30-3]
並列関数型言語 Erlang のネタ --> [2006-03-27-2]