目次
ことはじめ
今年の4月に『 計算機プログラムの構造と解釈 』(SICP)を知った。これはす ごい本である。MITの入門コース用の教科書らしいのだが、僕にとっ ては難しい (一応は情報科学が専門の大学院生なんだが)。が、難 しい以上に楽しい。本物の計算機科学を感じる。perl だとか CGI だとか、くだらんことをやっていないで、もっと早く読むべきだっ た。
この本では、プログラミング言語として Lisp の 1つの方言である Scheme を採用している。僕は Lisp を長い間、敬遠してきた。あ んな括弧の多い言語、 IQの高い人間じゃないと理解できないに違 いない、そもそも実用性がないんじゃないか、と思っていた。が、 やり始めてみると、すぐに病みつきになった。リスト構造の単純さ、 lambda 式の考え方、そして、リストと lambda 式 の組み合わせに よる表現力。限りなく高い自由度。なんでこんなにすごいんだ? 何 より楽しい。括弧については bit 2000 年 5月号 に竹内郁雄氏の 言葉がある。
弟子が尋ねた。「先生、私は先生がカッコをまるで魔術師の ように扱っているのを常々敬服しています。どうすれば先生のようになれ るのでしょうか?」
師「えっ? カッコ? あ、そうか。そんなものもあったな。いやあ、 すっかり忘れておったわ」
でも実用性がないじゃないか? ビジネスの世界で使えないじゃない か? との疑問が残るかもしれない。僕は実用性がないとは思わない し、ビジネスで使えなくても気にしない。実用性やビジネスより楽 しさの方が大きな動機づけとなるのだ。
そんなわけで、僕は『計算機プログラムの構造と解釈』にはまって いる。4月末から週に1度、先輩 と「λ 教集会」と称して勉強会を行っている (といってもほとんど 僕が教わる一方であるが)。
2.2.4節の図形言語
前述のλ教集会であるが、6月下旬になってやっと 2.2.4節の図形 言語までたどりついた。再帰的なおもしろい図形を描く例題である。 どうしてもそれを実際に動かしてみたくなったので、足りない部分 を補って guile + guile-gtk (cvs.gnome.org から gnome-guile が入手可能。こちらの方が新しい) で実現した。
- ソースコード
- sicp-pictlang.scm
- サンプル画像
![[square-limit]](images/mini-square-limit.png)
『計算機プログラムの構造と解釈』については、他にも書きたいこ とがたくさんある。気が向いたときに書き足そうと思っている。
書評
- Wizard Book
Jargon File での SICPの紹介。1つのバイブルなのである。 - Resources - Book Recommendations -- MozillaZine
mozilla の元開発者である Jamie Zawinski氏がSICPを推薦してる。 - Amazon.com: Customer Reviews:
amazon.com での購入者の書評。1点と5点の数が同じくらい並んで いて興味深い。 - Linux関連書籍ベスト10(1月第5週
「基本が一番!」という見出しで SICPが取り上げられてる。
関連リンク集
- Welcome to the SICP Web Site
本家SICPのWebサイト - Structure and Interpretation of Computer Programs
日本語訳のWebサイト - 計算機プログラムの構造と解釈 第二版
出版社のページ - Algorithmic Language Scheme
Schemeの情報はここから - Guile - GNU Project - Free Software Foundation (FSF)
Scheme の実装の1つ。GNU の標準スクリプト言語 - (guile-gtk)
Guile で GTK を使うための ライブラリ。最新版は gnome-guile - Guile Emacs
Guile を組み込んだEmacs - Why Functional Programming Matters
なぜ関数型プログラミングは重要なのか。説得力のある論文。