29/8/11

Quote

シュレーディンバグ (Schroedinbugs)

シュレーディンバグは、特殊な状況下でバグが発覚してプログラマがソースを読むと、そもそも最初から動くはずがないように見え、それを境にして一切動作しなくなってしまうようなバグである。FOLDOCでは「そんなことはあり得ないように思えるが、潜在的なシュレーディンバグをかくまっているプログラムというのは実際にあるのだ」と書いている。

名前の由来はシュレーディンガーの猫と呼ばれる、量子論に関する思考実験である。しっかり書かれたプログラムは、安定した環境下では決定論や量子論的な可観測性に従った動作をするはずである。だが、そもそも最初の時点でどんな不思議な条件がそろって動作したのかや、動作しなくなった正確な理由を探り始めるよりも、目の前にある欠陥品コードを修正するほうがよい。突然動かなくなるなどという事は迷信なのだ。

たとえばデータベースを使ったプログラムで、レコード数が少ないときは正常に動いていたが、あるレコード数を超えると突然動かなくなったとする。それが原因だと分かっていないプログラマは、レコード数の増加という「普通な」原因を考えず、これはシュレーディンバグだと片付けてしまうかもしれない。

ハイゼンバグ同様、これはシュレーディンガーの思考実験を誤解した命名だ。猫の実験では蓋を開けたことが猫を殺したというのではなく、その明らかな不自然さを示すことがシュレーディンガーの真意だったからである。

« Previous Post Next Post »