引用の順序を変更しています。
> ただ、「PlayerがBoardの実体を保持していてはいかんでしょ
> う。」といった話をするときには、「実体」またはそれに類
> する言葉が要るのではないかと思っています。
そうですね。
念のために言うと、僕も、実体という言葉に対して(ぱ)さんと
同じ感覚を持っています。
> > Python プログラマで一人、"call by object reference"
> > のことを指して "call by object" と呼んでいる例が見つ
> > かりましたが、これだと、日本語と英語で意味が逆になり
> > ますし。
>
> 日本人でも、「オブジェクト==参照」という解釈の人もいる
> ようですから、「日本語と英語で意味が逆」になるわけでも
> ないような気がします。
以下の松本さんの例もそうなんですね。
>
http://www.rubyist.net/~matz/?date=20030730
> | もっとも多くの言語には「オブジェクト」でない「値」も
> | ある。またCの例を出すと、構造体はオブジェクトではな
> | い。代入によってコピーが発生するからだ。 BASICの文字
> | 列もオブジェクトではない。
> 最初読んだとき、かなり違和感がありました。「参照」と
> 「値」の話ならその通りですが、上記の文を読む限り、「オ
> ブジェクト」が「参照」とほぼ同義で使われているからです。
まったく同様な違和感があります。
> >
http://aspn.activestate.com/ASPN/Mail/Message/python-Tutor/509290
> ざっと読みました。
> | (2) there is no pointer type in Python, so you
> | *can't* pass "a reference" to an object
> Pythonは(Javaと同様)なんでもかんでも参照だと思っていま
> したが、
それで合ってると思います。
> これはどういう意味でしょう。変数への参照が取れないって
> ことかなあ。
参照への参照が取れないってことでしょうね。
> # でも「you *can't* pass "a reference" to an 『object』」
> # だしなあ。
> ## 私がPythonについて誤解しているようでしたらご指摘く
> ## ださいませ。
上の記事の著者である Tim Peters が言う "object" というの
は、松本さんの言う object と同じもの、すなわち我々の感じ
るところの「object への参照」のことなので、特に矛盾はな
いと思います。
Smalltalk や Ruby など、全ての型が object である言語で育
つと、自然にこういう感覚になるのかもしれませんが、機械語
による実装を見て意味を理解するタイプの人間からすると、
ちょっとついていけない感じですね。
で、我々の感覚でいう「オブジェクトへの参照の値渡し (call
by object reference)」は、Tim Peters や松本さんのような
感覚を持つ人にとっては、
実体渡し == "call by object"
となるわけです。
結局、以下の懸念は、まったく当たっており、注釈をつけたの
は正解だということになると思います。
> おっしゃるとおり、術語としてちゃんと定義されてな
> さそうなので、誤解を招く可能性があると思うのです
> が。そのために、先の投稿で注釈をつけたわけです。
同様に、
> 参照渡しを実体渡しと読んでいるのはその本(および
> その本に言及したWebページ)以外では、私は見たこと
> ないです。そんなの広く使われてるじゃん、という方
> は情報よろしくお願いします。
についても、(少なくとも Python の世界では?) 広く使われている
と考えた方がいいのかもしれません。Tim Peters 氏は、Python の
世界では結構な有名人のようですし。
以下は余談です。
> >ただ、Java を含む多くの GC つき言語では、参照の値
> >渡しをするわけで、この術語は使えませんね。
> ええと、少なくともJavaやCなら「値渡ししかない」で済み
> そうな気がするのですけど。
もちろんそうです。
ただ、C++ でオブジェクトを参照渡しすることと、まあだいた
い等価なことは、Java でも当然行なわれていることなわけで、
C++ と Java に関する話をするときに、これを意味する術語が
欲しいように思います。
で、これを "call by object" と呼びたくない派の人間として
は、"call by object reference" のように呼びたくなるわけ
です。
もっとも google によると "call by object reference" の
用例は230件しかないそうなので、こういう欲求は、非常に
マイナーなのかもしれませんが。