厳密さのレベル

数学的厳密さは、理解する者を選り分ける篩である。生半可な理解では、細部まで厳密な証明は書けないからだ。

 

プログラミングにも同じことが言える。一般的な手続き型言語において、機械が認識する厳密さのレベルは、数学が厳密と呼ぶレベルとかなり似通っている。だから、理解のプロセスとして、証明とプログラムの執筆は同質だ――両者の諸概念の対応、といった難しい話を考えるまでもなく。

 

だが、数学にもプログラミングにももっと厳密な領域がある。証明を書くとき、人はいちいち集合論の公理に立ち返らない。同じように、プログラムをチューリングマシンに直接記述することはないし、中央演算装置の単位命令もほとんど意識されない。

 

だから本来、似ているのは両者の厳密さのレベルではない。人間の直感に合うように都合よく設定されたレベルが、たまたま一致しているにすぎないのだ。

 

これが偶然か必然か、それともこの一致が錯覚に過ぎないのか、そんなことはどうでもよい。ただ、数ある厳密さのレベルの中で私はここを理解と呼ぶ、そう宣言することで、私は態度の相対性を担保しようと思う。