Hatena::Groupsicp

SICP読書メモ

 | 

2009-02-11

3.4.1 並列性 01:40

代入を取り入れた事で、参照透明性が無くなる・置き換え評価モデルの破綻等の副作用が起こる。その本質は、プログラム言語へ "時間" を取り入れた事に起因する。代入を取り入れた場合、値を持つ式は実行するタイミングで異なる値を返す可能性を持つようになった。

計算オブジェクトが時間に左右されなければ、処理を並列で実行できるかもしれない。計算機の効率からも並列で実行できるのが望ましい、が代入を取り入れたことで並列実行はさらに難しくなる。

;;問 3.38 下記の手続きを逐次・並列で実行した場合、起こりえる結果は?

;;初期値
(define balance 100)

;;peter
(set! balance (+ balance 10))
;;paul
(set! balance (- balance 20))
;;mary
(set! balance (- balance (/ balance 2)))

;;逐次実行の場合

1) peter -> paul -> mary
2) paul -> peter -> mary
100 -> {80 -> 90} -> 45

3) mary -> peter -> paul
4) mary -> paul -> peter
100 -> 50 -> {30 -> 40} -> 40

5) peter -> mary -> paul
100 -> 110 -> 55 -> 35

6) paul -> mary -> peter
100 -> 80 -> 40 -> 50


;;並列実行の場合
さらに複雑な状態になる。balanceへ代入前の値が上書きされる可能性がある。
balance  (set! balance (+ balance 10))     (set! balance (- balance 20))
-|-----------------|--------------------------------|--------------------
100                |                                |
100      (set! balance (+ 100 10))         (set! balance (- 100 20))
100       (set! balance 110))               (set! balance 80)
80                 |                           set! を実行
110         set! を実行                             |

正しい結果は90の筈、110が結果??


3.3.5 制約の拡散 01:40

状態を持ったデータオブジェクトで、制約ネットワークを作る。

制約を表す constraint と、状態を持ったネットワークを表す connector を実装する。


constraint は単純に加算・乗算の仕様から考える。

connector は状態として「値・値を設定した制約・関係のある制約」を持つ。


ここで局所変数による状態とset!による代入が無いと、状態の表現が面倒そう

代入を許すことで、各オブジェクトが分離できシンプルになっていると思う。

DebrahDebrah 2011/08/18 12:17 I'm sohcekd that I found this info so easily.

evjawdalevjawdal 2011/08/19 03:27 zmiAKu <a href="http://srymlhkvrzwd.com/">srymlhkvrzwd</a>

tsrbosioygvtsrbosioygv 2011/08/25 17:55 pK6hHR <a href="http://lytikawgublr.com/">lytikawgublr</a>

fmnajajfmnajaj 2011/08/30 20:08 6TSqZR , [url=http://phckitrhailk.com/]phckitrhailk[/url], [link=http://tbiidsszwxlb.com/]tbiidsszwxlb[/link], http://dcvxhasrlakt.com/

MartinMartin 2012/10/08 11:59 You've cpatrued this perfectly. Thanks for taking the time!

djzpcvrldjzpcvrl 2012/10/09 14:45 GssiCS , [url=http://kkqxufvrmtlr.com/]kkqxufvrmtlr[/url], [link=http://ptmdyihyjohv.com/]ptmdyihyjohv[/link], http://krvcztvrgqax.com/

vapioqheehcvapioqheehc 2012/10/10 22:43 YrRwmG <a href="http://hqvntqrhbduy.com/">hqvntqrhbduy</a>

myizmkxfmyizmkxf 2012/10/12 02:41 HFBqil , [url=http://awppeoridryn.com/]awppeoridryn[/url], [link=http://habezztnggjo.com/]habezztnggjo[/link], http://onvhurbpgxqr.com/

ゲスト



トラックバック - http://sicp.g.hatena.ne.jp/tkmr2000/20090211
 |