Look at the Bright side of things

Anderson's Blog - since 2005

異端の数ゼロ

表題の本を今読んでいるのだが、ゼロにまつわることで困ってることがある。それはVBの配列宣言である。もともとarr(10)と宣言すると要素10の配列となるような環境で育ってきたので、VBを使う時についついその癖が出て、同じように宣言してしまって要素数が1個多くなってしまい、ループなどで変な結果を招来するのである。VBが間違ってるとかいう話ではなく、単なる決まり事なのだが、時々ごっちゃになってこんがらがってしまう。
私の頭の中では10個の配列を宣言すると、その配列の要素は0から始まり9で終わるのだが、VB系の場合は0から始まり10でおわる11個の配列になってしまうのである。配列の個数に基づいてループ処理をくむ際に10回まわるものだと思ってると11回まわってしまい、あれれ?ということになるのだ。
プログラムとゼロに関して、社会人になってプログラムを組むようになるまで、ゼロ割り算について意識したことがなかった。数学は苦手だったけれど、学校でゼロ割り算について習った記憶がない。プログラム実行時のエラーコメントでゼロ割り算エラーを出して初めて、ゼロで割ってはいけないのだと認識した。それも最初はプログラムの世界でのお約束なんだなと、大して考えもしなかったのだが、ある時、なぜいけないのかを考えてやっと理解した。
1を1で割れば1。0.01で割れば100。0.0001で割れば10000。ゼロに近づけば近づくほど答えは大きくなっていく。無限小で割れば答えは無限大になる。しかし無限小とゼロの間には決して近づくことのできない隔たりがある*1。そんなもので数を割ることはできない。ゼロで割ると答えが破綻するのではなく、ゼロでは割れないのである。
そう考えて初めてゼロの特殊性に気がついた。ゼロと無限はよく似ているが、ゼロに比肩しうる存在はない。分類するならばゼロかそれ以外かのみなのだ。計量としてゼロが存在しうるのかどうか、私にはわからないが、理念的なものであり自然界には存在し得ない状態なのかもしれないと思っている。

*1:これは誤り。無限小 = 0、らしい。