前三期我们用恩尼格码的制造与破解阐述了一个用机器战胜机器的故事。这也可以说是人们对计算机概念进行实践的一个起点。那么计算机的概念又是从何而来呢?本期我们回到20世纪初页,从一个数学的逻辑问题开始讲起。
1900年,德国数学家及逻辑学家大卫·希尔伯特在国际数学大会上发表了题为“数学问题”的演讲,并提出了23道当时待解决的数学问题。这份演讲中提到的23个问题大力推动了整个20世纪的数学发展,并被后世称为希尔伯特的23个问题。其中第十个问题提到,我们是否可以设计一个可行的过程,并通过有限次运算来判定任何多个未知数的整系数方程有无整数解。
为了进一步说明希尔伯特的构想,这里首先阐述一下其构想中提到的三个概念。一个是完备性,即所有数学理论都是可证明的。其次是一致性,即证明结果要么是对,要么是错,不能存在自我矛盾。最后是决定性,即是我们能通过一个可行的过程和有限次运算来证明数学理论。
这个问题在1931年得到了部分的解答。当时奥匈帝国数学家库尔特·哥德尔在他的论文中提到了一个非常重要的概念——不完备性理论。哥德尔用数学及逻辑学的方法证明出了希尔伯特决定问题中所提出的完备性与一致性无法共存于一个数学系统里。
在哥德尔解决了“希尔伯特判定性问题”中的完备性和一致性的不共存关系之后,这个问题便只剩下了决定性没有得到证明。于是这个问题便留到了五年后,在一篇名为“论可计算书机器判定问题上的应用”的论文中得到了最终的解答。没错,这就是图灵享誉世界很重要的一篇论文之一。
通过这两个定义的设定,希尔伯特的决定性问题就变成了:是否存在这样一个图灵机,使其能判定任意一个程序能否在有限时间内结束运行。这就演变成了另外一个重要的理论——停机理论。
至此希尔伯特最早提出来的让所有数学理论都能从数学家构建的公理中得到证明的这一概念被图灵证明了不可行。而图灵在证明整套理论中所提出来的图灵机的概念也为计算机体系结构及程序设计的发展奠定了基石。