1936年,图灵他在著名的论文《论可计算数在判断问题中的应用》中做出了一生中最重要的科学贡献(On Computer numbers with an Application to the Entscheidungs -problem)》一文中,以布尔代数[i]为基础,将逻辑任何命题(可用)数学符号)用一个通用的机器来表示和完成,并且可以根据某些规则得出结论。这篇论文被称为现代计算机原描述了一种可以实现通用计算的假设机器,后人称之为图灵机”。
冯·诺依曼 1903年12月28日出生于匈牙利,1957年2月8日死于美国。我想知道计算机 人们对他并不陌生。它可以被称为计算机之父。现在我们面前的计算机系统结构是以他命名的冯·诺依曼结构。 冯·诺依曼小时候很聪明。图灵(另一位伟大的计算机科学家)是普林斯顿大学数学系的研究生冯·诺依曼邀请图灵做他的助手,但图灵爱上了剑桥,没有像冯那样·诺依曼所愿,一年后,二战使图灵卷入战争,图灵1934年发表的论文On Computable Numbers with an Application to the Entscheidungs-problem”。在这篇论文中,图灵提出了通用机的概念,冯·诺依曼应该知道这个想法,至少不知道他是否应用了这个想法。冯·诺依曼很快发现,这种后来被称为计算机的通用机器的用途是解决一些实际问题,而不是装饰,因为战争·诺依曼开始接触到许多数学分支,这使得他有了使用机器计算的想法,尽管我们现在都知道第一台计算机ENIAC有他的努力,但在此之前,他遇到的第一台计算机是Harvard Mark I (ASCC)计算器。冯·诺依曼有着非凡的沟通能力,可以在不同的科学家中扮演中介角色,尽管这些科学家不想让别人知道他们的秘密。冯·诺依曼有着非凡的沟通能力,可以在不同的科学家中扮演中介角色,尽管这些科学家不想让别人知道他们的秘密。·诺依曼建造的机器名为诺依曼IAS国家实验室建造的一些计算机只是IAS只是机器的复本。战后冯·诺依曼继续致力于IAS机器开发有助于解决氢弹开发中的计算问题。他死后,它在计算机行业并不出名,以至于他的传记作家只为他的计算机做出了贡献。
该算法的输入是寻找算法–>所有描述数学问题的数学命题和语言信息,输出–>输出是或否取决于这个数学问题。该算法不需要对其结论给出任何其他证据,只需要给出是或否的答案,答案必须正确。这个问题来源于莱布尼兹(Gottfried Leibniz,是创造微积分的人之一,用高数折腾无数中国学生)。他建立了一个机械式计算机,想用来判断一个数学命题的真假。但他突然意识到需要一种规则的语言来清楚地描述数学命题,所以他忙于处理这个问题。当然,这个问题最终被证明是无法解决的。答案是Church和Turng两个人,他们分别从两个不同方向对这个问题的无解性给出了回答。
Church开创了一种 叫λ calculus的理论,用来定义“algorithm”,即什么是算法。
Turing推出了他的一个思想模型“图灵机”用来定义算法,后来被证明与Church的 λ calculus理论是等价的。
最后Church把Entscheidungs problem划归为自己的理论范畴内,并证明了这个问题的无解。Turing把图灵机的不可解问题——Halting Problem——约化成了Entscheidungs problem。
人们现在将Church和Turing的结论称为:Church-Turing Thesis。
Turing, A.M. (1936). On Computable Numbers, with an Application to the Entscheidungs problem. Proceedings of the London Mathematical Society. No.2, Vol.42: 230–65.
邱奇-图灵论题(The Church-Turing thesis)是计算机科学中以数学家阿隆佐·邱奇(Alonzo Church)和阿兰· 图灵 命名的论题。该论题最基本的观点表明,所有有计算或算法都可以由一台图灵机来执行。以任何常规编程语言编写都计算机程序都可以翻译成一台图灵机,反之任何一台图灵机也都可以翻译成大部分编程语言大程序,所以该论题和以下说法等价:常规的编程语言可以足够有效的来表达任何算法。该论题被普遍假定为真,也被称为邱奇论题或邱奇猜想和图灵论题。
论题之等价形式本论题的另外一种说法就是逻辑和数学中的有效或机械方法可由图灵机来表示。通常我们假定这些方法必须满足以下的要求: 一个方法由有限多多简单和精确的指令组成,这些指令可由有限多的符号来描述。 该方法总会在有限的步骤内产生出一个结果。 基本上人可以仅用纸张和铅笔来执行。 该方法的执行不需人类的智慧来理解和执行这些指令。 此类方法的一个范例便是用于确定两个自然数的最大公约数的欧基里德算法。 “有效方法”这个想法在直觉上是清楚的,但却没有在形式上加以定义,因为什么是“一个简单而精确的指令”和什么是“执行这些指令所需的智力”这两个问题并没有明确的答案。 (如需欧几里得算法之外的范例,请参见数论中的有效结果。)论题之起源在他1936年年的论文“论可计算数字,及其在判定性问题(Entscheidungsproblem--德语,译者注)中的应用”中,阿兰·图灵试图通过引入图灵机来形式地展示这一想法。在此篇论文中,他证明了“判定性问题”是无法解决的。几个月之前,阿隆佐·邱奇在“关于判定性问题的解释”(A Note on the Entscheidungsproblem)一文中证明出了一个相似的论题,但他采用但是递归函数和Lambda可定义函数来形式地描述有效可计算性。Lambda可定义函数由阿隆佐·邱奇和史蒂芬·克林(Stephen Kleene) (Church 1932, 1936a, 1941, Kleene 1935),而递归函数由库尔特·歌德尔(Kurt G?del)和雅克斯·赫尔不兰特(Jacques Herbrand) (G?del 1934, Herbrand 1932)提出的。这两个机制描述的是同一集合的函数,正如邱奇和克林(Church 1936a, Kleene 1936)所展示的正整数函数那样。在听说了邱奇的建议后,图灵很快就证明了他的图灵机实际上描述的是同一集合的函数(Turing 1936, 263ff).y论题之成功之后用于描述有效计算的许多其他机制也被提了出来,比如寄存器机器(register machine), 埃米尔·波斯特(Emill Post)的波斯特体系, 组合可定义性(combinatory definability)以及马可夫算法(Markov 1960)等。所有这些体系都已被证明在计算上和图灵机拥有基本相同的能;类似的系统被称为图灵完全。因为所有这些不同的试图描述算法的努力都导致了等价的结果,所以现在普遍认为邱奇.图灵论题是正确的。但是,该论题不据有数学定理一般的地位,也无法被证明;如果能有一个方法能被普遍接受为一个有效的算法但却无法在图灵机上允许,则该论题也是可以被驳斥的。在20世纪初期,数学家们经常使用一种非正式的说法即可有效计算, 所以为这个概念寻找一个好的形式描述也是十分重要的。当代的数学家们则使用图灵可计算 (或简写为可计算)这一定义良好的概念. 由于这个没有定义的用语在使用中已经淡去,所以如何定义它的问题几经不是那么重要了。论题之哲学内涵邱奇.图灵论题对于心智哲学(philosophy of mind)有很多寓意。有很多重要而悬而未决的问题也涵盖了邱奇.图灵论题和物理学之间的关系,还有超计算性(hypercomputation)的可能性。应用到物理学上,改论题有很多可能的意义: 宇宙是一台图灵机(由此,在物理上对非递归函数的计算是不可能的)。此被定义为大邱奇.图灵论题. 宇宙不是一台图灵机(也就是说,物理的定律不是图灵可计算的),但是不可计算的物理事件却不能阻碍我们来创建超计算机(hypercomputer)。比如,一个物理上实数作为可计算实数的宇宙就可以被划为此类。 宇宙是一台超计算机, 因为建造物理设备来控制这一特征并来计算非递归函数是可能的。比如,一个悬而未决的问题是量子力学的的事件是图灵可计算的,尽管我们已经证明了任何由qubit所构成的系统都是(最佳)图灵完全的。约翰·卢卡斯 (和罗格·本罗泽(Roger Penrose) 曾经建议说人的心灵可能是量子超计算的结果。 实际上在这三类之外或其中还有许多其他的技术上的可能性,但这三类只是为了阐述这一概念。 |
补充材料• Hofstadter, Douglas R., Gödel, Escher, Bach: an Eternal Golden Braid, Chapter 17.参考文献• Church, A., 1932, "A set of Postulates for the Foundation of Logic", Annals of Mathematics, second series, 33, 346-366.• Church, A., 1936, "An Unsolvable Problem of Elementary Number Theory", American Journal of Mathematics, 58, 345-363.• Church, A., 1936, "A Note on the Entscheidungsproblem", Journal of Symbolic Logic, 1, 40-41.• Church, A., 1941, The Calculi of Lambda-Conversion, Princeton: Princeton University Press.• Gödel, K., 1934, "On Undecidable Propositions of Formal Mathematical Systems", lecture notes taken by Kleene and Rosser at the Institute for Advanced Study, reprinted in Davis, M. (ed.) 1965, The Undecidable, New York: Raven.• Herbrand, J., 1932, "Sur la non-contradiction de l'arithmetique", Journal fur die reine und angewandte Mathematik, 166, 1-8.• Kleene, S.C., 1935, "A Theory of Positive Integers in Formal Logic", American Journal of Mathematics, 57, 153-173, 219-244.• Kleene, S.C., 1936, "Lambda-Definability and Recursiveness", Duke Mathematical Journal 2, 340-353.• Markov, A.A., 1960, "The Theory of Algorithms", American Mathematical Society Translations, series 2, 15, 1-14.• Turing, A.M., 1936, "On Computable Numbers, with an Application to the Entscheidungsproblem", Proceedings of the London Mathematical Society, Series 2, 42 (1936-37), pp.230-265.• Pour-El, M.B. & Richards, J.I., 1989, Computability in Analysis and Physics, Springer Verlag.
英国现代计算机的起步的是从纳粹德国的“谜”开始的。“谜”(Enigma)是一种密码电报机,由德国人在一战和二战之间研制成功。“谜”能把日常语言变为代码,通过无线电或电话线路秘密传送。它是一个木箱子,配有一台打字机,箱上有26个闪烁不停的小灯泡,与打字机键盘的26个字母相对应。“谜”的设计无懈可击,有一套极精密的解码设置,非一般的电报密码所能比拟。在内行人看来,平白如话,但在旁人,又是无从索解的天书。因此,这台看似平常的机器,有了“谜”的称号。这样,德国的“谜”引起了英国情报部门高度的兴趣。常规的解码方式奈何不了“谜”,怎么办?
这时,天才的数学家图灵出现了。1931年图灵进入剑桥大学国王学院,开始了他的数学天涯。一到那里,图灵开始崭露头角,毕业后去美国普林斯顿大学攻读博士学位,在那里就发明过一个解码器(Encipher),二战爆发后回到剑桥。
在剑桥,图灵是一个妇孺皆知的怪才,常有出人意表的举动。他每天骑自行车到离公寓3公里的一个叫布雷奇莱公园(Bletchley Park)的地方上班,因常患过敏性鼻炎,一遇花粉,鼻涕不止,图灵就常戴防毒面具骑车上班,招摇过市,成为剑桥的一大奇观。
他的自行车链条经常在半道上掉落,要是换了别人,早就去车铺修理了。而图灵偏不,他在琢磨,发现这链条总是踏到一定的圈数时下滑,图灵在骑车时就特别留心计算,于是能做到在链条下滑前一刹那戛然停车!让旁人叹服不已,以为是在玩杂耍。后来他居然在踏脚旁装了一个小巧的机械计数器,到圈数时就停,好换换脑筋想些别的问题。图灵的脑袋转得比自行车飞轮还快。
用图灵的脑袋来破译德国的“谜”看来不是什么难事。二战爆发后,图灵成为英国外交部通信部门战时公务员,主要负责解码。他果然不负众望,成功破译了“谜”。而德国人还蒙在鼓里,还以为他们的“谜”能一直迷下去,照用不误,泄露了大量的核心机密,在战事上屡屡遭挫,战后,图灵被授予帝国勋章。至于图灵如何破译“谜”的,由于英国政府严格的保密法令,一直没有公之于世。所以图灵破译“谜”也成为一个“谜”。
早在30年代初,图灵就发表了一篇著名的论文《论数字计算在决断难题中的应用》,他提出了一种十分简单但运算能力极强的理想计算装置,用它来计算所有能想象得到的可计算函数。它由一个控制器和一根假设两端无界的工作带组成,工作带起着存储器的作用,它被划分为大小相同的方格,每一格上可书写一个给定字母表上的符号。控制器可以在带上左右移动,控制带有一个读写头,读写头可以读出控制器访问的格子上的符号,也能改写和抹去这一符号。
这一装置只是一种理想的计算模型,或者说是一种理想中的计算机。正如飞机的真正成功得力于空气动力学一样,图灵的这一思想奠定了整个现代计算机的理论基础。这就是电脑史上与“冯·诺依曼机器”齐名的“图灵机”。
图灵机被公认为现代计算机的原型,这台机器可以读入一系列的零和一,这些数字代表了解决某一问题所需要的步骤,按这个步骤走下去,就可以解决某一特定的问题。这种观念在当时是具有革命性意义的,因为即使在50年代的时候,大部分的计算机还只能解决某一特定问题,不是通用的,而图灵机从理论上却是通用机。在图灵看来,这台机器只用保留一些最简单的指令,一个复杂的工作只用把它分解为这几个最简单的操作就可以实现了,在当时他能够具有这样的思想确实是很了不起的。他相信有一个算法可以解决大部分问题,而困难的部分则是如何确定最简单的指令集,怎么样的指令集才是最少的,而且又能顶用,还有一个难点是如何将复杂问题分解为这些指令的问题。
此后图灵在国家物理学实验室(NPL)工作,并继续为数字式计算机努力,在那里人发明了自动计算机(Automatic Computing Engine,ACE),在这一时期他开始探索计算机与自然的关系。他写了一篇名为《智能机》的文章于1969发表,这时便开始有了人工智能的雏形。
图灵相信机器可以模拟人的智力,他也深知让人们接受这一想法的困难,今天仍然有许多人认为人的大脑是不可能用机器模仿的。而在图灵认为,这样的机器一定是存在的。图灵经常和其它科学家发生争论,争论的问题就是机器实现人类智能的问题,在今天我们看来这没有什么,但是在当时这可不太容易被人接受。他经常问他的同事,你们能不能找到一个计算机不能回答的问题,当时计算机处理多选问题已经可以了,可是对于文章的处理还根本不可能,但今天的发展证明了图灵的远见,今天的计算机已经可以读写一些简单的文章了。
图灵相信如果模拟人类大脑的思维就可以做出一台可以思考的机器,它于1950写文章提出了著名的“图灵测试”,测试是让人类考官通过键盘向一个人和一个机器发问,这个考官不知道他现在问的是人还是机器。如果在经过一定时间的提问以后,这位人类考官不能确定谁是人谁是机器,那这个机器就有智力了。这个测试在我们想起来十分简单,可是伟大的思想就源于这种简单的事物之中。
现在已经有软件可以通过图灵测试的子测试,软件这个人类智慧的机器反映应该可以解决一些人类智力的问题。在完成ACE之前,图灵离开了NPL,它在曼彻斯特大学开发曼彻斯特自动计算机(Manchester Automatic Digital Machine,MADAM)。他相信在2000年前一定可以制造出可以模拟人类智力的机器,图灵开始创立算法,并使用MADAM继续他的工作。
图灵对生物也十分感兴趣,他希望了解生物的各个器官为什么是这个样子而不是那个样子,他不相信达尔文的进化论,他觉得生物的发展与进化没什么关系。对于生物学,他也用它钟爱的数学进行研究,它的研究对他进行计算机的研究有促进作用。它把生物的变化也看做是一种程序,也就是图灵机的基本概念,按程序进行。最后,这位伟大的计算机先驱于1954年6月7日去世,他终生未娶。
约翰.麦卡锡 --"人工智能之父"和LISP语言的发明人1971年的图灵奖授予提出"人工智能"这一术语并使之成为一个重要的学科领域的斯坦福大学教授约翰. 麦卡锡( John McCarthy)。 麦卡锡1927年9月4日生于波士顿。他的父亲是一个爱尔兰移民,做过木匠和渔夫,同时也是一个发明家和工会积极分子,拥有捻船缝机和桔汁冷冻机两项专利。麦卡锡的母亲是来自立陶宛的犹太人,热心于*女*权运动,当过记者。夫妻两人在20世纪30年代都曾参加美国gcd。受父母的影响,麦卡锡对社会问题也比较关注,参与过在加州的Palo Alto 创办自由大学的活动,倡议过修改"人*权*法*案"(the Bill of Rights,这是美国于1789年通过的对美国宪法的第一次修正案)。但与他在计算机科学上所做的工作和贡献相比,麦卡锡主要还是一个科学家而非社会活动家。此外,麦卡锡还喜欢攀登、跳伞、驾驶滑翔机等有刺激性和危险性的运动,曾和他的第二任妻子维拉.沃特森(Vera Watson)一起攀登过世界上不少大山高峰。沃特森是一位程序员,也是世界知名的女登山运动员,是第一位独自攀上西半球第一高峰、位于阿根廷和智利边界的安第斯山脉的阿空加瓜山(海拔6960米)的女性,后来在一次攀登位于尼泊尔中部的阿那波尔那峰(海拔8 075米)的妇女探险活动中不幸遇难牺牲。 麦卡锡是一个天赋很高的人,还在上初中时,他就弄了一份加州理工大学的课程目录,按目录自学了大学低年级的高等数学教材,做了教材上的所有练习题。这使他1944年进入加州理工学院以后可以免修头两年的数学,并使他虽因战时环境(第二次世界大战当时正在进行之中,美国也在珍珠港事件后宣布参战)要在军队中充任一个小职员,占去了部分时间,仍得以在1948年按时完成学业。然后到普林斯顿大学研究生院深造,于1951年取得数学博士学位。麦卡锡留校工作两年以后转至斯坦福大学,也只呆了两年就去达特茅斯学院任教(达特茅斯学院位于新罕布什尔州的汉诺威)。在那里,他发起了并成功举办了成为人工智能起点的有历史意义的"达特茅斯会议"。1958年麦卡锡到MIT任职,与明斯基(L. Minsky,1969年图灵奖获得者)一起组建了世界上第一个人工智能实验室,并第一个提出了将计算机的批处理方式改造成为能同时允许数十甚至上百用户使用的分时方式(time-sharing)的建议,并推动MIT成立组织开展研究。其结果就是实现了世界上最早的分时系统--基于IBM 7094的CTSS和其后的MULTICS。麦卡锡虽因主持该课题的负责人产生矛盾而于1962年离开MIT重返斯坦福,未能将此项目坚持到底,但学术界仍公认他是分时概念的创始人。麦卡锡到斯坦福后参加了一个基于DEC PDP -1的分时系统的开发,并在那里组建了第二个人工智能实验室。 麦卡锡对人工智能的兴趣始于他当研究生的时候。1948年9月,他参加了一个"脑行为机制"的专题讨论会,会上,冯.诺伊曼发表了一篇关于自复制自动机制论文,提出了可以复制自身的机器的设想,这激起了麦卡锡的极大兴趣和好奇心,自此就开始尝试在计算机上模拟人的智能。1949年他向冯.诺伊曼谈了自己的想法,后者极表赞成和支持,鼓励他搞下去。在达特茅斯会议前后,麦卡锡的主要研究方向是计算机下棋。下棋程序的关键之一是如何减少计算机需要考虑的棋步。麦卡锡经过艰苦探索,终于发明了著名的α-β搜索法中,麦卡锡将结合的产生与求评价函数值(或称返上值或倒推值)两者巧妙地结合起来,从而使某些子树结点根本不必产生与搜索(这谓之"修剪"--pruning或cutoff)。之所以称为α-β搜索法,是因为将处于取最大值级的结点的返上值或候选返上值PBV(Provisional Back-up value)称为该结点的α值,而将处于取最小值级的结点的候选返上值或返上值称为该结点的β值。这样,在求得某结点以下的α值时,就可与其先辈结点的α值相比较,若α≥β, 则可终止该结点以下的搜索,即从该结点处加以修剪,这叫β修剪;而在求得某结点以下的β值时,就可与其先辈结点的α值相比较,若β≤α,则可终止该结点以下的搜索,即从该结点处加以修剪,这叫α修剪。为了说明α-β修剪,我们举一个最简单的例子。设在取火柴棍的游戏中,A、B两人轮流从N根火柴中取1根或2根,不得多取,也不能不取。取走最后一根火柴者胜。用A(n)、B(n)表示轮到A或B时有n根火柴的状态,当n = 5时轮到A取,则如下图所示,A有两种可能,一是取2根火柴进入B(3),另一是取1根火柴进入B(4)。显然,进入B(3)后,不管B取几根,A必胜,故A必走这一步,余下的分支不必再搜索了。α-β搜索法至今仍是解决人工智能问题中一种常用的高效方法。 至于达特茅斯会议,当东道主的麦卡锡是主要发起人,另外3个发起人是当时在哈佛大学的明斯基(1969年图灵奖获得者),IBM公司的罗杰斯特(N. Rochster),信息论的创造人香农。麦卡锡发起这个会议时的目标非常宏伟,是想通过10来个人2个有共同努力设计出一台具有真正智能的机器。会议的经费是洛克菲勒基金会资助的,包括每个代表1200美元加上外地代表的往返车票。会议的原始目标虽然由于不切实际而不可能实现,但由于麦卡锡在下棋程序尤其是α-β搜索法上所取得的成功,以及卡内基-梅隆大学的西蒙(H. A.Simon)和纽厄尔(A. Newell,这两人是1975年图灵奖获得者)带来了已能证明数学名著《数学原理》一书第二章52个定理中的38个定理的启发式程序"逻辑理论家"LT(Logic Theorist),明斯基带来的名为Snarc的学习机的雏形(主要学习如何通过迷宫),这使会议参加者仍能充满信心地宣布"人工智能"这一崭新学科的诞生。 1959年,麦卡锡基于阿隆索.邱奇(Alonzo Church)的λ-演算和西蒙、纽厄尔首创的"表结构",开发了著名的LISP语言(LISt Processing language),成为人工智能界第一个最广泛流行的语言。LISP是一种函数式的符号处理语言,其程序由一些函数子程序组成。在函数的构造上,和数学上递归函数的构造方法十分类似,即从几个基本函数出发,通过一定的手段构成新的函数。LISP语言还具有自编译能力。具体说来,LISP有以下几个主要特点: 1.计算用的符号表达式而不是数; 2.具有表处理能力,即用链表形式表示所有的数据; 3.控制结构基于函数的复合,以形成更复杂的函数; 4.用递归作为描述问题和过程的方法; 5.用LISP语言书写的EVAL函数既可作为LISP语言的解释程序,又可以作为语言本身的形式定义; 6.程序本身也同所有其他数据一样用表结构形式表示。 已经证明,LISP的这些特点是解决人工智能核心问题的关键。此外,精巧的表机制也是进一步简化LISP程序设计的方便而有力的工具,因此,LISP自发明以来,已经被广泛用于数学中的符号微积分计算,定理证明,谓词演算,博奕论等领域。它和后来由英国伦敦大学的青年学生柯瓦连斯基(R. Kowaliski)提出、由法国马赛大学考尔麦劳厄(A. Colmerauer)所领导的研究小组于1973年首先实现的逻辑式语言PROLOG(PROgramming in LOGic)并称为人工智能的两大语言,对人工智能的发展起了十分深远的意义也吸引了负责设计Algol语言的国际委员会,麦卡锡因此而被吸收为该委员会的成员。Algol中后来采纳了LISP关于递归和条件表达式这些思想。 麦卡锡在20世纪50年代末研究的另一个课题是如何程序能接受劝告从而改善其自身的性能。为此他提出过一个名为Advice Taker的系统的设想。有资料说,这是世界上第一个体现知识获取工具思想的系统,1968年建成。实际上,这个系统并未最后完成,只是完成了一部分,用LISP语言建立起了一个具有常识(common sense)的软件,能理解告诉它的是什么,并能评估其行动的后果。但正是在Advice Taker的开发过程中,启发麦卡锡提出了用"分时系统"代替"批处理系统"的建议,使计算机的使用方式引发了一场革命。 除了人工智能方面的研究和贡献这外,麦卡锡也是最早对程序逻辑进行研究并取得成果的学者之一。1963年他发表的论文"计算的数学理论的一个基础"一文(收录于P. Braffort和D. Hirschberg编辑的《计算机程序设计和形式系统》--Computer Programming and Formal Systems, North Holland, 33-70页)集中反映了他这方面的成果。麦卡锡在这篇论文中系统地论述了程序设计语言形式化的重要性,以及它同程序正确性、语言的正确实现等问题的关系,并提出在形式语义研究中使用抽象语法和状态向量等方法,开创了"程序逻辑(logics of programs)研究的先河。程序逻辑就是一种"语言",用这种语言可以无二义地表达程序的各种性质,其语义规定了该语言中各种表达式的意义,而它的一组规则则用同意义相关的方式去操作这些表达式以计算该语言中的各种断言(assertation)的真值。研究程序的逻辑对于帮助人们了解软件是否合理十分重要,它可以用于程序的逻辑对于帮助人们了解软件是否合理十分重要,它可以用于程序验证(program verification),自动程序设计,为优化和审计而进行的程序分析等方面。麦卡锡在上述论文中提出的方法是用递归函数作为程序的模型。他以两个链表(list)的"附加"(append)操作为例说明可以用递归的方法定义这个函数,并可以用形式化的方法证明链表的附加操作是满足结合律的(associative law ),即x @ (y @ z) = (x @ y) @ z。麦卡锡进而证明了用一系列递归定义的函数就完全可能建造大型的软件系统,并用归纳法证明这些系统所具有的性质。麦卡锡所提出的方法是有关程序逻辑研究中第一个比较系统而成熟的方法,曾被广泛地采用。 20世纪70年代以后,麦卡锡又开始研究非单调逻辑。在经典逻辑中,由已知事实推出的结论,决不会在已知事实增加时反而丧失其有效性,因此是"单调的"(monotonic)。但在人类思维过程中,由于信息的不完全和认识的局限性,常常有随着事物的发展变化,原有结论被否定和取消的情况,这就导致了所?"非单调逻辑"(nonmonotonic logic)。非单调逻辑中有一类是基于最小化语义的最小化非单调逻辑。1980年,麦卡锡在一篇论文中提出了"限制逻辑"或称"限界逻辑",成为这类非单调逻辑中比较成功的一个体系(见J. McCarthy:Circumscription--a form of nonmonotonic reasoning. Artificial Intelligence ,Vol.13,1980,27-39页)。限制逻辑的基本思想是:"限制"某个谓词P也就是排除以P的原有事实为基础所建立的大部分模型,而只保留有关P的最小模型。这与人类思考问题时总是在某些条件限制下考虑,也就是只考虑所涉及的个体或关系,而决不去涉及其他个体或关系,是比较相符的。1986年,麦卡锡在AI杂志上就限制逻辑的应用发表了进一步的研究论文:"限制逻辑在常识知识形式化中的应用"(Applications of Circumscription to Formalizing Common Sense Knowledge, AI, Vol.28,1986,89-116页),对倡导常识推理和常识研究起了十分重要的作用。 麦卡锡的主要著作有: 《自动机研究》(Automata Studies, Princeton Uni. Pr.,1956,与香农合编) 《信息学:科学美国人之书》(Information:A Scientific American Book, Freeman, 1966) 《形式化的常识:麦卡锡论文选集》(Formalizing Common Sense:Papers by John McCarthy , Ablex Pub. Co., 1990, 蒝. Lifschitz 编辑) 除了获得图灵奖以外,麦卡锡在1988年获得由日本INAMORI基金会所设立的KYOTO奖,这个奖主要奖励在高科技方面作出杰出贡献的科学家,麦卡锡是这个奖的第5位获得者。1990年麦卡锡获得美国全国科学奖章 (National Medal of Scien- -ce)。 麦卡锡的图灵奖演说题为"人工智能研究的现状"(The Present State of Research on Artificial Intelligence)。但不知什么原因,这篇演说没有发表。在《前20年的图灵奖演说集》(ACM Turing Award Lectures--The First 20 Years:1966-1985 ,ACM Pr.)中,则以"附录"(postscript)的形式约请麦卡锡另写了一篇"人工苣一般原理"(Generality in Artificial Intelligence),刊于该书257-268页。 麦卡锡现仍在斯坦福大学计算机科学系任教,其电子信箱为: jmc@cs.stanford.edu 出自《ACM图灵奖——计算机发展史的缩影》(高等教育出版社)
Rule of Simplicity (by C.A.R. Hoare) - -"There are a number of ways of constructing a software design.One way is to make it so simple that there are obviously no deficiencies,and the other way is to make it so complicated that there are no obvious deficiencies." -- C.A.R. Hoare
查尔斯·霍尔
---从QUICKSORT、CASE到程序设计语言程序设计语言的公理化
学过“数据结构”或“算法设计与分析”的人都知道著名的快速排序算法QUICKSORT;编过程序的人大概也都用过实现条件转移的最方便的语句CASE语句。但是你知道这个算法和这个语句是谁发明的吗?它们的发明者就是1990年IEEE计算机先驱奖和1980年图灵奖的获得者英国牛津大学计算机科学家查尔斯·霍尔(Charles AntonyRichard Hoare)。当然霍尔之所以获得这两项大奖决不仅仅是因为他发明了QUICKSORT和CASE,而是因为他在计算机科学技术的发展中,尤其是在程序设计语言的定义和设计、数据结构和算法、操作系统等许多方面都起了重要的作用,有一系列发明创造,QUICKSORT和CASE只是其中的一小部分而已。
霍尔于1934年1月11日诞生于英国南部。在坎特伯雷(Canter·bury)的国王学校(King’s Sch001)度过中学阶段以后,进入牛津的莫顿学院(Merton College)学习数学,1960年取得硕士学位。之后他进入伦敦一家不大的计算机生产厂家Elliott Brothers公司,为该公司的Elliott 803计算机编写库子程序,从此开始他的计算机生涯。QUICK,SORT就是他在那个时候用原有的SHELLSORT(以算法的发明人D.L.Shell命名的通过调换并移动数据项实现排序的一种算法,发明于1959年)编程时分析了它的缺点而发明出来的。QUICKSORT具有“快刀斩乱麻”的特点,能迅速地对乱序作大幅度调整,特别适合于因多次追加、删除而变得杂乱无章的数据集合。QUICKSORT是利用“分治法”(divide and conquer)进行算法设计的一个成功范例,它的发明是霍尔在计算机方面的天才的第一次显露,受到老板的赞赏和重视。第二年,霍尔接受了一个新的任务,为公司的新机型Elliott 503设计一个新的高级语言。但就在其时,他弄到了一份Algol 60报告的复印件,还参加了一个由狄克斯特拉(E.W.D耻stra,首届计算机先驱奖获得者)等人在布赖顿举办的Algol 60培训班,感到与其自己没有把握地去设计一个新的语言,还不如将比较成熟的Algol 60在Elliott 503上加以实现。霍尔和他的同事们的这个想法获得公司同意以后,由霍尔主持设计与实现了Algol 60的一个子集的版本。霍尔在开发初首先制定了明确的目标,即系统要安全可靠,生成的目标码要简洁,工作区数据要紧凑,过程和函数的人口和出口要清晰、严密等,还明确了整个编译过程采用一次扫描等原则。这样,ElliottAl-gol的开发十分顺利与成功,它在1963年中推出以后大受欢迎,成为世界各国所开发的Algol 60的各种版本中在效率、可靠性和方便性等方面的性能指标都首屈一指的一个版本,霍尔本人也从此受到国际学术界的重视。国际信息处理联盟IFIP后来任命霍尔为2.1工作组(WorkingGroup 2.1)的负责人,这个工作组的任务是维护和发展Algol。霍尔果然不负众望,主持设计了Algol X以继承与发展Algol60。正是在AlgolX的设计中,霍尔发明了CASE语句。CASE语句具有如下形式的语法结构:
CASE E of
C1:S1;
C2:S2;
.
.
.
Cn-1:Sn-1;
Otherwise:Sn
End
其中E是一个表达式,称为“选择子”(Selector),每个Ci的值为常数,称为“分情形标号”,Si则为可执行语句。CASE语句的含义是:若E的值等于某个Ci的值,则执行其后的Si(i=1,2,3,…,n—1),否则执行Sn。某个Si或S。执行完之后,整个CASE语句也就执行完毕。由于CASE语句构成多路分支,程序结构清晰、直观,所以CASE语句后来几乎成为程序设计语言的标准,被各种语言广泛采用。在C语言中,没有独立的CASE语句,但它的SWITCH语句(开关语句)实际上是在CASE语句的基础上形成的:
switch E
{case C1:S1;
case C2:S2;
.
.
.
case Cn-1:Sn-1;
[default:Sn]
不同之处有二:一是C;可以是表达式,但计算结果必须仍是常数;二是E的结果若不等于某个Ci(i=1,2,3,…,n—1)的值,则视有无default子句,若有,执行Sn;若无,则什么也不执行,控制转向SWITCH后的语句。显然,这些都是对CASE语句的进一步改进。
霍尔于1968年离开Elliott,离开产业界,原因是作为学者他对程序设计浯言的形式化定义这类更偏重于学术性和理论性的课题更感兴趣。离开Elliott以后,他任职过一年英国国家计算中心主任,发现自己也不适于从事行政管理,因此又转入爱尔兰的昆土大学(Queen’s University),从事教学和研究,1977年转入牛津大学。离开Elliott以后,霍尔在计算机科学理论的研究中发挥其特长,作出了许多创造性的重大贡献。首先是1969年10月,霍尔在Communications of ACM上发表了他那篇有里程碑意义的论文“计算机程序设计的公理基础”(An Axiomatic Basis for Computer Programming)。在这篇论文中,霍尔提出了程序设计语言的公理化定义方法,即公理语义学(axiomatic semantics),也就是用一组公理和一组规则描写语言应有的性质,从而使语言与具体实现的机器无关,而且也易于证明程序的正确性。这是继麦卡锡(J.McCarthy,1985年计算机先驱奖获得者)在1963年提出用递归函数定义程序、弗洛伊德(R.W.Floyd,1991年计算机先驱奖获得者)在1967年提出基于程序流程图的归纳断言法以后,在程序逻辑研究中所取得的又一个重大技术进展。霍尔提出的方法在逻辑上与弗洛伊德提出的方法类似,但不是用流程图而是用代数法,即控制流用以下一些结构表示:
begin al;a2;a3;…;an end
if p then a1 else a2
while p do a
后面为了方便,我们用到第一个结构时省略首尾的begin和end。
相应于弗洛伊德的验证条件,霍尔引入下列符号:
p{a}q
其意义是:如果在执行。之前P(叫做precondition)成立,则当α执行完了后q(叫做postcondition)成立。
霍尔给出了以下一组证明规则(proof rule)或叫推导规则:
p’ pp{a}qq→q’
1.
p’{a}q’
这个规则中的p’→和q’→q是普通数理逻辑中的断言命题,表示若p’(或q’)成立,则p(或q)成立。这个规则表示,若横线以上的p’→p、p{a}q、q→q’成立,则横线以下的p’{a}q1成立。
2.
P(e){x:=e}p(x)
这个规则表示,如果在将e赋给x之前p(e)成立,则其后p(x)成立。
3. P{a}qq{b}r
p{a;b}r
这个规则表示的是“传递律”(transitive law),即如果执行α之前p成立,α执行完了以后q成立;而如果执行b之前q成立,b执行完了以后r成立,则若在动作序列。和^执行之前P成立,则a和b执行完了以后r成立。
4. p∧r{a}qp∧~r(b)q
p{if r then a else b}q
这个规则中的∧和~是一般数理逻辑中的合取(conjunction)和否定(negation)连接词。这个规则定义了if-then-else的执行取决于precondition r的值。
5. p∧q{a}p
p{while q do a}p∧~q
这个规则定义了while循环:p是循环不变量(loop invariant),而q是终止循环的条件。
下面我们举一个例子说明如何用霍尔建立的系统验证程序的正确性。设有计算n的阶乘n!的如下程序:
A: x:1;B
B: while y>0 do C
C: x:y×x;y:=y-1
则通过下列霍尔断言可以证明上述程序是正确的,因为这些断言都是真的,而且在霍尔的系统中是可以被证明的,而最后一个断言正是我们所要寻求的结论,因此它们形成对上述阶乘程序正确性的说明。
i. y>0∧x×y! =n! {x:=y×x}y>0∧x×(y-1)! =n!
[首先y>0∧x×y! =n!→y>0∧(y×x)×(y-1)! =n!]
然后用规则(2),用x代替y×x]
ii. y>0∧x×(y-1)! =n!{y:=y-1}y≥0∧x×y! =n!
[类似(i),利用规则(2)]
iii.y>0∧x×y! =n! {C}y≤0∧x×y! =n!
[对(i)和(ii)用规则(3)]
iv.Y≥0∧y=n∧x=1{B}x=n!
[因为] y=n∧x=1→x×y! =n!
又因为0! =1,所以Y≥0∧x×y! =n! ∧y≤0→y=0∧x=n! →x×y! =n!
根据(iii),利用规则(5),令(5)中p=y≤0∧x×y! =n!,q=y>0,孥可得(iv)]
v. y≥0∧y=n{x:=1}y≥0∧y!=n∧x=1
[因为p{x:=1}p∧x=1]
vi. y≥0∧y=n{A}x=n!
[对(V)和(Vi)利用规则(3)]
因为(vi)中的precondition正好是n的初始条件,而postcondition给出了所需结果,这样就证明了程序可算出n!。
为了给出证明,应该从程序的最后一行开始逐步后推。在这个例子中,(iii)步是最关键的,其中y≥0∧x×y! =n!就是循环不变量或归纳假设(induction hypothesis)。
利用霍尔提出的这种方法,已经成功地描述了PASCAL等语言,说明了这个方法的巨大威力。但应该指出的是,霍尔的这个方法是不完备的,因为霍尔在开发和建立这个系统时并没有追求系统的完备性,而更多地追求系统的实用性。
在数据类型、数据结构和操作系统设计等方面,霍尔也做了许多开创性的工作。目前广泛流行与应用着的许多概念都源于霍尔的工作。例如,关于抽象数据类型的规格说明(Specification,也叫规约)与其实现是否一致,就是由霍尔于1972年公式化了的。霍尔通过前后断言方法用已经定义了的(抽象)数据类型给出所要定义的新类型的抽象模型,这成为抽象数据类型规格说明的两种主要方法之一,即模型方法(另一方法为基于异调代数理论的代数方法)。对于操作系统的设计与实现十分关键的monitor(监控程序)的概念也是霍尔首先提出,并界定了它的作用与功能,即作为操作系统的核心,在把操作系统看做虚拟机扩充时,monitor是硬件的第一次扩充,它完成中断处理、进程控制与进程通信、存储区动态分配,建立软时钟,驱动设备通道,进行处理机调度。monitor为外面各层的设计提供良好的环境,并提高系统的安全性。
20世纪70年代后期,霍尔又深入研究了运行在不同的机器上的若干个程序之间如何互相通信、互相交换数据的问题,实现了面向分布式系统的程序设计语言CSP。在该语言中,一个并发系统由若干并行运行的顺序进程组成,每个进程不能对其他进程的变量赋值。进程之间只能通过一对通信原语实现协作:Q?x表示从进程Q输入一个值到变量x中;P!e表示把表达式e的值发送给进程户。当户进程执行Q?x,同时口进程执行户!‘时,发生通信,e的值从Q进程传送给户进程的变量x。CSP语言后来成为著名的并行处理语言OCCAM(由INMOS公司为Transputer开发)的基础。20世纪80年代中期,霍尔又和布鲁克斯(S.Brooks)等人合作,提出了“CSP理论”TCSP(Theory Of Communicating Sequential Processes),它与上述CSP不同,但又有联系,这是一个代数演算系统,其基本成分是事件(或动作)。进程由事件和一组算子构造而成。TCSP采用“广播式通信”,而不像程序设计语言CSP中那样采用握手式通信,即只有当并行运行的各进程都执行同一动作时,才发生通信。此外,TCSP采用失败等价作为确定进程等价的准则,这就是著名的“失败语义”。利用失败可以构造TCSP的指称模型。霍尔为失败等价建立了一些公理系统,可以对语义上的等价关系进行形式推导。霍尔在这方面的工作开创了用代数方法研究通信并发系统的先河,形成了所谓“进程代数”(process algebra)这一新的研究领域,产生了很重要的影响。
霍尔的论著极多,而且都很有份量,有很高的学术水平。有评论说,霍尔每发表一篇论文,几乎就要改变一次人们对程序设计的认识。这虽然是一种夸张的说法,但也说明霍尔的论著确实非常重要。ACM在1983年评选出最近四分之一个世纪中发表在Communications of ACM上的有里程碑式意义的25篇经典论文,只有两名学者各有2篇论文人选,霍尔就是其中之一(另一名是首届计算机先驱奖获得者狄克斯特拉)。霍尔人选的两篇论文分别是1969年10月的“计算机程序设计的公理基础”(An Axiomatic Basis for Computer Programming,这篇论文的要点我们前面已经介绍过了),另一篇是1978年8月的“通信顺序进程”(Communicating Sequential Processes),该论文奠定了前述CSP语言的基础。CSP现在已推广为“混合通信/顷序进程”(Hybrid Communicating Sequential Processes)。在这个语言中,有一种特殊的语句称为“连续构件”,可表示一个具体给定初值的微分方程;而原有的通信语句可用来表达事件的起源和发生;语言中的顺序算子、条件算子等则用来刻画连续构件和通信间的耦合关系。
值得指出的是,霍尔还和我国软件学者、中国科学院软件所的周巢尘研究员等合作,在20世纪80年代末由于Esprit的ProCos项目的需要而对基于时态逻辑的逻辑型混合计算模型进行了研究,在这个模型中引入了时段和切变的概念,建立了时段演算,已引起该领域同行的广泛重视。时段用以刻画系统在一个时间区间上的连续变化,而切变则表示事件的发生(离散变量的变化)。在单个时段上,借助连续数学(微分方程理论)推导系统的行为;而在相邻时段间,则用时态逻辑中切变算子的规则,推导系统行为的转化。这种混合计算模型对于设计要求绝对安全。
冯·诺依曼1903年12月28日生于匈牙利,1957年2月8日死于美国。我想知道计算机的人一定对他不会陌生,它可以称为计算机之父了,现在我们面前计算机内采用的体系结构就是以他的命名的冯·诺依曼结构。
冯·诺依曼小时就十分聪明,6岁时就能够心算8位数字的除法,它在匈牙利接受了他的初等教育,并于18岁发表了第一篇论文!在1925年取得化学文凭后,他把兴趣转向了喜爱已久的数学,并于1928年取得博士学位,它在集合论等方面取得了引人注目的成就。1930年他应邀访问普林斯顿大学,这所大学的高等研究所于1933年建立,他成为最早的6位数学教授之一,直到他去世,它一直是这个研究所的数学教授。后来他为成为美国公民。
1936到1938图灵(另一位伟大的计算机科学家)是普林斯顿大学数学系的研究生,冯·诺依曼邀请图灵当他的助手,可是图灵钟情于剑桥而未能如冯·诺依曼所愿,一年后,二次世界大战使图灵卷入了战争,1934年图灵曾经发表的论文"On Computable Numbers with an Application to the Entscheidungs-problem"不可不提,在这篇论文中,图灵提出了通用机的概念,冯·诺依曼应该知道了这个思想,至少后来他是不是应用了这个思想却不得而知。
冯·诺依曼迅速发现了这种后来被称之为计算机的通用机器的用处在于解决一些实际问题,而不是一个摆设,因为战争的原因冯·诺依曼开始接触到许多数学的分支,使他开始萌生了使用一台机器进行计算的想法,虽然我们现在都知道第一台计算机ENIAC有他的努力,可是在此之前他碰到的第一台计算机器是Harvard Mark I (ASCC)计算器。冯·诺依曼有一种非凡的沟通能力,能够在不同的科学家之间担任一个中介者的角色,虽然这些科学家并不想让别人知道自己的秘密。冯·诺依曼建造的机器名为IAS机,一些由国家实验室建造的计算机不过是IAS机的复本而已。
战后冯·诺依曼继续致力于IAS机的开发工作,并帮助解决氢弹研制中的计算问题。在他死后,它在计算机界的名声并不大,以至于他的传记作家对他在计算机上的贡献也只一笔带过。
1936年,阿兰·图灵提出了一种抽象的计算模型 ── 图灵机 (Turing Machine)。图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,他把这样的过程看作下列两种简单的动作: 在纸上写上或擦除某个符号; 把注意力从纸的一个位置移动到另一个位置; 而在每个阶段,人要决定下一步的动作,依赖于 (a) 此人当前所关注的纸上某个位置的符号和(b) 此人当前思维的状态。为了模拟人的这种运算过程,图灵构造出一台假想的机器,该机器由以下几个部分组成: 一条无限长的纸带。纸带被划分为一个接一个的小格子,每个格子上包含一个来自有限字母表的符号,字母表中有一个特殊的符号 表示空白。纸带上的格子从左到右依此被编号为 0, 1, 2, ... ,纸带的右端可以无限伸展。 一个读写头。该读写头可以在纸带上左右移动,它能读出当前所指的格子上的符号,并能改变当前格子上的符号。 一个状态寄存器。它用来保存图灵机当前所处的状态。图灵机的所有可能状态的数目是有限的,并且有一个特殊的状态,称为停机状态。 一套控制规则。它根据当前机器所处的状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作,并改变状态寄存器的值,令机器进入一个新的状态。 注意这个机器的每一部分都是有限的,但它有一个潜在的无限长的纸带,因此这种机器只是一个理想的设备。图灵认为这样的一台机器就能模拟人类所能进行的任何计算过程 图灵机停机问题(The Halting Problem)的不可判定性 图灵机停机问题: 能否给出一个判断任意一个图灵机是否停机的一般方法? 答案是NO. 这个问题实际上是问: 是否存在一台"万能的"图灵机 H, 把任意一台图灵机 M 输入给 H, 它都能判定 M 最终是否停机, 输出一个明确的 "yes" 或 "no" 的答案? 可以利用反证法来证明这样的 H 不可能存在. 假定存在一个能够判定任意一台图灵机是否停机的万能图灵机 H(M), 如果 M 最终停机, H 输出 "halt"; 如果 M 不停机, H 输出 "loop". 我们把 H 当作子程序, 构造如下程序 P: function P(M) { if (H(M)=="loop") return "halt"; else if (H(M)=="halt") while(true); // loop forever } 因为 P 本身也是一台图灵机, 可以表示为一个字符串, 所以我们可以把 P 输入给它自己, 然后问 P(P) 是否停机. 按照程序 P 的流程, 如果 P 不停机无限循环, 那么它就停机, 输出"halt"; 如果 P 停机, 那么它就无限循环, 不停机; 这样无论如何我们都将得到一个矛盾, 所以假设前提不成立, 即不存在这样的 H. 或者说, 图灵机停机问题是不可判定的(undecidable)。
图灵
世界上第一台电子计算机ENIAC,1946年2月诞生于美国宾夕法尼亚大学莫尔学院。但学术界公认,电子计算机的理论和模型是由英国数学家图灵在此前10年即1936年发表的一篇论文“论可计算数及其在判定问题中的应用”(On Computable Numbers With an Application to the Entscheidungs Problem)中奠定了基础的。因此,当美国计算机协会ACM在1966年纪念电子计算机诞生20周年,也就是图灵的有历史意义的论文发表30周年的时候,决定设立计算机界的第一个奖项(在此之前,作出杰出贡献的计算机科学家只能获得数学方面或电气工程方面的奖项),并且很自然地把它命名为“图灵奖”以纪念这位计算机科学理论的奠基人。被称为“计算机界的诺贝尔奖”的这个奖设立至今,已经颁发了34届,共有40名计算机科学家获此殊荣。
阿伦·图灵(Alan Mathison Turing)1912年6月23日生于伦敦近郊的自治镇帕丁顿(Paddington,现归属伦敦Westminster区,英国议会大厦和世界闻名的威斯敏斯特大教堂就在这里)。图灵的父亲是英国在印度的行政机构的一名官员,母亲平常也在印度陪伴其丈夫。1926年图灵的父亲退休以后,因为退休金不高,为了节省,他们夫妇又选择在生活费用较低的法国居住,没有回英国定居,因此图灵和他的一个叫约翰的哥哥很少见到父母亲,他们是由从军队中退休的沃德(Ward)夫妇带大的。童年时缺乏父爱和母爱,也许正是图灵自幼起性格和行为就比较怪僻,并最终酿成悲剧结局的一个重要原因。图灵13岁进入寄宿的谢博恩中学(SherboumeSch001),学习成绩并不特别好,只有数学例外,演算能力特别强。此外,就是擅长赛跑,我们现在还能看到图灵在运动会上参加赛跑中冲过终点时留下的照片。
1931年中学毕业以后,图灵想进剑桥大学最负盛名的“三圣学院”(Trinity College),但两次未被录取,只好进了剑桥的另外一所学院——“国王学院”(King’s College)攻读数学。第一年的课比较浅,图灵很厌烦,没有好好学,结果在剑桥大学特设的一种叫Tripos的荣誉学位考试中只得了“二等”。好在他急起直追,最后毕业时的数学学位考试还是拿了第一等,取得这个成绩的学生在剑桥大学有一个特别的荣誉称号,叫Wrangler。图灵的学位论文课题是关于概率论的中心极限定理(the Central Limit Theorem of Probability)的。实际上,由于他在研究这个课题时对前人在这方面所做的工作一无所知,可以说是图灵自己又重新发现了这个定理。1936年图灵因就同一课题所发表的论文而获得史密斯奖(Smith Prize)。
1935年,图灵开始对数理逻辑发生兴趣。数理逻辑(mathematical logic)又叫形式逻辑(formal 10gic)或符号逻辑(symbolic logic),是逻辑学的一个重要分支。数理逻辑用数学方法,也就是用符号和公式、公理的方法去研究人的思维过程、思维规律,其起源可追溯到17世纪德国的大数学家莱布尼茨(Gottfried Wilhelm Leibniz,1646—1716),其目的是建立一种精确的、普遍的符号语言,并寻求一种推理演算,以便用演算去解决人如何推理的问题。在莱布尼茨的思想中,数理逻辑、数学和计算机三者均出于一个统一的目的,即人的思维过程的演算化、计算机化,以至在计算机上实现。但莱布尼茨的这些思想和概念还比较模糊,不太清晰和明朗。两个多世纪来,许多数学家和逻辑学家沿着莱布尼茨的思路进行了大量实质性的工作,使数理逻辑逐步完善和发展起来,许多概念开始明朗起来。但是,“计算机”到底是怎样一种机器,应该由哪些部分组成,如何进行计算和工作,在图灵之前没有任何人清楚地说明过。正是图灵上述1936年那篇标题有些古怪(其中“判定问题”用的是“外文”——德文!)的论文第一次回答了这些问题,提出了一种计算机的抽象模型,利用这种计算机,可以把推理化作一些简单的机械动作。图灵提出的计算模型现在被大家称作“图灵机”(Turing Machine)。
说来有趣,具有重大科学价值和历史意义的计算模型,并非图灵那篇论文的主题。图灵那篇论文主要是回答同样是德国大数学家的戴维·希尔伯特(David I-Hilbert,1862—1943)在1900年举行的世界数学家大会上提出的著名的“23个数学难题”中的一个问题的,这个问题涉及逻辑的完备性,即是否所有的数学问题在原则上都是可解的。图灵的论文回答了这个问题:有些数学问题是不可解的。而自动计算机的理论模型则是图灵在其论文的一个脚注中“顺便”提出来的。这可正谓“歪打正着”——图灵这篇传世的论文主要是因为这个脚注,其正文的意义和重要性反而退居其次了。值得回味的是,在科学技术的发展史上,这样的事例并不鲜见。
图灵的论文发表以后,立刻引起了大洋彼岸的美国科学家的重视。年轻的英国数学家的深刻见解和重大创新令他的美国同行十分惊叹,普林斯顿大学立即向图灵发出邀请,于是图灵首次远涉重洋,到美国和邱奇合作,并于1938年在普林斯顿大学取得博士学位。他的博士论文课题是“基于序数的逻辑系统”(Sy