From: Take_tk Date: 2003-08-31T02:38:47+09:00 Subject: [ruby-list:38298] 「型付きの箱」.vs.「なんでも入る箱」 たけ(tk)です。 [ruby-list:38273] Re: かみ砕いた説明をすべき範囲 にて matz@ruby-lang.org (Yukihiro Matsumoto) さん 曰く: > 「この概念(箱モデル)」と「共有関係」という二つの概念を使って、 > 「次の現象」を説明できることには同意しますが、名札モデルだっ > て「次の現象」を説明できるわけですから、メリット(=その方が > 良い)かどうかについては更に述べる必要があると思います。 > > 箱モデルを使って説明できることについて疑問を持っている人はい > ないと思います。今はただ説明できるかというレベルを越えて、今 > 後のためにそれが良い説明モデルかどうかを話したいのです。 「良い」というのは難しいですが、まず次の部分から敷衍していきます。 > |Aの立場であればRuby言語の変数の本質に一番近い比喩で語るのが望ましい。他 > |の言語についての知識がある人にRubyを理解してもらうためには、Rubyの変数 > |の特徴を強烈にアピールする方が、Rubyの変数の本質を理解する近道になる。  名前モデルのメリットの一つはおそらく (1)名前であれば『型付きの箱』というイメージには結びつかない (2)Rubyの変数は『型付き』ではないので、それと結びつかない名前モデルの ほうがよい (3)『型』に結びつかない名前で説明することにより、『変数は型付きの箱だ』 と思っている人に対してはRubyの変数の特徴を強烈にアピールすることになる ということだと思います。  しかし、日常世界を振り返って見るなら、箱に型がついているというのはかな りシュールです。箱の入り口に門番がいて、入れるものの型を調べて、型にあわ ないモノは拒否する、という箱はなかなか見つけられるものではありません。普 通の箱であれば(大きさが許せば)なんでも入ります。  VBに対する優位性を示すためには、VBとは全く異なった概念で変数を説明 したほうがよいという意見もありましたが、むしろ逆のような気がします。同じ 概念を使って、 Rubyの変数は『型』などという余分なものがつかない普通の箱だ。 と言った方が、比較可能な形で優位性を示せるでしょう。「型付きの箱」のイメー ジを持たない人にとっては、すっきりした説明になります。  これに関して理論的な根拠を示せと言われれば、次のように説明することがで きる。 (1)VBとの比較で言うなら、Rubyの変数は「すべてObject型の変数だ」と考 えればよい。 (2)RubyではすべてのデータはObjectクラスの承継クラスのインスタンスだか ら、Rubyの変数にはなんでも入る。 (3)Rubyではオブジェクト指向を徹底したので、変数に「型」などという余分 なものが不要になったのだ。 * 『Rubyの冒険 遊々篇』p.3 はじめに  Rubyの変数はVBの変数とは全く異なるモデルだ、と言い切ってしまうと、ア ドバンテージを説明しにくくなるのではなかろうか? take_tk = kumagai hidetake