うつだ

また後輩につまらんこと話しちまった。ちと鬱だ。だいたい、一年しか学年が違わないのに、自分が何でこんなに偉そうにしているのだろう。もっと謙虚にいかねば。
あと、大切な話ほど話すタイミングをしっかり考えないといけない。今日もうっかり話さなくても良い話をしてしまったよ。いつもいつも後悔するわりには、治らない。
就職活動はいまは中休み中(変な漢字列)とはいえ、精神的に落ち着かないのには変わらない。早く内定が欲しいよ。

LinkedListとEntry

JavaのLinkedListはうらやましい。なぜなら、その内部構造が完全に隠蔽されているからだ。LinkedListの構造はいってシンプルだ。双方向リンクリストの構成をとっていて、要素(element)と前後のエントリー(entry)への参照を持つエントリーが数珠上に構成されているだけ。そして、当然ながらentryへの操作はLinkedListインスタンスだけが行うことができて、外部のオブジェクトはentryの存在に気づくことすらない。
さて、視点を少し降ろしてみる。
entryの操作を行うのはlinkedListだ。言わば、linkedListは、entryのマネージャに当たる。と同時に、entryには意思はないし、linkedListには意思がある。entryは管理されるだけの存在であり、linkedListもそれを望み、その他のオブジェクトもそれを望む。複数の意思がlinkedListを弄りたければ、linkedListが調停役となればよい。entryはしゃしゃり出ない。
もし、entryが意思の主役になったとき、どうなるのか。すなわち、linkedListは消えうせ、entryが互いにコンタクトを取り合うことでLinkedListを実現する分散システムになったとき、どうなるのか。
外部の意思はあるentryに対してLinkedListの拡張を命令する。このとき、entryは、隣人に対してそのような命令を発行すれば、この命令は実現される。しかし、複数の意思が同じ命令を発行したらどうなるのだろうか。
それまでは、linkedListが調停役を引き受けてきた。だから、synchronizedによって複数の意思からの命令発行を容易に扱うことができた。しかし、その調停役は存在せず、隣り合うentryに同時に命令がやってきたとき、どうすればlinkedListなしに正しく動作することができるのだろうか…