暫定的にSICP3章を読了したことにする.

3.1 ローカルな状態

代入を使った状態変数を取り入れる.

3.2 The Environment Model of Evaluation

要するにスコープがどう扱われるかの説明?

3.3 Modeling with Mutable Data

代入(局所変数の変更)によってモデリングする.
代入によって思いがけない(意図しない)変化が生じることも説明.

3.3.1-3.3.3 基本的な例
3.3.4 論理回路のシミュレーション

そこそこの規模での練習.問題文の意図などについて精読するべきか.

3.3.5 制約伝播 3.3.4のおさらい?

3.4 並列プログラミング

状態オブジェクトの実用例としてセマフォミューテックスを説明しているだけかと思っていたが,そもそもなぜそれらが必要になるのか?といえば時間をモデルに導入したからで,時間を扱うことで生じる問題を喚起している?

3.5 ストリーム

タイトルだけでIO関係?と早合点していたが,自分が想像したものはIOストリームであってIOはストリーム全体ではなかった.おそらく他の節でもこの手の誤読を繰り返しているはず.
y=f(t)の形式で表現できれば,代入を使わずに時間を表現できるというパラダイム(?).
プログラムが実行される時間とは別の時間軸・系列を導入できるとプログラムが分離できる.綺麗に記述できる=部品化できてうれしいよ.という話か?

a = b;を代入だと思っていたが,1回しかaに値が設定されないなら,それは定義であって,a = b;のあとに a = c;が行われることで初めて代入になるんだとようやく気づく.

問題3.76 2つの処理が交じり合っていて,部品化がうまく出来ていない.修正せよ(大意).耳が痛い.



「前節ではこういう風に問題を取り扱ったんだけど,今回は違うやり方でやってみる」というような書かれ方が多いので,理解できないまま読み進んでから,ほほう.そういう意味だったのか.と思うことが多い.注釈にも「これについては○章○節でさらに詳しく検討する」とか書かれているので,現状通り流し読みして,必要そうな場所だけ読み返す方針でいく.