バグの哲学

『バグ』とはbug。英語で虫のことをさす。
コンピュータ用語にとってはプログラム中の間違いのことをさす。

プログラム中の間違いとは何か。

銀行のお金の管理と計算はコンピュータのプログラムによって行われている。
一億以上の預金口座が存在していると考えれば、百件くらいは残高が狂っていると考えてもおかしくない。
この残高を狂わせる原因をバグと呼ぶ。

バグは無いのが理想である。
残高が狂っているなんて世間に知られたら、その銀行の信用は無くなってしまうし、
信用がなくなれば倒産してしまう。
銀行で動作しているプログラムは厳重なテストを繰り返して、間違いを極力なくす。

それでも残高の狂いは無くならないと断言できる。

バグはプログラマの手によって無意識のうちに混入される。
そしてバグを発見・修正することもプログラマにしか出来ない。

私がコンピュータのプログラムを始めて、最初に体験したのは、
自分がいかに間違いを犯すか、であった。
人間は間違えるという現象は、プログラムを見直したときに、明らかに間違っていることで痛感する。
どんなに注意しても膨大なプログラムのリストの中では必ずどこかを間違える。
コンピュータのプログラムは、ドミノ倒しと同じ理屈で動いているので
どこか一個が外れていれば、止まってしまうのである。

これが飛行機であれば、操縦不能になり墜落を待つだけとなる。
絶対落ちない飛行機は存在しないし、絶対沈まない船も存在しない。
絶対間違えないプログラムも存在しないのである。

プログラムは人間が作ったもので、人間は必ず間違いを犯す。
「間違いが無い」というのは物理的に不可能で、哲学的にも不可能、
経験的にも全てのプログラマは間違いを体験している。
学歴も知能も関係なく、人間は平等に間違える。
宇宙の真理なのでだれも逆らえないのである。
バグのないプログラムを組めるのは神だけ。
間違えない人間は存在しない。
間違えのないプログラムも存在し得ない。

とはいうものの・・・
「間違えるのは当たり前なんですよ」と威張ってみたいが、世間は厳しい。
愚かな人間達は、間違いをプログラマの責任に転移する。
昔のプログラマはコンピュータが誤りを示すと、
機械の中に入った「ゴキブリ」のせいにして
オーナーの怒りをかわしていた。
「ゴキブリ」を取るふりをして、裏の方でプログラムの間違いを直していた。
「ゴキブリ」=BUG(虫)が語源である。
失礼、ゴキブリの件は私の作り話である。

さすがに間違いを連発するプログラマに業を煮やした管理者達は新しい知恵を付けた。
「デバック」である。

プログラミングには「デバック」という工程がくわえられている。
クルマで言うなら衝突実験やテスト走行のようなものである。
「デバック」はプログラムの間違いを探す作業で、それをプログラマに知らせることによって、
バグを直させるのである。

「デバック」を知らないプログラマがいたら、
「自分は絶対に間違えない」と言い切るプログラマがいたら、
それは素人のプログラマであるので充分注意されたい。

会社が傾いてからでは手遅れとなる。

つぎ

もどる