メタファの功罪 

ところで、↑の猫の話で書きたかったのは、「波とか粒子とかじゃなく、量子は量子」という論法です。
このように、メタファを使わずそれはそれと説明することは、暗黙知として量子というものの認識が深まっているからできるようになった説明じゃないかなと思うのです。


たとえば、旬は過ぎてしまったけどオシオマナブという人を知りたいときに「俳優だよ」と説明されてドラマを見てもなんだかパッとせず、「ミュージシャンだよ」といわれてライブビデオをみたところでなぜみんながさわぐのかわからず、やはりオシオマナブはオシオマナブとしてしか楽しめないのですが、それができるのもやはりまとめサイトなどが充実しているからで、そういうのがなければ、最初はやはり、「曲が終わったあとで変なセリフをいうミュージシャン」とかから入っていくしかないようなものです。


というのも、だいぶ前から、「変数を箱として説明するのはよくない」と思っていて、箱としてしまうと、複数入りそうに思ってしまうし、Javaの基本型でさえ箱が「空」の状態が想像できてしまうし、問題だよなと思ってたわけです。
「やさしいJava」ではint型の変数の箱に何も入っていない状態が書いてあります。
変数に「入れる」とか「代入する」というのも実態とずれてるし、Javaの「=」演算子はAssignment Operatorだし。


結論として、変数は他の何者でもなく変数だ、としてメタファを使わず説明するようにしていました。
ということで、「創るJava」では、変数は変数であるとして、箱だとかなんだとかに例えたりしていないし、箱のような3次元の入れ物を書かないようにしていたし、「変数に入れる」とか「代入する」という表現は一切使わないように気をつけているわけです。


でもこれは、IDEや開発環境のおかげというものも大きくて、「創るJava」で変数について軽くしか説明していないのも「変数なんか、うだうだ説明するより、デバッガで追ってみれば一発じゃん」というのがあるからです。
だから、変数がわかりませんといわれれば、箱とかなんとか説明するのではなくて、デバッガで追って実際の状態を見せるのです。
実際には変数が何かで悩む人はほとんどいなくて、そのあとの関数の方がよっぽど理解しにくいみたいなんですけど。


ちょっと難しい概念を説明するのに、メタファを使わずに「xxxは他のなにものでもないxxxだ」というには、社会的な成長というのが必要なんじゃないかなと思ってみたわけです。


ところで、本屋で、「新しいJavaの教科書」だとかいう、10年前から変わり映えのしない新しい本を見て、変数が箱で説明されているのを見ながら「しかたがないなぁ」と思っていたのだけど、変数の値をprintlnするときに「変数から値を取り出して」と説明してあって、変数が空になっている絵を見て、あたまがクラクラした。