Prev / Next / /home/pochi/ChangeLog

LL 飲み会で Haskell の洗脳をされる[飲み会]

2006-09-15

山下さんに 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]

Referrer (Inside): [2012-06-07-8] [2012-05-29-4]

permlink