咳といいます。

dRubyを書いたものの分散オブジェクトも素人なのです。
この機会にいろいろ教えてください。

> そこで、遠隔参照に対して、完全にローカル参照と同じ操作を行える
> Java 用分散オブジェクトシステム (MetaVM) を作りました。
> これとスレッド移送システムをくっつけようという計画は…実現してません。

すごいですねぇ。

完全にローカル参照と同じ操作ってどんな感じなんんですか?
遠隔の参照のクラスを問い合わせると、なんて返ってくるんですか ?
同値の基準や、比較などはどういう具合なんですか ??


> Ruby でそこまでやるべき、とまでは思ってないですが、
> そこまでやるためには、ORB がなかなか大変です。
> 例えば、dRuby では遠隔呼び出しの引数は遠隔にコピーされるわけですが、
> これはローカル呼び出し (参照を値渡しする) とは違う動作なので、
> 遠隔呼び出しとローカル呼び出しではプログラムの挙動が違い得ます。
> (例えば、引数として渡されたオブジェクトの状態がメソッド内で変化する場合)
> なので、プログラマの知らぬ間に、ローカル参照が遠隔参照に
> すげ替えられたりすると、プログラムの挙動が変わってしまって
> 困ったことになりかねないです。

> いや、別に、
> 遠隔呼び出しをローカル呼び出しと同じセマンティクスにせよ!
> とは言わないです。
> コピーして渡す方が性能的にお得な場合が多い気がしますし。

ううむ。

dRubyでアプリ次第であらゆる遠隔呼び出しで引数、戻り値を「参照の値渡し」
にするのは簡単なのですがデフォルトではそうしてません。

ずっと参照と言うわけにもいかないですよね。オブジェクトを操作するだけなら
良いけど、操作の値は永遠にわからない。いつかは「値」が必要になると思うの
ですが、どうなのでしょう。

んでdRubyはでは実際のアプリケーションで使いやすいようにバランスをとって
あの挙動がデフォルトになってます。
(デフォルトは値のコピー、できないもの・明示したものは参照)

Rubyだと全部オブジェクトだから、まったく同じ挙動を期待すると
ずーっと参照でないとまずいですよね。


首藤さんのVMの場合、Javaのプリミティブな値(整数とか??)はやっぱりコピーで
渡すんですか ??