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

Matzにっき


2003-08-31 [長年日記]

_ [教会]松江

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

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

_ [OOP]箱モデル

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

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

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

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

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

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

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

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

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

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

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

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

本日のツッコミ(全3件) [ツッコミを入れる]
_ 碁盤縞 (2003-09-01 23:59)

本を入れる箱ではなく、図書カードをとめるピンくらいの感じでしょうか

_ kwatch (2003-09-02 09:00)

『オブジェクトIDと言うのは「数値で表現したアイデンティティ」に過ぎない』というのはわかりますが、『このたとえ話で一度に説明する必要があるものではない。』というくだりがよくわかりません。もしお手数でなければ、もう少し解説していただけないでしょうか。<br><br>個人的な考えですが、名札モデルは数学の概念とあまり合致していないので、違和感があります。変数や代入という言葉は数学からきていると思うし、他の言語を習ってなくても義務教育で数学は習っていると思うので、数学における「変数」や「代入」のイメージに沿った説明がいいと思います。そう考えると、『オブジェクトIDを入れた箱』という説明がいちばん良いのではと考えています。<br><br>また『箱モデルでは変数に箱という実体を与えてしまう』とありますが、名札モデルでも名札という実体を与えてしまいませんか?まあ箱や名札が実体と感じるかどうかは個人個人に依るでしょうが。<br><br>長文失礼しました。

_ Nayuki (2003-09-02 12:33)

コンピュータ用語の「代入(assignment)」と数学用語の「代入(substitution)」は若干概念が異なる気がします。

お名前:
E-mail:
コメント:
[]

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

track feed Matzにっき Creative Commons License This work is licensed under a Creative Commons License.