SICP(計算機プログラムの構造と解釈)を読み終えて

最後のC言語での実装の2問が残っているけれども、一旦これで終了とする。
2008年の11月に開始したので約1年と1ヶ月ちょっとかかったことになる。

計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 119177

SICP を読む過程で得たもの

1章で scheme での基本的なプログラミングに慣れて、カッコの存在を忘れることが出来た。

弟子が尋ねた。「先生、私は先生がカッコをまるで魔術師のように扱っているのを常々敬服しています。どうすれば先生のようになれるのでしょうか?」
師「えっ?カッコ?あ、そうか。そんなものもあったな。いやあ、すっかり忘れておったわ」

このあたりでは、まだ再帰に慣れていなくて、末尾再帰の意味もよく解ってなかった。
また、高階手続きを普通に使えるようになった。

2章で抽象化の有用性やその導入方法を理解できた。
1章2章は数学的な知識が必要な部分も多く、その部分で苦労した。

2章のデータ抽象や3章の環境モデルでオブジェクト指向の舞台裏を覗き、3章では遅延評価の一端に触れることができた。
3章で初めて set! による代入が登場し、参照透明性の破れによる副作用を理解した。

4章でインタプリタを実装し、遅延評価や継続・論理型プログラミングを実装を通して理解できた。

5章でレジスタのしくみを理解して、インタプリタとコンパイラとの違いを理解できた。
といっても、5章はかなりとばしていったので、ちゃんと理解したかというと・・・

まとめ

全てを読み終えてみると、章を追うごとに計算機プログラムのより低レベルの部分に降りていく感じがした。
そういう意味では、1章から順に読み進めていかないと理解できなかったと思う。
そして、1人で SICP を読むにはネットの情報なしには読めなかったと思う、ネットに記事を書いてくださった皆様、ありがとうございました。

SICP では scheme を使ったけれどもマクロなどは一切登場しなかったので、次は OnLisp で lisp のマクロについて勉強してみようかな。

On Lisp
On Lisp

posted with amazlet at 09.12.29
ポール グレアム 野田 開
オーム社
売り上げランキング: 41558

参考にしたサイト集

SICP公式サイト

Welcome to the SICP Web Site
公式サイト
SICP Web Site for the Japanese Edition
日本語版公式サイト

SICP解答例

SICP関数型言語の勉強に「計算機プログラムの構造と解釈」を読もう – ひげぽん OSとか作っちゃうかMona-
解答例あり
『計算機プログラムの構造と解釈 第二版』解答集(未完) – Answer Book | SICP | OSS-Web
解答例あり
素人くさいSICP読書会 Wiki – SICP Reading’s Wiki
解答例あり
計算機プログラムの構造と解釈 – assari
解答例あり
ボクノス
解答例あり
[SICP] – さかもっちゃんちゃんこ
解答例あり
いろいろてst: SICP
解答例あり
Eli Bendersky’s website » SICP
解答例あり

SICP 関連記事

「計算機プログラムの構造と解釈(SICP)」を読み終えて – ひげぽん OSとか作っちゃうかMona-
SICP 読後感
なつたん: 「計算機プログラムの構造と解釈(SICP)」を読み終えて by なつたん
SICP 読後感
SICP終了 – さかもっちゃんちゃんこ
SICP 読後感
本当のプログラミング初心者がSICPを読んではいけない三つの理由 – ヤドカリデンキ商会(第一倉庫)
その他
『計算機プログラムの構造と解釈』について
その他
404 Blog Not Found:(いい本) – 書評 – 計算機プログラムの構造と解釈(SICP)
その他
いまSICPを読むのは時間の無駄 – きしだのはてな
その他
SICPの価値 – きしだのはてな
その他
「たしなみ」ではなく「たのしみ」としてのSICP – 思っているよりもずっとずっと人生は短い。
その他
「計算機プログラムの構造と解釈」は読む価値がないか? – なるひこの Linux Printing お勉強日記
その他

Gauche 関連リンク集

Gauche – A Scheme Interpreter
Gauche 公式サイト
Gauche ユーザリファレンス: Top
Gauche のリファレンスマニュアル
Gaucheクックブック
Gauche の実用的な短いコードを提示。毎週月曜、木曜に更新
Gaucheプログラミング(立読み版)
karetta.jpのWebBook

その他

Shibuya.lisp
We love Lisp-based languages Common Lisp, Scheme, Arc and Clojure.
【SICP】計算機プログラムの構造と解釈 Part2
2ちゃんねる SICP スレッド
«
»