这几个星期以来我断断续续地读完了Jack Copeland的图灵传。这本传记鲜活地重现了图灵生活的样貌, 以及他身边发生的故事。Copeland教授通过大量采访图灵身边的亲人,朋友,工作伙伴,获取了大量关于 图灵生活的第一手资料。他还通过对比其他研究图灵的文字资料,指出大众间对图灵认识的谬误。Copeland 文风近人但措辞严谨。特别是以简单文句介绍图灵生前最重要的学术成就,让即便是数学一般的人也能体会 到图灵工作的伟大。这本书不管是对非行内人,还是对想在计算机科学领域获得启发的人来说,都是很 值得一读的科普读物。毕竟我们都生活在信息时代之中,而这一切都得从1937年说起。

1937年图灵发表了论文《论可计算数和在可判定性问题上的应用》。这文章里详细描述了他理想中的一台 机器,由读写头和纸带构成。读写头可以在纸带上移动,读和写数字。图灵在论文中详细描述了如何利用 这台机器去尝试自动判断一些一阶谓词逻辑的真假。

很多人不理解,这样的意义何在?其实早在1928年,数学家希尔伯特就提问,是否有人能构建一套算法, 这套算法能够判断任意给定的一阶谓词逻辑的真假?这被称为可判定性问题。图灵构建的这套机器,拥有 能够运行一切算法的能力(无限内存)。然而图灵在论文中指出,有一部分的逻辑不能通过他的这个机器来 自动判断。比如,给定一个程序,是否能判定这个程序会打印出0?有一些程序会打印一些0,而另一些会 打印很多1,但过很久后会打印0,而还有一些程序却永远不会打印1。对于熟练的程序员而言,看一眼代 码可能就能判断出来,可是图灵却说,他的这台机器不能判断这个问题。

这就麻烦了,希尔伯特,20世纪初最被人尊崇的数学家说,世界是可定义的。给我一个算法,我能判断所有 (良构)问题的真假。然而图灵(和邱奇)却说,不,不是所有问题都是算法能够回答的。在这之前,哥德尔 还说,一个无矛盾的系统(一阶谓词逻辑就是)是不可能完备的。这些人几乎逆转了数学界的论调,从今天的 角度看来,倘若世界是希尔伯特可判定的,那么大部分理论数学家的工作都是在寻找那个通用算法,想来还 挺无聊的。

言归正传,图灵机的贡献可谓开天辟地,图灵在论文里描述了“通用图灵机”,甚至给出了一套驱动机器的“指令 集”。在第一台计算机还要再过十多年才能面世的1937年,图灵就已经给出了怎么造出一台这样机器的详细描述。 Copeland指出,对比看邱奇(同时发表可判定问题不可解的美国学者)和图灵的论文,很明显地看出邱奇注重 理论方面的发展,而图灵更注重他的机器到底该怎么实现。

二战期间,图灵参与盟军帮助破译纳粹德国由Enigma加密的电文。这部分的故事为大众熟知,2012年的电影 《模仿游戏》就是描述这段时期的图灵。图灵在这期间开发了一套方法来破译德军的电文,这套方法的第一步 需要进行大量的对比和计算工作。于是,工程师Tommy Flower和图灵合作,由图灵起草方案,由Flower负责 实现,开发出了真正的世界上第一台电子计算机Colossus。当时,Colossus使用的是”Valve”,其实就是 后来称的电子管。尽管Colossus开发时间早,其存在被官方视为机密,并在1960年前被完全拆解。因此大部 分教科书上把荣誉给了ENIAC,而准确来说Colossus才是第一台电子计算机。