From: Shin-ichiro Hara Date: 1999-04-10T11:26:49+09:00 Subject: [ruby-list:13570] Re: Ruby and LISP ( was Re: Ruby anywhere ) 原です。 > > 更に言うと私の考えるモデルの方が単純なので初学者にはわかりやすい > > と思います。 > > まず、少なくとも、 > Rubyでは「等価」と「同一」の区別をする必要がほとんどない > と言えればそうかもしれません。 その様な傾向はあるのかもしれませんが、Ruby でも「等価」か「同一」 の区別は明確にあって、それを意識しないとほとんどプログラムは書け ないのは Java と同じだと思います。 で、更に、foo と bar がある一つのオブジェクトを参照しているとき (1) foo と bar は異なる参照を格納している。それぞれの参照は同じ オブジェクトを保持している。 とも、 (2) foo と bar は同じオブジェクトを参照している。 とも考えていいのも Java と Ruby は同じだと思います。 で、今話題になっているのは (A) (1)の表現を Ruby では使わないで済む。(2) だけでいい。 のではないかということです。つまり参照(アドレスの様な物)という名 詞を排除して参照するという動詞だけでいけるのでないかと。そうすると 参照というオブジェクトでない「もの」を考えなくていいところがメリッ トになるから、できればそう考えたい。 で、今問題になっているのは「foo と bar の値」とは何か?という事で すね。前田さんは (B) もし(A)が正しいなら「foo と bar の値はオブジェクト」であると 表現しても問題は起こらない。 のではないかと言っているわけです。そうすればますます参照(アドレス の様な物)を扱わずに済むし、できればそうしたい。 いえ、まとめてみただけですけど。 前田さんの主張は「(A)も(B)も正しい」ですね。 高木さんはどちらかが間違っていると考えているのかしら? いずれにしても、高木さんの [ruby-list:13516] でのまとめ > まとめ > ・式の評価結果や変数が保持するのは「値」である。 > ・「値」とはオブジェクトへの参照である。 > ・オブジェクトは「オブジェクト」であって「値」ではない。 > ・「1」というオブジェクトは「表現している内容」が整数の1である。 > ・同じ内容を表現するオブジェクトが常に同一のオブジェクトとして計算 > されるかどうかは、クラスによって異なる。 によれば、「値」という言葉の使用に違いはあるけど、同一性と等価性の についての考え方は違いは少しで、今はあまり問題にはならないのでは。