Smalltalk use: better《余録》代入 vs. 束縛
|記事一覧|Smalltalk use: better
《余録》代入 vs. 束縛 《Python3.1》
Smalltalk-80 セミナー用に作成したテキスト(1988)をもとに、Jython 版(2003)を経て、Python 版(2009)として加筆/再構成した余録集です。
変数の概念モデル
ここでは、便宜的に「代入モデル」と「束縛モデル」として説明を続けます。これを「箱モデル」と「タグ(荷符)モデル」「紐モデル」と読み替えてもかまいません。
《Note》Python では型が必要ない?:よくある誤解のひとつがですが、変数には型を宣言する必要がないだけで、オブジェクトには型が必要です。オブジェクト指向の立場からすると、むしろそのほうが自然な解釈です。とは言え、Java/C# の未練を断ち切れないまま、自分自身で越えられない壁を作ってしまう受講者も少なくありません。「自分のことは自分が一番よく知っている」との台詞にもあるように、型の管理を変数に委ねるのではなく「型はオブジェクト自身で管理するのが望ましい」という設計思想がその背景にあります。
変数:代入モデル
メタファー「箱の中に物を入れる」を使って、変数の概念を解説しようとするモデルです。
以下の記述はどれも、同じ状態を表現しています。
- 「箱」を用意して、その中に「物」を「保管」する。
- 「変数」を用意して、その中に「オブジェクト」を「代入」する。
オブジェクトを入れるのに「必要な大きさの箱」が用意されるというものです。
変数:束縛モデル
メタファー「物に荷符を付ける」を使って、変数の概念を解説しようとするモデルです。
以下の記述はどれも、同じ状態を表現しています。
- 荷物にタグを付ける
- オブジェクトにタグを付ける
- オブジェクトは変数に「束縛」される
- 変数はオブジェクトを「束縛」する
束縛された状態のオブジェクトは、誰かが参照する可能性があるので、リサイクルの対象にはなりません。
■ Smalltalk 3分クッキング
- Smalltalk 3分クッキング《問1》四則演算, 1988.
- Smalltalk 3分クッキング《問2》フィボナッチ/トリボナッチ/テトラボナッチ, 1988.
- Smalltalk 3分クッキング《問3》エラトステネスのふるい, 1988.
- Smalltalk 3分クッキング《問4》ローマ数字, 1988.
- Smalltalk 3分クッキング《問5》逆ポーランド記法, 1988.
- Smalltalk 3分クッキング《問6》九九の表, 1988.
- Smalltalk 3分クッキング《問7》リストの平坦化, 1988.
》作業中です《