«前の日記(2003年08月30日) 最新 次の日記(2003年09月01日)» 編集

Matzにっき


2003年08月31日 [長年日記]

_ [教会]松江

松江に出席。今日はお話もない。

しかし、妻がお話の割り当てが当たっていた。彼女なりに緊張していたらしい。 ゆうべも遅くまで準備していたし。結果はいい話であった。

_ [OOP]箱モデル

ruby-listで「変数=箱モデル」の優劣についての議論がある。 まあ、あくまでもたとえなんだから、完全なたとえはありえないわけだが。

箱モデルについて考察すると、まず前提としては

  • 「箱モデル」は、変数は値を入れる箱という実行モデルを説明するためのもの。
  • そのような実行モデルを持つ言語はいくつかある(Cとか)

ということがある。これは別に問題ない。 私がCの解説書を書けと言われたら、変数の解説には箱モデルを使うだろう。

問題はそれをRubyの解説書に適用するのが適切かどうかだ。 これはもちろん読者のバックグラウンドによって違うだろう。

すでに箱モデルになじんだ人にとっては箱モデルの解説に意味があるのは確かだが、 問題は

  • 箱モデルを自覚的に理解している人は実はあまりいないかも。
  • 十分に箱モデル言語を理解していれば「ポインタと同じ」で通用するので、たとえ話は不要。
  • 箱モデル言語に対する知識がない人には、Rubyの解説としては役に立たない
  • ここで箱モデルを説明したとして、Rubyの次に習う言語で役に立つとは限らない。必要なら、その時改めて箱モデルを学んだ方が良さそう。

ということだ。やっぱり、Rubyを題材にした解説本に箱モデルは有効ではないんじゃないかなあ。

ただし、反論の中にはいくつか興味深いものがあるので、引き続き考察してみる。

オブジェクトIDを入れた箱という解説は有効
オブジェクトIDと言うのは「数値で表現したアイデンティティ」に過ぎないので、 このたとえ話で一度に説明する必要があるものではない。
配列を箱が並んだものと説明するために箱モデルが有効

配列は普通箱の並びとして図示するので、気持ちは分かる気がするけど、 「名札が並んだもの」でも別に困らないと思う。

一番心配するのは、箱モデルでは変数に箱という実体を与えてしまうため、 変数がオブジェクトであると認識させてしまうのではないかということ。 変数が実際にオブジェクトであるCのような言語でない限り、じゃまにしかならないような。


«前の日記(2003年08月30日) 最新 次の日記(2003年09月01日)» 編集