計算機プログラムの構造と解釈(Structure and Interpretation of Computer Programs)、真鍋訳の練習問題をほとんど解いたリポジトリ
- Ch 3 - デジタル回路シミュレータ
回路の動作の予定表(agenda)という構造 - Ch 3 - 制御伝播
式の一つの値を変化させると他の値にも伝播する様子 - Ch 3 - 並行性
"計算モデルの中での時間と状態を扱う際に遭遇する複雑性は物理的宇宙の基本的な複雑性を反映しているかもしれない"と述べている - Ch 3 - ストリーム
"世界をモデル化するのには、分離した、時間制約のある、相互作⽤する、状態を持つオブジェクトの集まりとして扱うというやり⽅(代入性があるプログラム)があり、単⼀の、時間のない、状態のないまとまりというやり⽅(ストリーム)もあります"
"オブジェクトという視点がうまくいかない場合のひとつの例として量⼦⼒学があります。量⼦⼒学では、物を個別の粒⼦として考えると、パラドックスや混乱が⽣まれます。オブジェクトという視点と関数型の視点を統⼀するということは、プログラミングとはあまり関係がなく、根本的な認識論の問題と関係があるのかもしれません。"と量子力学まで広げている点 - Ch 4 - Yコンビネータ
無名再帰ができるだと? - Ch 4 - amb評価機(⾮決定性計算)
一つの変数が複数の値を取りうる時、全計算分を試すことができるプログラム。amb(1 2 3)は1の場合、2の場合、3の場合を試すことができる。完成したプログラムは複雑すぎる! - Ch 4 - 論理プログラム、クエリ言語
データベースや、論理な問題(複数居住問題、嘘つきパズル)に対して答えるプログラム
例: (not (job ?x (computer programmer))) -> 意味 jobがcomputer programmerではない人を探す - Ch 5 - レジスタマシン(アセンブリ)とコンパイラ
レジスタマシンの構造と、ただのインタプリタとコンパイルされたコードの効率の違い