[#21157] あったらうれしいメソッド to_n, to_n!, to_s! — ogino@...

荻野です。あったらうれしいメソッドということで書いてみます。

16 messages 2000/03/03

[#21159] メソッドの入り口 — ogino@...

荻野です。もうひとつご指導ください。

93 messages 2000/03/03
[#21170] Re: メソッドの入り口 — Shin-ichiro Hara <sinara@...> 2000/03/03

原です。

[#21243] Re: メソッドの入り口 — keiju@... (石塚圭樹) 2000/03/07

けいじゅ@日本ラショナルソフトウェアです.

[#21247] Re: メソッドの入り口 — 中村暁史 Nakamura Akifumi <BXQ04723@...> 2000/03/07

[#21267] 引数コピーとオブジェクト指向 (Re: メソッドの入り口) — Hideto ISHIBASHI <s34204@...> 2000/03/08

石橋秀仁です。

[#21272] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 ) — 中村暁史 Nakamura Akifumi <BXQ04723@...> 2000/03/08

[#21276] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 ) — nobu.nakada@... 2000/03/09

なかだです。

[#21279] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 ) — ogino@... 2000/03/09

oop未満の世界観の荻野です。

[#21282] Re: 引数コピーとオブジェクト指向 — Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp> 2000/03/09

越水です。

[#21285] Re: 引数コピーとオブジェクト指向 — ogino@... 2000/03/10

荻野です。

[#21365] Re: 引数コピーとオブジェクト指向 — Matsuo Hisanori <hisanori@...> 2000/03/13

松尾です。

[#21293] Re: 引数コピーとオブジェクト指向 — Matsuo Hisanori <hisanori@...> 2000/03/10

松尾です。

[#21297] Re: 引数コピーとオブジェクト指向 — ogino@... 2000/03/10

荻野です。

[#21302] Re: 引数コピーとオブジェクト指向 — 土岐 仁謙 <toki@...> 2000/03/10

土岐です。

[#21371] Re: 引数コピーとオブジェクト指向 — Matsuo Hisanori <hisanori@...> 2000/03/13

松尾です。

[#21374] Re: 引数コピーとオブジェクト指向 — TADA Tadashi <sho@...> 2000/03/13

ただただしです。

[#21280] raise non-Exception object — Kenichi Komiya <kom@...3.rim.or.jp>

24 messages 2000/03/09
[#21283] Re: raise non-Exception object — nobu.nakada@... 2000/03/09

なかだです。

[#21315] Re: raise non-Exception object — Kenichi Komiya <kom@...3.rim.or.jp> 2000/03/11

[#21342] Re: raise non-Exception object — nobu.nakada@... 2000/03/12

なかだです。

[#21384] ruby 1.4.4 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

35 messages 2000/03/13

[#21442] 配列内のソート — Takayuki Tanaka <tanaka@...>

こんにちは Tanです。

16 messages 2000/03/15

[#21583] ruby for Web — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

27 messages 2000/03/22
[#21584] Re: ruby for Web — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/03/22

なひです.

[#21649] net-1.1.10 — TAKAHASHI Masayoshi <maki@...>

高橋征義です。net/http 使いたおし中。

17 messages 2000/03/27

[#21669] new version of mod_ruby & eRuby — Shugo Maeda <shugo@...>

前田です。

14 messages 2000/03/28

[ruby-list:21309] Re: 引数コピーとオブジェクト指向

From: 中村暁史 Nakamura Akifumi <BXQ04723@...>
Date: 2000-03-11 00:51:30 UTC
List: ruby-list #21309
お世話になっております。 A.中村です。

On Fri, 10 Mar 2000 14:40:46 +0900
とみたまさひろ <tommy@tmtm.org> wrote:

>そりゃそうなんですけど、Person クラスの設計者とその利用者が
>同じでない場合、利用者は Person クラスの内部コードまでは
>意識しないので、name.sub!をやっちゃうかもしれませんよね。

うーむ。結局、

1:オブジェクトにはオブジェクト毎の立場ってものがある
2:変数には変数毎の立場ってものがある

ってことじゃないかと思うのです。
で、Rubyは、1はサポート出来る(そりゃOOP言語なら当然だ)
けども2は出来ない、ってことでしょうかね。

2の必要性ってのは、たしかに無いわけじゃないとは思います。

ですが、ここで間違ったらイケナイなぁと思うのは、
2を実現するために1を犠牲にする、つまりコピーを
(もしかしてするべきでないかもな場合でも)してしまう、
ってのは、ちょっとまずいんじゃないかな?ということです。

「あるインスタンスへの色々なアクセス手段を用意する」のと
「アクセスするインスタンスが色々ある」のとでは
全然違う概念ですから。


2についてですが、勿論Rubyにそんなシカケはありませんので、
以下のような文法(?)を妄想しました。

変数には「型」はなくていい(今回の議論は「型」じゃないし)が、
それと似たノリで、「強さ」とかいうものが要ることにする。
最もチャチな文法として

class A
  def string a1 #「強い」a1というメソッドを定義
  end
  def weak   a2 #「弱い」a2というメソッドを定義
  end
end

strong a=A.new
weak b=a

a.a1 #OK
a.a2 #OK
b.a1 #OK
b.a2 #弱い変数から弱いメソッドを呼ぼうとすると例外になる

なーんての。

尤もこれ、カプセル化には一切寄与しませんけどね。
強い変数を作る自由が他者に開放されているので結局同じこと。

この辺のシカケを凄くイイカゲンに(笑)実装したのが
C++のfriendだと思います。もっと洗練してくれたら
あの方向性も使い物にならないわけでもないとは
思うんですけどね…


まあ、あえて言うならば、「鍵」を用意するっていう手は
ありますけども。
全部のメソッドに(笑)、そのメソッドを呼んだ相手オブジェクトを
引数として取るようにして、その相手が認証済みオブジェクトで
なければ、例外で蹴るとか。

あるいはソレが自動的に判るように、言語を拡張してもらうとか。
…そういや yourself とかいう概念があるんでしたっけ?(^^;;;;;


うーん。弱い変数にせよ相手オブジェクトyourselfにせよ、
要するに「呼んだのは誰ですか?」ってのが問題みたいですね。
#弱い変数は、「呼んだ相手」の問題を「呼んだ変数」に
#すりかえる作戦です。

繰り返しますが、呼んだのが誰であるかを悩むのを回避するために
そもそも呼ばれるもの(オブジェクト)のほうを分裂させて
しまいましょう、っていう作戦は、少なくとも「常に正しい」やり方
ではナイはずです。それだけは忘れないでください。
LENSとかいう言語の作者に言わせればきっと「dupに多くの役割を
負わせすぎている」ということになるんではないかと(^^;

oop未満だとは思いません。その願望をyourselfみたいなやりかたで
oopに取りこんでいくことは無理無く可能だと思いますので。
それをヤルのがRubyかどうかは別ですが。


よだん:
「慣れるしかない」とまでは俺は
思いませんけどね(^^;>松尾さん[ruby-list:21289]
「なぜ慣れる価値があるのか」を説明したことになりませんから。
ここまででも、まだ説明は足りないと思っています。
最終ゴールに至る説明を我々人類が出来るかどうかは謎ですが…



あ。一つ重要なことを忘れてた。
「呼んだのは誰か?」が真の問題ではないのだったっけ。
「呼んだのはどういう状況か?」という、ひどく曖昧なもの
でしかないですねこれは。相手の身分がわかっただけで
十分な情報が得られるかというと、そうじゃない。
かといって弱い変数だって同じこと。
逆にメンバ変数のホストからだったら本当にナニしてもいいのか?

つまり、「ナニから」オブジェクトを保護したいのかが
判らない(言語で記述できない)!

「状況」を表すような構文って、ちょっと俺は思いつきません。
少なくともオブジェクト指向なんかより「はるかに上」のモノ
じゃないかと思います。どうやったら手懐けられるのか
想像もつかないなあ。#あるいはもしかして論理的に不可能かも…

で、現状では、取り敢えずオブジェクト指向「で」妥協して
いるんだと思います。今回の皆さんの御助言の中にも、そういう
妥協という面を含んでいるものは、幾つかあったと思います(失礼)。

まつもとさんは2回しかなかったと言っていた計算機言語の
パラダイムシフトですが、次に来るべき 3rd impact は
果たしてナニなんでしょうね…


In This Thread