hitode909の日記

趣味はマリンスポーツですの日記です

読書

コンピュータプログラミングの概念・技法・モデル ,ずっと読んでて,今日はエージェントみたいなのがでてきて,並列に動作するリフト管理システムを作るみたいな話題だった.ちょっと難しいけど,けっこうオブジェクト指向みたいな感じになっていて,こういうのがあるなら,まあこういうものだろうという感じだった.これまでは全然なじみない感じで,宣言的にプログラムを書いていくみたいな感じで,状態を持つには再帰呼び出しするしかないみたいな感じで,こんなのもあるのかみたいな感じだった.

データフロー変数みたいな,future型みたいな,参照しようとしたときに値が決まってなければブロックするみたいなのが言語に組込まれてるのは良いと思った.普段から使うのにほしい.こういうのがないとなんでもjQuery.Deferredでやるみたいになってよくわからない感じになる.

状態を持ったプログラムを書くの,JSとかではこういうことを普通にやるけど,リフト管理システムみたいなのを作るのは難しい.jQuery.ajaxで通信するけど返ってきたときに状態が変わってても気にせずsuccessのコールバックを呼ぶみたいなことがあると思う.自動販売機の設計とか言ってて,お金が投入されたらいつでもコーラ出すみたいなプログラム書いてるとおかしいと思う.本では,こういう手順でやれば,だいたいうまくいく,みたいなのが書かれていて,まず状態を書き出すとか,そういうところから始まっていて,普通に役立ちそうな感じだった.けど,最初に仕様を記述して状態遷移図を書いて,みたいな感じで,普通に書くよりは手間だと思った.けど書けないならこれくらいしないといけないのかもしれない.困りそうだと思ったのは,状態遷移図と継承をどう同時に扱うかみたいな話になると困りそうだと思う.このクラス設計では状態遷移図を満たせないとなると,親クラスに一度戻って,子クラスを全部変えてから戻ってきて,状態遷移図の検討に戻るかもしれない.そういうのができてなくて,いまJSの汎用的なクラスみたいなのとかあまりきれいに書けてない.MVCみたいなので解決するかもしれないけど,しないかもしれない.

オブジェクト指向に対する理解,再帰呼び出しで状態を作るから入っていなくて,抽象データ型が発展してオブジェクトになると思っていたから,こういう感じは新鮮だった.再帰呼び出しで状態が得られてそれがオブジェクトになるのと,変数とそれに対する操作がオブジェクトになるのだと,捉え方がちょっとちがうと思う.再帰呼び出しがオブジェクトになる派なら,fizz buzz呼んでるうちにぶっ壊れるとかあり得ないから,不変条件とかについて考えるのは自然なことだと思う.

あと,今日はremote method invocationについての理解が深まった.いくつかパターンがあって,サーバーで実行して終わるとか,クライアントにコールバックがあるとか,クライアントがサーバーを呼び出してそこからクライアントを呼びだしてさらにサーバーを呼び出すとか,やればいくらでもできるみたいな感じで,そういうことはあるだろうけど, 本の例ではなんか自然な感じに書けるけど,実際は途中で通信が切れるとかあるだろうから,そういうのがどうなってるのか気になった.本ではOzっていう環境を使うけど,Macでどう動かすのかよく分からなくて,座学に留まるみたいな感じになってる.そういうのもよくなくて,気になったら実験できるほうがいいと思う.

本読んだらこんなものだろうというのは分かるけど,実際に書いたことはなくて,本ではこういう感じみたいな感じだから,書いてみるとなにか違うかもしれない.