関数型プログラミングに挑戦してみます

いつからだろう。「何を作るかが大事であって、プログラミング言語は何を使っても同じ。」なんて思い始めたのは。
僕はPaul Grahamのこの記事を読んで、その考えを改めた。

まず、思いっきり物議を醸しそうな発言から始めよう。プログラミング言語は、その力において差がある。

普通のやつらの上を行け ---Beating the Averages---

この記事は実に刺激的だった。そう、プログラミング言語には優劣がある。そして、小さなベンチャー企業が勝つためには、他社と違うことをやらないといけない。プログラミング言語もそうだ。他社と同じ言語では、規模の力に圧倒されて負けてしまう。

この記事をブックマークしたのは2006年4月。今の会社を登記する直前で、そのとき既に僕はC#を選択していた。そして今もC#を使っている。

C#だって?みんなが使っている言語じゃないか。Microsoftの宣伝に乗せられているだけじゃないか。本当にPaulの記事を読んだのか?」そう言われそうだ。確かにそうかもしれない。でもね、3次元の形状処理をC#で書いている会社ってそんなにないと思うんだけど、どうかな。それまで僕はC++を使っていたし、形状処理とかはC/C++が主流だと思う。だから、C#を選択するのにはそれなりに勇気が要ったし、Paul Grahamの記事には勇気付けられた。

この記事でPaul Grahamは「Lisp最高!」と叫んでいるのだけれど、僕はさすがにLispを選択しようとは思わなかった。幾らなんでもLispで3次元CADを作るってのは馬鹿げていると思うんだけど、どうなんだろうね。バカの壁があるのかもしれない。僕はLispは全く知らないのだ。でもとにかく、この記事でLispという言語に興味を持ったことは確かだ。

そして最近、もう一度この記事を読み直したのだ。

ハッカーと画家 コンピュータ時代の創造者たち

ハッカーと画家 コンピュータ時代の創造者たち

すべての記事が非常に刺激的で実に面白かった。
だけど、なんというか、「自分はLispを知らない」という負い目のような感覚が残った。一方で、「さすがにLispは使わないよなー」という気もした。やっぱり「もしかして将来使うかも」という期待がないと言語は勉強する気になれない。で、Lispの代わりに、最近良く耳にする「関数型プログラミング言語」というヤツを勉強してみようじゃないの、という気になった。

やっぱりよく耳にするHaskellってヤツがいいんだろうか?

ってなわけで、ウェブの資料を漁りながらちまちまとHaskellのコードを打ってみているんだけど、なかなか慣れない。これは今までやってた言語と全然違うね。なんてったって

  • 変数がない
  • (基本的には)逐次実行はない
  • 繰り返し文(for文、while文)がない

そんなんでプログラムが書けるかーっ!って思うんだけど、書けるらしい。「オブジェクト脳の作り方」という本があったけど、オブジェクト脳よりも「Haskell脳の作り方」のほうがはるかに難しいんじゃないの?
でもね、これ、面白いわ!


なんて思っているときに、この記事を見ちゃったわけよ。

おそらくこの本が一番向いているのは,.NET や C# をそこそこ知っている人が,関数型言語の入門書として最初に読んでみる,というケースでしょう.その用途だと『ふつうのHaskellプログラミング』よりもこっちの F# 本をおすすめします.

おすすめ F# 本 - NyaRuRuが地球にいたころ

でね、思わず amazon でポチっと(笑

Foundations of F# (Expert's Voice in .NET)

Foundations of F# (Expert's Voice in .NET)

高いし、英語だし、大丈夫かいな。ま、ちょっと頑張ってみます。