スパイウェアに感染してしまった

どうも。何故か携帯のアラームが鳴らず11時まで寝てた俺です。


『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』無料プレゼントの当選者が発表されました。
http://d.hatena.ne.jp/hyuki/20060316#p1

当選した方々、おめでとう御座います!沢山マルチスレッドdeデザパタしちゃってください。


マルチスレッドと言えば・・・俺がJava初めて間もない頃、アルゴリズムやデータ構造に興味を持ちはじめるのですが、そこで無い知恵絞って凄いデータ構造を創り出したことがありました

どんなデータ構造化というと、全エントリがスレッド(もちろん走ってる)連想配列JavaでいうとMap)です。
なんじゃそりゃー!実装は!?と言うと、こんな感じです。
set(key, value)毎に新しいスレッドを作成します。そして、そのスレッドにkeyとvalueを保持させて、フィールドwantedを常に監視させます。説明は不要かと思いますが、get(key)はwantedにkeyを代入してkeyを持つスレッドが名乗りを上げるまで待ちます。どうですか。凄いでしょう?これ、実際にやってみると、(うちの前世紀のパソコンでは)30要素くらいで1要素取得するのに10秒くらいかかってた気がします。

でも実は、これって(切り詰めて考えていくと)単なる線型検索なんですよね。まぁ、スレッドが走ってる分とてつもないリソースを消費しますが。


まぁ、スレッドに関してはこんな思い出しかないですが、デザパタは・・・。・・・ってか、デザインパターンって趣味グラマでも意識する必要あるんでしょうか・・・。

前にちょっと規模が大きそうなソフトを作ろうとしたとき、拡張性を重視する為に簡単にプラグイン出来るようにしようとしたんですが、これがまた難しい・・・。何が難しいかって言うと、どこまで抽象化すればいいのかが・・・。Eclipseのソースよんで勉強しようかと思いましたが10行で挫折しましたね。それ以来Javaは書いていません

あと、OOでのGUIの設計も難しい・・・。GUIって、視覚的には離れた部分にあっても内部的には結びつきの強い部品が絡み合ってたりして、それぞれを独立した部品として管理するのが難しい。この辺はLimeWireのソース読んで勉強してみましたが、(確か大量のスタティックメソッドで、抽象化された部品を取得するようにしてたと思います。)何も身に付かず。


俺がJava書いてて嫌になるのは、自分の設計は正しいのか?おかしくないか?こんなモノ公開して大丈夫か?って悩んでしまうところにあります。まぁ、簡単に言うと自分の設計に自信が無いんですよね。
Java自体は凄く好きなんですがね。っていうか一番好きなんですがね。文法とか。美しいです。(Rubyも))


最近は(ってもITの世界じゃ全然最近じゃないか)DIコンテナとかAOとか、色々面白いの出てますよね。俺はついていけそうに無いです。


まぁ職業プログラマになるわけでもなし、取りあえずCでお気楽プログラミング出来ればそれでよいかな(笑)。



話があらぬ方向へと飛びましたが、ここで切ります。では、また明日!