Saturday 8 December 2007

Java Kuche 勉強会中



今日は、Thread のお話。

でも、人が書いたコードは気になる。なんで、extends Thread しないんだよ〜 とか、なんで、ここで、Inner Class 使うんだよとか、なんで、int のcast があるんだよとか。

java.util.concurrent は、この間、一種のネットワークシミュレータを書いた時に、SynchronizedQueue とか Class LinkedBlockingQueue とかで結構はまりました。

この手の待ち合わせが入るAPIのマニュアルの記述を読むと、ちょっといらいらする。

put(E o)
Adds the specified element to the tail of this queue, waiting if necess
ary for space to become available.

put(E o)
Adds the specified element to this queue, waiting if necessary for anot
her thread to receive it.

この二つの差はいったいどこに? necessary とは一体どういう意味?

で、この手の記述は曖昧な言葉ではなくプログラムで記述するべきだと思う。 そこで必要になる言語は、 もちろん、仕様記述言語なんだけど、それに、また、「わけわからない待ち合わせの記述」が入ったんじゃ意味がないです。

でも、個々の問題に対して、こういう「便利そうな」抽象化された同期データ構造を導入したがる人は多い。80年代の並列オブジェクト指向言語でも、Future だの Stream だの become だの、たくさんありました。System C とかSpec C とかVHDL/Verilog とかでも、そんなのばっかり。うんざりです。

そのあたりで、同期機構自体を記述することの出来る言語が欲しいと思ったんだよな。

と、なんとなく初心に戻る感じです。

(昨日は4時まで飲んでいたので、まだ、酒が抜けてないです〜 咳もまだ残ってるしな〜)

No comments: