island
逃げていたのですが、IMMやシングルトンの管理を解決するため、ちゃんと理解することが避けられなくなりました。今あるドキュメントは、imparaサイトのホワイトペーパーと、クラスコメントです。
オブジェクトの参照(ポインタ)にローカルとFARの区別があるとか、その使い分けがパフォーマンスに影響するとか、昔の80x86のプログラミングに戻ったみたいな気分だな。
island間のアクセスに強力なコントロールをかけるというアプローチは、まるでOSの保護リングをスクラッチから作っているようなものです。ただ、今の時点ではコントロールをかける対象はliveインスタンス間のやりとりに限定されていて、クラスやグローバル変数へのアクセス制御はかけられていません。たとえば、以下は "a ProjectIsland(nil)" という結果になります。つまり、FAR参照ではありません。
Transcript show: (SoundPlayer island printString) Transcript show: (Smalltalk island printString)
このままだと確かにクラス変数の扱いはあいまいになってしまいますね。
グローバルアクセスが禁止になった時、どういうプログラミングスタイルになるのでしょうか。たとえば、クラスへのアクセスはどうなるのでしょうか。大変興味がありますね。