トップ «前の日記(2009-04-18) 最新 次の日記(2009-05-29)» 編集

follow ikegami__ at http://twitter.com

イネムリネズミ日記

いけがみを召喚するには、出現予定を参考にしてください。三週間前までにメールをくだされば、日程を追加するなどしてスケジュールに組み込むことができるかもしれません。勉強会や個人的な会合、中途採用面接などに応じます。日記に書かないことはこちら

2003|04|05|06|07|11|12|
2004|01|02|03|04|05|06|07|10|11|
2005|01|02|03|04|05|06|07|08|11|
2006|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|11|12|
2010|03|04|12|
2011|02|03|04|06|08|09|10|

2009-05-03 水芭蕉の変わらぬ美しさ [長年日記]

_ Haskell のまなびかた(2009-05-03版)

わたしがはじめて Haskell の処理系を触ったのは 2004 年の春ですから、もうかれこれ 5 年の歳月がたったことになります。はやいものだなあ。当時に比べて書籍もサイトも充実してきたので、学びやすくなったとは思います。

しかし、GHC がデファクトスタンダードになりましたが、GHC の変化が著しいこと、GHC が *nix 以外のプラットフォーム(つまり Windows や MacOSX など)でバグが多いこと、ライブラリが爆発的に増えた一方でその依存性を解決する方法がまだ確立していないことなど、現在でも Haskell が使いやすい言語になってはいないと、いけがみは考えています。

そもそも、Haskell は言語自体が簡単に習得しやすいものではありません。特に、関数型言語を触ったことがない人にとっては、Haskell は難しい言語だと感じることでしょう。

Haskell 98 Language Report を初学者が見てわかりやすいとは言えないうえ、これでプログラムを書くにはあまりにも制限がありすぎて(ということを初学者は最初に気がつかない)、一方で便利である GHC 拡張機能は理解するのが簡単ではないと思います。

Shelarcy さんが連載している記事『本物のプログラマは Haskell を使う』は、私が知る限り唯一の、日本語で GHC 拡張機能を説明し続けているすばらしいドキュメントですが、これがわかりにくい、またはわからない人もいるかもしれません。明日開かれる、『本物のプログラマは Haskell を使う』読者の集いで、参加者の皆さんと Shelarcy さんの両方が親睦を深めるだけでなく、お互いに得るものがあることを期待しています。

さて、書籍に関してはこのサイトでいくつか紹介しましたので(まだ紹介していないものもありますが、専門性の高いものばかりなので躊躇しています)、このエントリでは「現状における」Web での Haskell を学ぶ方法について紹介します。

_ Haskell のまなびかた(2009-05-03版) その1 : 英語の読解力をつける

日本語に期待するのはやめましょう。「えー」という声が聞こえてきそうですが、日本語に期待するのはやめましょう。あくまで、現時点での意見ですが、GHC の変化に追随していくためには英語を読む能力が必要です。

日本語の Haskell Wiki サイトや、日本語の Blog で Haskell について紹介してくださっている方々はおおぜいいますが、英語から日本語への翻訳はとても労力を要します。しかも GHC は平気で下位互換性をなくしますので、せっかく書いてくださった文章が、後世、役に立たなくなったりします。これは日本語に限った問題ではなく、英語のドキュメントでも同じことですが、現時点での英語ユーザが多いため、古いものは Google rank がどんどん下がります。

つまり、英語さえ読めれば後で紹介するように、頻繁に更新される良いドキュメントを把握することができるというわけです。

さらに、英会話もできるようになれば IRC freenode の #haskell にて親切な方々に相談することができます。「明示的に型を書いていない数字 1 が Integer になっているみたいなんだけど、なんで?」とか、「-fglasgow-exts ってなんですか」みたいな、もう相当初心者的な質問にも優しく答えてくれます。メーリングリスト haskell-beginners も同様です。購読しなくても、アーカイブを検索すれば困っていることが解決するかもしれません。

_ Haskell のまなびかた(2009-05-03版) その2 Haskell 学習サイト

では、私が知る限りの Haskell 学習サイトを紹介します。ただし、英文読解力必須です。それから、最新の stable な GHC もインストールしておきましょう。

Haskell 公式サイトからたどる

公式サイトの左側には Learning という列があります。そこからたどるといろいろなサイトがあります。

言語の習得の難易度は、個人差があります。持っている背景知識によって、ある人によっては簡単なことが、別な人には難しいこともよくあることです。自分にあったサイトを、公式サイトから探してみてください。

Learn You a Haskell for Great Good!!

このサイトはまだ未完成ですが、わたしが自信をもってお勧めします。このサイトは、さきほど書いた、公式サイトの Learning Haskell からすでにリンクされています。

Learn You a Haskell for Great Good!! の特徴は、著者 Miran Lipova\v{c}a 氏(\v{c}はcの上にvがつく文字)のイラストがかわいいことです。あと、できるだけ前提知識を必要としないで理解できることを目指しているそうです。さらに、最新の GHC 拡張機能を、初心者向けに説明しています。

しかも、なんと Monad の説明がありません(現在鋭意執筆中)。Monad の理解抜きでも、Haskell を学びたかったらここがよいと思います。が、Haskell の本当の威力を発揮するのは Monad 特に State Monad だと考えていますので、いずれは避けて通れないと思うのですが、まあ普通のプログラムを書くのに Monad を使わないというのも現実的でいーんじゃないでしょうか。IORef とか。

How to write a Haskell program - HaskellWiki

このサイトは、一通り Haskell を書けるようになった後、アプリケーションやライブラリなどをどのように公開するかの慣習を説明しています。必読です。

_ Haskell のまなびかた(2009-05-03版) その3 Reddit - Haskell を見る

最新の Haskell 情報は、ブログなどで頻繁に報告されています。新しいライブラリを作ったとか、こういうテクニックがあるよ、などという情報は Reddit を観察すると良いでしょう。さらに、Reddit にはポイントとコメントという機能があります。ポイントが高いリンクは、大勢の人から良いとされているサイトです。また、コメントを読むと、さらに情報が増えます。コメントにもポイントがあり、良いコメントは高いポイントを得ます。

Twitter には @reddit_haskell というアカウントがあります。これを follow すると、最新のポストがタイムラインに流れます。Twitter 中毒の人にお勧めします。

_ おわりに

本当は、日本語の文献が充実したほうがいいに決まっています。でも、現実を見れば英語の読解力があったほうがいろいろと都合がいいのです。このサイトでも日本語での発信を続けますが、まあ、僕も Haskell に飽きてしまう日が来るかもしれませんし。

どうやって、英語の読解力をつけるかですが、まず、単語について、いけがみは「英英辞典」しか使わないことを勧めます。英和にたよってはいけません。ましてや、自動翻訳などもってのほかです。私は dictionary.com をよく使います。フレーズについては、これはもう最適解はないと思うのですが、最後に、いけがみにとって役に立っている単行本を挙げて、このエントリをおわることにします。Haskell は面白い言語なので、一緒に話ができる人が増えることを期待しています。


出現予定(召喚方法 ikegami@madscientist.jp):

RSS feed を再開しました。RSS の思想を尊重するために全文配信はしません、あしからず。