« iPhoneプログラミングの日本語書籍でた! | メイン | ノベルゲームを作るために »

2009年1月14日

変数についてどう説明するのがいいのだろうか

プログラミングの入門書を読むのが好きです。
プログラミングをまったく知らない人に、どうやって説明するのかというプロセスに興味があるのですね。
で、読んでいるとたいていの本で変数の説明として「箱」というメタファを出してくるのです。
変数は箱のようなもので、Aという箱に数値を入れてうんぬん......。
たしかに、分かりやすいことは分かりやすいんだけど、C言語のポインタでつまづく人が多いのって、この「箱」の例えが良くないんじゃないかなーと思った。
箱から、メモリのアドレスへと飛躍するのはなかなか難しいのではないでしょうか。

で、そんなことをつらつら考えていて、思いついたのが、変数ってのは「巻物のある場所に名前を書いた付箋を貼る」ことっていう説明の方法。

巻物があると思ってくださいよ。
結構長い巻物。
その頭から、10センチのところに「100」って数字を書いてみる。
で、そこに「A」って名前を書いた付箋紙をぺたんと貼るわけです。
これが、つまり、変数。
変数という箱に数値を入れるのではなくて、巻物(メモリ空間)に名前をつける(変数名)というアプローチ。
貼った位置がすなわちアドレス。
これなら、ポインタについて考えた時にもすっきりしそうな気がします。
張った位置をまた巻物の別の場所に書いて付箋を貼れば、それがポインタになる。

ま、これで、すべてがすっきりするかというとメタファであるという時点で、なんかいろいろ抜けもあったり実際とは違ったりとかは出てきちゃうのかもですけども。

ただ、今まで当たり前のように説明されてきたことを違う方向から考えるというのは楽しいなーと思いました。

投稿者 CHEEBOW : 2009年1月14日 11:46 このエントリーを含むはてなブックマーク

[ Software ]
【お知らせ】音楽に関することはこちらのブログで書いています。くじら音楽部::BLOG