パラドックスの続き

パラドックスが存在することは論理的に検証できません。正確にいうと、パラドックスが存在しないことを論理的に証明はできません。「プログラムが現実的におかしくない」ということを論理的に証明することはできないということです。
まさにゲーデル不完全性定理です。
ゲーデル不完全性定理は「ある体系が完全であれば、その体系に矛盾がないことを証明できない」というものですが、わかりやすくいえば「プログラムにコンパイルエラーがないとき、そのプログラムにバグがないことは証明できない」と言い換えることができます。
これは、形式的手法などを使っても不具合は発生すること、テストの完全自動化が不可能であることをあらわします。逆に、テストファーストというのは論理的な意味はほとんどないのですが、実際には効果をあげています。そういう意味では、ソフトウェアの品質保証というのは不完全性定理との戦いだといえなくもありません。


ようするに、ソフトウェアというのは論理的ではないところが難しいのです。「論理的であることを超えている」という意味で「超論理的」とか言うと、いろいろな誤解もまねいてかっこいいかも。