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

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:05/02/22 23:39:31
今作ってる俺言語に、プロトタイプベース(オブジェクトベース?)風のOOの
機能を盛り込もうとしています。

言語そのものは、C風の文法の形無し言語です。
んで、

o = new_object();

とすることで、o.hoge 形式で参照可能な連想配列が取得できるようにする。

そうすれば、後はクロージャを実装するだけで、

new_point(x, y) {
 o = new_object();
 o.x = x;
 o.y = y;
 o.move = function (x, y) {
  o.x += x;
  o.y += y;
 }
}

なんて形で、そこそこそれっぽいものが書けそうな気がするんですが、
どんなもんでしょうか。
そんなのOOじゃねえ、とか、それじゃ実装できんだろ、とか、
気が付くところがあったら教えてくださいませ。
# プロトタイプチェーンはもちょっと後で考えるつもり。
953デフォルトの名無しさん:05/02/23 08:32:12
o.hogeに関数を設定するのと関数の返り値を代入するのはどう書き分けるの
954デフォルトの名無しさん:05/02/23 09:11:38
>>953
普通に{...}があるかないかじゃダメなのか?
955デフォルトの名無しさん:05/02/23 11:49:56
>>953
functionって関数名じゃなくて関数宣言の予約語じゃないの?
956デフォルトの名無しさん:05/02/23 14:21:33
WEB制作板にカエレ
957952:05/02/24 00:23:25
>>953-955
反応ありがとう。

>>955が正解で、functionは予約語です。
んで、>>952ではいくつかポカしてて、通常の関数定義の際もfunctionは
必要で、かつ、new_point()はただの関数なので、>>952のリストは実際にはこうなります。

function new_point(x, y) {
 o = new_object();
 o.x = x;
 o.y = y;
 o.move = function (x, y) {
  o.x += x;
  o.y += y;
 }
 return o; ←returnが必要
}

関数のネストは今のところ考えてないので、スコープは、
・グローバル
・関数内ローカル
・ネストした分のクロージャ
になるんじゃないかと思ってます。
958デフォルトの名無しさん:05/02/24 10:45:47
プロトタイプ・チェーンの無いものはプロトタイプベース・オブジェクト指向言語と呼ぶべきでない、
みたいな議論、どーでもいい話で盛り上がってるっぽくてワラタ

そんなん、プロトタイプとなるインスタンスへの委譲がなくとも、
インスタンスをプロトタイプとして新しいインスタンスを作るんだから、プロトタイプ〜でええやん。

こーゆーつまらん議論を喧喧ガクガクやって、しまいには辞書まで引っ張り出してくるのって、
きっと(ry
959デフォルトの名無しさん:05/02/24 10:55:24
一見意味がありそうで、実はとってつけたどーでもいい話を延々するのは、文系人間のビョーキだな
960デフォルトの名無しさん:05/02/24 22:08:44
>>958
そーゆーつまらん議論はとっくに終わっているのに、わざわざほじくりだして
しかもageるのって、きっと(ry
961デフォルトの名無しさん:05/02/27 12:58:24
そして誰もいなくなったらしい…
1000目前でこれは悲しいので、一応ageとく。

次スレはいらないの?
962デフォルトの名無しさん:05/02/27 15:26:12
>>961
963デフォルトの名無しさん:05/02/27 15:29:24
次スレは、「POO総合スレ」的なのがいいな。
964デフォルトの名無しさん:05/02/27 21:56:44
タイトルにインスタンスベースも入れて欲しい。
965デフォルトの名無しさん:05/02/27 22:52:20
このスレは
頭が痛くなるだけで
何も生み出さない
次スレは*無し*の方向で
966デフォルトの名無しさん:05/02/28 00:24:42
>>965
あんたの頭が足りないのをスレのせいにされてもなあ…
上のほうには有意義な議論もあったろうに。
967デフォルトの名無しさん:05/02/28 01:09:09
有意義か?www
結局ここに書き込んでる奴は、何がしたいわけ?
>>3-4みたいなマイナー言語並べて各自の勝手な解釈で
分類の仕方に終始してるだけというか。
何が有意義なのかねえ・・
言語ごとに専用スレ立てれば?
968デフォルトの名無しさん:05/02/28 02:02:03
ファビョるなよ低脳…。合わないならこんなスレ来ないで、
HSPスレなりマ板なりどこでも逝けばいいだろうに。
969デフォルトの名無しさん:05/02/28 02:49:29
うわww
合う合わないの話なんてしてないのに。
自分が低脳だとは考えたことが無いんだろうね。
痛すぎるよ、君。
970デフォルトの名無しさん:05/02/28 08:39:01
>>969
すげえ。本物の低脳だ。
971デフォルトの名無しさん:05/02/28 19:33:03
Rubyこそ最高言語
972デフォルトの名無しさん:05/02/28 19:43:12
>>971
すげえ。本物の低脳だ。
973デフォルトの名無しさん:05/03/01 01:31:10
 で、低脳は放置するとして、次スレはどうするよ?

>>964
 「インスタンスベース」という言葉は一般に使われていない上に、
英語としても変(>>928)だから、却下されるべきだと思うよ。

 俺としちゃ、プロトタイプOOな言語が具体的にどういう時に役に立つのか、
もうちょっと色々話を聞きたいと思ってる。
 >>133のリンク先にある話は割とわかるんだが、200〜あたりで話されている、
「プロトタイピングで便利」というのは納得しかねるなあ。動かしながらいじるのが
便利だとして、具体的にどこをどういじりたいんだろう?
974デフォルトの名無しさん:05/03/01 04:04:25
自分が低脳だとは考えたことが無い低脳は放置するとして、次スレは無しの方向で。
975デフォルトの名無しさん:05/03/01 10:11:19
自ら“英語に疎い”と認めつつ、実際に動詞としての使用例で以って
“だとすると「インスタンスベース」はまずいね”と仰ってしまう >>928
果たして参考になるのだろうか…?
976デフォルトの名無しさん:05/03/01 10:54:04
>>975
意味をよく掴めなかったので、つっこみつつ質問。

> 自ら“英語に疎い”と認めつつ、実際に動詞としての使用例で以って

疎い思っているからこそ(失礼、>>928さん)、辞書をひいたのでしょう。
確固とした情報源を使うことで、(変な論理で話を変な方向に展開させなければ)
信頼できる情報となり得るのではないでしょうか。

まさか、「英語に疎い人が辞書を使っても、信頼なんかできないよ」
という意味ではないですよね?
977デフォルトの名無しさん:05/03/01 11:48:39
できないよ。w
978デフォルトの名無しさん:05/03/01 12:11:19
まあ「インスタンスベース」はある種、ちょっとイジワルな踏み絵ですね。
嫌悪感を示す人の中で、このパラダイム向け言語処理系をある程度、
まともに使ったことがある人は皆無に近いと思いますよ。
批判的になることで、自ら、その事実を晒してしまっているわけです。
979デフォルトの名無しさん:05/03/01 12:33:35
>>978
> 嫌悪感を示す人の中で、このパラダイム向け言語処理系をある程度、
> まともに使ったことがある人は皆無に近いと思いますよ。

ポカーン
英語的に問題あるという話なのに、978は一体何を考えているのでしょうか?
980デフォルトの名無しさん:05/03/01 12:36:49
こーゆーつまらん議論を喧喧ガクガクやって、しまいには辞書まで引っ張り出してくるのって、
きっと(ry
981デフォルトの名無しさん:05/03/01 16:52:31
>>979
ん、英語的に問題? 問題があるのは928(と979)の理解のほうだろ。
インスタンスが「クラスのインスタンス」のコンテキストを意味するのは
自明のことだし、インスタンスベースがオブジェクトベースの同義である
ことはインスタンスがオブジェクトと同義である程度には許されるはずだ。

そして、このパラダイムに則って運用される世の中のオブジェクトのほと
んどが実質、何らかのクラスに属している。つまり、当初、取りざたされ
たようなクラスの有無は、このパラダイムにおいて本質じゃない。

お前みたいのが分かったふりして出てくるのを助長するからプロトタイプ
ベースってのは限定的でマズいって話。これだけ繰り返しても、まだ分か
らないのか?
982デフォルトの名無しさん:05/03/01 18:33:18
>インスタンスが「クラスのインスタンス」のコンテキストを意味するのは自明のことだし

自明じゃないだろ。
「クラスのインスタンス」と自分で自明じゃない事を証明してしまってるじゃないか。
アフォか。
983デフォルトの名無しさん:05/03/01 18:55:58
>>982
悪かった。このスレ以外では…、と但し書きを入れるのを忘れてたよ。orz
984デフォルトの名無しさん:05/03/02 00:08:18
インスタンスベースなんて、おかしな用語を広めようとしているのは
何を目的としているのだろう。

英語の文献では、prototype basedもしくはclone basedくらいしか
使われていない。英語の意味的にもinstance basedは有り得ない
のだから、変な用語を広めようとするのは止めてくれ。
985デフォルトの名無しさん:05/03/02 01:18:58
>>984
どんな文献を読んで言っているんだか…。文献調査が足りてないぞ、学生君。
とりあえず、手近な文献データベースでinstance-based AND object-orientedな
検索かけてみたまえ。話はそれからだ。
986デフォルトの名無しさん:05/03/02 01:33:06
instance-based : 実例を基本とした
987デフォルトの名無しさん:05/03/02 04:14:22
>>981
> インスタンスが「クラスのインスタンス」のコンテキストを意味するのは
> 自明のことだし、インスタンスベースがオブジェクトベースの同義である
> ことはインスタンスがオブジェクトと同義である程度には許されるはずだ。

じゃ、その定義によるとSmalltalkはインスタンスベースだな。プゲラ
988デフォルトの名無しさん:05/03/02 08:18:56
>>985
検索にヒットしたらそれが正しい用語だと思っているのか?
instance-basedとobject-orientedの両方が含まれているだけの文章が
山程ヒットしているだけで、無関係のものしかないようだが?

ここ10年くらいのまともなプログラミング言語系journal、proceedingsや
それ以前の主要な文献でinstance-basedなんて言葉をいわゆる
プロトタイプベースの意味で使ったものなんか見たこと無いぞ。
989デフォルトの名無しさん:05/03/02 11:22:27
>>988
> instance-basedなんて言葉をいわゆる
> プロトタイプベースの意味で使ったものなんか見たこと無い

へえ…

http://portal.acm.org/citation.cfm?id=312023
http://portal.acm.org/citation.cfm?id=141955
http://portal.acm.org/citation.cfm?id=84459
http://portal.acm.org/citation.cfm?id=323737
...
990デフォルトの名無しさん:05/03/02 18:16:37
Rubyですべて解決!!!!!!!!!!!11111111111
991デフォルトの名無しさん:05/03/02 19:09:54
992デフォルトの名無しさん:05/03/02 19:30:32
993デフォルトの名無しさん:05/03/02 19:44:40
nullpo
994デフォルトの名無しさん:05/03/02 19:53:40
995デフォルトの名無しさん:05/03/02 19:56:12
996デフォルトの名無しさん:05/03/02 19:59:41
997デフォルトの名無しさん:05/03/02 20:01:39





998デフォルトの名無しさん:05/03/02 20:03:28
      ./       ;ヽ
      l  _,,,,,,,,_,;;;;i  <いいぞ ベイべー!
999デフォルトの名無しさん:05/03/02 20:04:09








1000デフォルトの名無しさん:05/03/02 20:04:20
nextThread = [ self clone ];
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。