ruby-listで「変数=箱モデル」の優劣についての議論がある。 まあ、あくまでもたとえなんだから、完全なたとえはありえないわけだが。
箱モデルについて考察すると、まず前提としては
ということがある。これは別に問題ない。 私がCの解説書を書けと言われたら、変数の解説には箱モデルを使うだろう。
問題はそれをRubyの解説書に適用するのが適切かどうかだ。 これはもちろん読者のバックグラウンドによって違うだろう。
すでに箱モデルになじんだ人にとっては箱モデルの解説に意味があるのは確かだが、 問題は
ということだ。やっぱり、Rubyを題材にした解説本に箱モデルは有効ではないんじゃないかなあ。
ただし、反論の中にはいくつか興味深いものがあるので、引き続き考察してみる。
配列は普通箱の並びとして図示するので、気持ちは分かる気がするけど、 「名札が並んだもの」でも別に困らないと思う。
一番心配するのは、箱モデルでは変数に箱という実体を与えてしまうため、 変数がオブジェクトであると認識させてしまうのではないかということ。 変数が実際にオブジェクトであるCのような言語でない限り、じゃまにしかならないような。
本を入れる箱ではなく、図書カードをとめるピンくらいの感じでしょうか
『オブジェクトIDと言うのは「数値で表現したアイデンティティ」に過ぎない』というのはわかりますが、『このたとえ話で一度に説明する必要があるものではない。』というくだりがよくわかりません。もしお手数でなければ、もう少し解説していただけないでしょうか。
個人的な考えですが、名札モデルは数学の概念とあまり合致していないので、違和感があります。変数や代入という言葉は数学からきていると思うし、他の言語を習ってなくても義務教育で数学は習っていると思うので、数学における「変数」や「代入」のイメージに沿った説明がいいと思います。そう考えると、『オブジェクトIDを入れた箱』という説明がいちばん良いのではと考えています。
また『箱モデルでは変数に箱という実体を与えてしまう』とありますが、名札モデルでも名札という実体を与えてしまいませんか?まあ箱や名札が実体と感じるかどうかは個人個人に依るでしょうが。
長文失礼しました。
コンピュータ用語の「代入(assignment)」と数学用語の「代入(substitution)」は若干概念が異なる気がします。