TabulaRasa

ほぼプログラミングの学習記録です

プログラミング言語の諸概念の解釈①:変数

これから何回かに分けてプログラミング言語(特にruby)に出てくる基本的な概念(変数やメソッドなど)について自分なりに考えたことをまとめていきたいと思います。なお、長ったらしい割にてんで間違いということもあるかもしれません。その時は許してくださいね。  

第一回は変数についてです。

 変数とは、特定の文字列や数値を抽象化するために用いる概念のことです。私たちは何かを覚えたり、考えたりするとっかかりを得るために、抽象化という作業を日頃行っています。
私たちは自分の家のコンロの火に直に触れるのは危険であることをよく知っています。なぜでしょうか?実験したことがあるから?
 人類は火の危険な側面ー高エネルギーをもって激しい痛みや死をもたらすーにそれを積極的に利用しようと試みるはるか以前から知っていたことでしょう。
そして、人類はまた「太陽光に長時間曝された岩」に触れると痛いということにもかなり早期から気づいていたはずです(気づけなかった種は淘汰されたことでしょう)。
ここで火と日光に長時間曝された岩の間には共通の性質を見出すことができます。それは熱いということです。表面上異なることがらから共通性を見出して概念化すること、このことを抽象化と呼ぶことにしましょう。
 抽象化することにはどんなメリットがあるのでしょうか?
冒頭で述べた通り、最大のメリットは覚えることと考えるのに必要なリソースを大幅に削減してくれることです。
コンロの話に戻りましょう。私たちは自分の家のコンロの火だけではなく、友人のA君家のコンロの火にもまた直に触れてはいけないということを知っています。一々~~の家のコンロの火を触っていけないと暗記して回っているのではありません。火は熱くて危険という論理だけが無意識レベルで存在していて、そしてそれだけ存在していれば十分なのです。また、コンロの火で十分時間熱した金属のスプーンに手を触れても危険はないでしょうか?ー危険です。触れたことはないですが分かります。それは「火→危険」というロジックではなく、「火(や熱を持った物)→熱い→危険」という抽象化を一枚噛ませることで、考えるとっかかりが得られ、上記のスプーンを直に触ってはいけないという結論を得ることができるのです。金属の熱放射に関して理工書をあさる必要はないのです。

 気づいたら説明が長くなっていました。。。
まとめると、変数とは数字や文字列を抽象化するための道具です。日常生活から乖離したものでは断じてないのです。