アカウント名:
パスワード:
Rubyのが一番お洒落でしょうね。 Class Objectのnewメソッドは、空っぽ(?)のオブジェクトを作ってから、 そのオブジェクトのinitializeメソッドを呼んであげる、っていうだけ。エレガントです。
CLOSもそうですね。newにあたるmake-instanceは クラスを取るメソッドで、それはクラスを引数に
element Pat; activity secretary (redhaired, thumbs); boolean redhaired; integer thumbs; begin ... end; Pat := new secretary (true, 10);
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy
JavaScript (スコア:4, 参考になる)
Re:JavaScript (スコア:1)
確かに、class があるほうが分かりやすい気もするけど、個人的にはスクリプト言語としては、プロトタイプベースの方がすきかな。
use Test::More 'no_plan';
Re:JavaScript (スコア:2, 参考になる)
そのクラスの仕組みの導入の仕方が気になるところです。
そのURLを見ましたが、
new Classname(args)という、Java/C++系の文法を採用してるようですし、
>処理を戻す前に B のコンストラクタを呼び出さなければならない。この呼び出しは明示的なものでも暗黙のものでもよい。
とも書いてありますね。
で、俺にとってはこれがかなりカッタルク感じます。
同じクラスベースでも、SmalltalkやRubyのほうがエレガントだと思います。
というのは、あっちは、
○コンストラクタは、単に"インスタンスを作って
Re:JavaScript (スコア:0)
CLOSもそうですね。newにあたるmake-instanceは クラスを取るメソッドで、それはクラスを引数に
Re:JavaScript (スコア:1)
どうなんでしょうね?
どうでもいいといえばいいんですが(^^;
そりゃそうと、後知恵の謗りを覚悟で言うならば、
この手順は「OOP者にとっては凄く自然ってゆーか当然」とも映ります。
クラスの責務は、インスタンスの骨格(メモリ領域)を作り、
そのインスタンスの骨に最低限の自己肉付け能力(=メソッドテーブル)を与える、というところまでで終わり。
で、後はそのインスタンス自体に全部やらせる、ってわけです。
この責務分割のしかたは、無理がないんですよね。
どっかの言語(たしか有ったよね)のように
「コンストラクタ中のこの場面では、thisが参照できません」
みたいな馬鹿げた制約を負わずに済む。
thisを参照したくなるようなタイミングでは既にthisに作業を委譲した「後」である、
という風にデザインしておけば、話が非常にすんなり行きます。
そして、いつ委譲するのが最も自然か?と問われればそれは、
「thisが作られたら出来るだけ速やかに移行(委譲)する」
が答えであるはずです。
この発想は、オブジェクトで考える(^^;人にとっては、どう考えても自然です。
そんなわけで俺としては、起源云々というよりも「自然発生」だと捉えたい、という希望(^^;があります。
希望というのは、そういう自然(^^;な発想をしてくれる言語デザイナが実は少なくない、ということを期待しているという意味でもあります。
逆にいえば、劣った(笑)new Hoge()方式は、誰が起源なんでしょう?
やっぱりC++あたりなのかな?
Delphiが存在できていることを思えば、強型系だろうとコンパイル系だろうとNative系だろうと、
C++方式を採用する「必然」性はあまり無いはず。
#C++の作者が物知らずor狭量だっただけ、という説に一票なのでG7
#いまだにインスタンスを「クラス」と呼ぶ奴が居るので頭抱えてます。
#そういう奴に限って、全般的に捉え方を間違ってやがるし、
#手抜きしても痛痒を感じないし…
#そういうやり方を流布したC++への恨みは、ちょっと少なくないですねえ。
Re:3D OSって・・・ (スコア:1)
SIMULA I です。当時はまだクラスもオブジェクトもなくてそれぞれ
「アクティビティ」や「プロセス」と呼ばれていました。つまり、
アクティビティ「Hoge」の新しいプロセスを変数に束縛するための
文で用いられます。具体的には次のように書きました。