パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Prototype-based OOP Prothon」記事へのコメント

  • いちばん有名なプロトタイプベースは、JavaScript [night.nu]かな。
    • でもJavaScript 2.0 はクラスベース [mozilla.gr.jp]になりましたよね。

      確かに、class があるほうが分かりやすい気もするけど、個人的にはスクリプト言語としては、プロトタイプベースの方がすきかな。
      --
      use Test::More 'no_plan';
      • Re:JavaScript (スコア:2, 参考になる)

        うーん。この場合、クラスベース(を中心にする)かどうかよりも、
        そのクラスの仕組みの導入の仕方が気になるところです。
        そのURLを見ましたが、
        new Classname(args)という、Java/C++系の文法を採用してるようですし、

        >処理を戻す前に B のコンストラクタを呼び出さなければならない。この呼び出しは明示的なものでも暗黙のものでもよい。

        とも書いてありますね。

        で、俺にとってはこれがかなりカッタルク感じます。
        同じクラスベースでも、SmalltalkやRubyのほうがエレガントだと思います。
        というのは、あっちは、

        ○コンストラクタは、単に"インスタンスを作って
        • by Anonymous Coward

          Rubyのが一番お洒落でしょうね。 Class Objectのnewメソッドは、空っぽ(?)のオブジェクトを作ってから、 そのオブジェクトのinitializeメソッドを呼んであげる、っていうだけ。エレガントです。

          CLOSもそうですね。newにあたるmake-instanceは クラスを取るメソッドで、それはクラスを引数に

          • >起源

            SIMULA 67 は new 時に引数として初期値を渡すスタイルで、別段、初期化用の
            メソッド(仮想関数)が用意される様子は見られません。

            Smalltalk-72 では、isnew というインスタンス化直後だけ真となるテストで
            初期化を行なうようなしくみになっています。まだ空っぽのインスタンス
            にメッセージを送信するようなスタイルにはなっていません。インスタンスが
            インスタンス変数に値を未束縛の状態で存在できたかはちょっと微妙です。
            それが可能ならば、後で初期化というスタイルもとることはできたでしょう。

            Smalltalk-72 の影響を受けて LISP マシン LISP 用に作
            • by G7 (3009) on 2004年04月04日 12時34分 (#526123)
              >まだ空っぽのインスタンス
              >にメッセージを送信するようなスタイルにはなっていません。インスタンスが
              >インスタンス変数に値を未束縛の状態で存在できたかはちょっと微妙です

              「空っぽ」といっても、ここの一連の話では、
              そのObject自体のBootstrapに必要な最低限の情報(クラスなどへの参照など)は
              与えられた状態、を指すのだと思っていました。

              クラスとかへの参照さえあれば、「そのObjectの」初期化メソッド
              (メソッドの名はオヤクソクということにすれば充分)
              を自然なかたちでCallできるわけで。
              どうせ初期化時には、クラスなどの祖先情報と、引数で渡された情報と、しか
              もらえないんだから。
              逆にいえば、その限られた(?)情報を美味しく無駄なく活かすための
              スタイルとして、今のあの方式に落ち着いたんだろうなと想像します。
              親コメント

最初のバージョンは常に打ち捨てられる。

処理中...