[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 23:17 / Filesize : 368 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

プロトタイプベース・オブジェクト指向



1 名前:デフォルトの名無しさん [03/12/08 21:30]
オブジェクトを複製または継承によって生成を行う言語,
プロトタイプベース・オブジェクト指向言語について語りましょうよ.

関連リンク >>2


239 名前:デフォルトの名無しさん mailto:sage [04/02/01 00:17]
class なんて特別なものをなくして、 simple にしたんだと思うけどなぁ…
class にしかできないこととか、 class にはできないこととか、そういう制約もなくなるし。

ところで prototype をなくす利点ってどのへん?
派生先が派生元の変更に影響されなくなることくらいかな…

240 名前:デフォルトの名無しさん mailto:sage [04/02/01 01:09]
"特別扱いな部分が少ない言語 == シンプル && 優れている" っていう意識があったけど、
よく使いそうな機能は言語のコアに最初から組み込んでおくべきなんだって考えの人も
居るみたいね。>>232 のリンク先の論文とか。

241 名前:デフォルトの名無しさん mailto:sage [04/02/01 01:14]
そういう見方もあるけど、
プログラム=データ構造+アルゴリズムという観点で見ると、
なにか重要な示唆が含まれているような気もする。

242 名前:デフォルトの名無しさん mailto:sage [04/02/01 01:34]
>>238
>なら割り切って、他にも利点のあるクラスベース

ここはトレードオフなんだよね。割り切って切り捨てられてしまったものが
結構便利だったりする。対象領域によってはクラス化しない方がシンプルな
場合も多いだろうし。

243 名前:デフォルトの名無しさん mailto:sage [04/02/01 02:59]
>>239
> class にしかできないこととか、 class にはできないこととか、そういう制約もなくなるし。

そんなのclassの実装次第でしょ。

244 名前:デフォルトの名無しさん mailto:sage [04/02/01 03:22]
>>243
それならそれを prototype と呼んでも良いわけだ。

よし、この FOO 言語のクラスは従来のクラスにあった制限を一切取っ払った実装にしよう。
ついでに名前も変えて prototype と呼ぼう。これで BAR 言語で出来なかったこんな事や
あんな事も出来るようになるぞ。

245 名前:デフォルトの名無しさん [04/02/01 03:26]
型=インスタンス
ということ自体は全然構わないんだが、

グローバルにしたくないものをグローバルにする必要があったり
メソッドの追加が煩雑だったりするのがかなわん

実用上大問題だと思うんだがどうよ?

246 名前:デフォルトの名無しさん mailto:sage [04/02/01 03:35]
>>244
> ついでに名前も変えて prototype と呼ぼう。

そのFOO言語のclassがclassというよりむしろprototypeであることを
ちゃんと理由を付けて説明できるのならね。

247 名前:デフォルトの名無しさん mailto:sage [04/02/01 03:36]
>>245
> 型=インスタンス
> ということ自体は全然構わないんだが、

誰がそんな事を言っているのですか?
このスレでは該当する者はいないようですが・・・



248 名前:デフォルトの名無しさん mailto:sage [04/02/01 03:47]
>>246
実装次第でどうとでもなるなら、名前付けにも意味は無いですよねって事なんだけど。

249 名前:デフォルトの名無しさん mailto:sage [04/02/01 03:55]
>>248
とりあえず>>94読め。

250 名前:デフォルトの名無しさん mailto:sage [04/02/01 03:58]
>>249
それを読むべきなのは >>243 だろうね。クラスの制約の話をしていて、実装次第と
いう答えはどうかと。

251 名前:デフォルトの名無しさん mailto:sage [04/02/01 04:11]
>>250
おいおい、>>94に書いてあるのは、インスタンス生成機能をどこに配置するかという問題で、
それはクラスへの制約ではなくインスタンスへの制約なのだが。

クラスが一般のインスタンスと同様の機能を持つクラスベースOOPLだって存在するし、
そのOOPLでのクラスはプロトタイプではなく、あくまでクラスだ。
よってクラスへの制約は実装次第ということで間違ってはいない。

252 名前:デフォルトの名無しさん mailto:sage [04/02/01 04:25]
>>251
クラスへの制約なんて話は今まで出てきてないけど、インスタンス生成に関する制約
って事かな。

だいたい、>>94 はインスタンス生成機能だけじゃなく、オブジェクトの分類にも
触れていると思うけど。その上で、モデリングの違いで使い分ければ良いとも読める。

253 名前:デフォルトの名無しさん mailto:sage [04/02/01 05:01]
>インスタンス生成機能をどこに配置するかという問題で、
>それはクラスへの制約ではなくインスタンスへの制約なのだが。

スマソ。ちゃんと読んでなかった。で、クラスへの制約って何?

254 名前:デフォルトの名無しさん mailto:sage [04/02/01 06:45]
>>253
それは>>239に聞かないとわからん罠

255 名前:デフォルトの名無しさん mailto:sage [04/02/01 07:13]
>>239 にはクラスへの制約なんて言葉は書いてない。>>251 の空想の中にしかない
概念なんだろうね。自分で参照したレスもちゃんと読んでないみたいだし。
でももう良いよ、終わりにしよう。説明するのも疲れた。

256 名前:94=249 mailto:sage [04/02/01 07:24]
>>239より引用
> class にしかできないこととか、 class にはできないこととか、そういう制約もなくなるし。

これがクラスへの制約でなくて何だと言うのだろうか・・・


257 名前:デフォルトの名無しさん mailto:sage [04/02/01 08:00]
なんか頭の痛くなる会話してるな

>>255
>でももう良いよ、終わりにしよう。説明するのも疲れた。

説明がちゃんとできてないし、話もお互い通じてないな
おまえら、ろくな定義もされてないあやふやな概念を
一方通行にただ垂れ流してるだけだ
それで余計に疲れるんだろ



258 名前:デフォルトの名無しさん mailto:sage [04/02/01 10:29]
で、分析モデルにクラスは出るのか出ないのか?

259 名前:1 mailto:sage [04/02/01 11:18]
>>132 SeRuby
はRubyでSelfライクを実現,ですが

こちらはJavaScriptライク
mput.dip.jp/?date=20030912

特異メソッド/クラス定義 凄い便利だよな.楽しいよな
Rubyが完全にプロトタイプベースだったら…


260 名前:239 mailto:sage [04/02/01 15:41]
え〜と、説明不足だったかな、ごめん。

class にしかできないことっていうのは、 instance とか subclass の生成あたり。
あとは処理系の柔軟性のなさに応じて、 method や property の追加・削除とか、superclass 変更とか。

class にはできないことのほうは、確かに柔軟な言語にはないかも。
普通の object として複製したり、書き換えたり渡したりってあたりを想定してたけど。

充分に柔軟な処理系なら、全部の object を class にしちゃえば、最大限柔軟にできるよね。
subclass 作ったり method 書き換えたりはしても、 class じゃない instance は作らないっていう。

で、これを簡潔にしたのが prototype-based OOP だと思う。
もう class なんて概念もいらなくなって、世界には object だけあればいい、っていう。

261 名前:デフォルトの名無しさん mailto:sage [04/02/01 16:46]
>>260
> 充分に柔軟な処理系なら、全部の object を class にしちゃえば、最大限柔軟にできるよね。

整数とかはどうする?
整数をオブジェクトにして、かつ、ユーザによる拡張を可能にするんなら、
クラスとインスタンスの区別があったほうがずっとシンプルにならない?

クラスの有り無しは目的ではなくて手段にすぎないんだから、
「クラスを無くすには」「クラスを導入するには」ってのは
処理系実装以外のシチュエーションではナンセンスだと思う。

262 名前:238 mailto:sage [04/02/01 18:41]
スレ伸びてるなぁ.びっくり.
>>239
classとobjectを区別しないprototypeでも,実際に使うと自然に
classとinstance的なものを考えるようになる.
だから,classとinstanceは本質的に違うものであって,それを
prototype-basedな言語は無理矢理まとめてしまった…とも考えられる.

> ところで prototype をなくす利点ってどのへん?
> 派生先が派生元の変更に影響されなくなることくらいかな…
これは結構大きい.派生元の影響を受けるから,自然にclass, instanceの
を区別する使い方をしてしまうんだと思う.

シンプル,という観点から見れば,prototypeすらないのが一番素直.
ある程度メモリ効率とかを気にして,classやprototypeが考案されたと.
そんな中で,prototype-basedは,やっぱりちょっと中途半端な気がする.

263 名前:デフォルトの名無しさん mailto:sage [04/02/01 19:16]
>>262
プロトタイプすらないってどういうのを想像しているの?
オブジェクトの拡張はどうやってやるんでしょうか…


264 名前:デフォルトの名無しさん mailto:sage [04/02/01 20:32]
丸ごとコピーして変更じゃねーの?

265 名前:デフォルトの名無しさん mailto:sage [04/02/01 20:39]
>>261
> 整数をオブジェクトにして、かつ、ユーザによる拡張を可能にするんなら、
> クラスとインスタンスの区別があったほうがずっとシンプルにならない?

あんまり差が思いつかない…どんなとこが違いそう?


>>262
> だから,classとinstanceは本質的に違うものであって,それを
> prototype-basedな言語は無理矢理まとめてしまった…とも考えられる.

役割分担するにしても、厳格に分けないほうがやりやすいと思う。
それぞれの object を class とか instance って呼んでもいいけど、
いつでも役割交代させたり、一人二役させたりできる…っていう。


> シンプル,という観点から見れば,prototypeすらないのが一番素直.
> ある程度メモリ効率とかを気にして,classやprototypeが考案されたと.

効率もあるだろうけど、派生先に影響できることって、たまに便利だと思う。
使う library 切り替えるときとか、関係する object 全部書き換えるのは大変だし。

それに、全部複製して持たせちゃうような method も、簡単に書けるよね。
どっちを default にするかの違いでしかないと思う。
両方用意するほうが親切だろうけど。

266 名前:263 mailto:sage [04/02/01 21:25]
>>264 なるほど.

>>265
>効率もあるだろうけど、派生先に影響できることって、たまに便利だと思う。
たまにじゃなくて,ほとんどの場合影響して欲しいと思うけど.




267 名前:デフォルトの名無しさん mailto:sage [04/02/01 21:38]
そうかなぁ.継承関係はあっても,モノとしては全然関係ないobjectどうしが
影響し合うするのは良くないと思うけどなぁ.



268 名前:デフォルトの名無しさん mailto:sage [04/02/01 21:45]
>>267
その、「良くないと思う」レベルが
classベースと、
prototypeベースと、
なんも無しと、
で違うだけだよ。

269 名前:デフォルトの名無しさん mailto:sage [04/02/01 22:02]
>>268
影響し合うのはprototype-basedだけじゃない?

270 名前:263 mailto:sage [04/02/01 23:20]
>>269
クラスの変更がそのインスタンスに影響与えなかったらうけるな(笑


271 名前:デフォルトの名無しさん mailto:sage [04/02/02 09:20]
>>270
> クラスの変更がそのインスタンスに影響与えなかったらうけるな(笑

そういう言語もアリだと思うけど。
instance creationした瞬間のclassがそのobjectのclassってことでしょ?

272 名前:デフォルトの名無しさん mailto:sage [04/02/02 17:59]
多くのクラスベースな言語では,実行時にクラス変更なんて出来ないし,
出来たとしても,>>271のようになるのが自然だと思う.

273 名前:デフォルトの名無しさん mailto:sage [04/02/03 00:33]
>>272
> 出来たとしても,>>271のようになるのが自然だと思う.

そんなこたーない。普通はクラスを変更したらインスタンスも変更される。

274 名前:デフォルトの名無しさん mailto:sage [04/02/03 00:47]
普通はって、普通は実行時にクラスを変えられないような。

275 名前:デフォルトの名無しさん mailto:sage [04/02/03 00:52]
>>274
普通はって、「出来たとしても」という条件を満たした上での「普通は」でしょ。
文脈からいって。

276 名前:デフォルトの名無しさん mailto:sage [04/02/03 00:56]
「普通は」が含まれている文章は、普通、普通でないことを言っている。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<368KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef