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 のマクロについて勉強してみようかな。
参考にしたサイト集
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 スレッド