Saturday 2 January 2010

分散プログラミング




まだ、時計飼ってます。

大晦日は年越しプログラミングしてました。久しぶりのREP。Java な分散プログラムです。結構、難しい。

プログラミングにはいくつか壁があって、

 (1) 変数への代入 i=i+1;
 (2) 構文の理解 if .. ; else ..;
 (3) 配列の操作 for(int i=...)

とあるんだけど(関数呼び出しでつまづくのは珍しいらしい)、

 (4) ポインタ i=&a[j]; *i=3;

ここまでは、アセンブラ知ってれば楽勝。

 (5) オブジェクト指向 (デザインパターン)

で、

 (6) 並列プログラム (Thread)
 (7) 分散プログラム (Protocol)

となると思う。並列の方が、通信の概念がないので少しやさしいか。いや、ここまでくれば、一緒か。

分散プログラミングはプロトコルの設計が必須なので、その壁が大きい。Thread は、まだ、データ構造だけですむんだけど。

テストプログラム書くのに

 (8) 「通信路が確立してから、通信を始める」

という極めて当り前なテストプログラムを書く必要があるんだけど、これだけでも泣く程、難しいです。このために新しくAPI入れたしな。Socket が継ったところで起動するフックが必須らしい。

さらに、テストプログラムって

 (9) 停める

必要がある。停まらなくても良いんだけど、停まった方が楽。しかし、停めるためには、「全員が送信を終了したのを確認した後、全員が受信を確認して、一人一人殺す」という楽しいプロトコルを設計する必要があります。難しくはないけどさ。

なので、昨日は「停める」ところが動いたので「良し」と言うことで。

なんか、まだ、思い違いしているのかなぁ。前のプロトコルも動くようにして比較するか。sort する範囲の問題だと思うのだけど。

No comments: