Tony Hoare 颠覆计算
- 来源:计算机世界 smarty:if $article.tag?>
- 关键字:Tony Hoare , 颠覆,计算 smarty:/if?>
- 发布时间:2010-05-14 13:53
本报记者 李响
“快回来坐好,一会儿Tony Hoare就要讲话了。”在微软亚洲研究院2009可验证软件研讨会上,每当有人觉得会议乏味想要离开时,就会听到同伴这样的阻止声。在过去40年中,他发明的快速排序算法被广泛应用,被称为最有效率的算法;而他提出的霍尔逻辑(Hoare Logic)则用严密的数学做保证,推理验证程序的正确性。由于对算法和编程语言的巨大贡献,Tony Hoare成为1980年图灵奖的获得者。因此,在参会的200多名技术专家,和一大批编程人员眼中,Tony Hoare,是偶像。
而当记者见到Tony Hoare本人时,却不禁惊讶。这位75岁的“偶像”不仅早已变成一位白发苍苍、面容慈祥的老者,而且他必须依赖助听器,才能与人交流。然而,在巨大的眼镜后面,Tony Hoare的眼睛仍时刻发射出睿智的光芒。
哲学家爱上计算机
1934年1月11日,Tony Hoare出生在斯里兰卡(当时称为锡兰)首都科伦坡。上世纪50年代初,这位英国人的后裔早已回到英国,并进入牛津大学。
在大学里的时候,Hoare的专业虽然是以拉丁语和希腊语为主的古典语言和文学,“但最令我感兴趣的课程就是哲学。”Hoare回想起年轻的日子,十分兴奋。
当时的Hoare深深迷恋着和哲学有关的一切。尽管他主要学习两方面的哲学,一方面是古希腊哲学家,比如像亚里士多德和柏拉图的古典哲学思维;与此同时,他大量吸收一些当代哲学家的哲学思想,其中就包括罗素(Russell)和艾耶尔(Ayer)。
“罗素和艾耶尔的思想对我影响很大。”Hoare说,罗素的逻辑主义和艾耶尔的逻辑实证主义激发了他对数学哲学和科学哲学的热情,这两门课程成为众多哲学课程中,他最喜欢,也是最钦佩和崇敬的。“即便在当年那样早的时候,哲学家已经对计算这个话题表现出了浓厚的兴趣。在他们看来,计算本身是一种可以用来探索世界、探索人类思维和人类逻辑思考的一个有效途径。”
原本,Hoare计划在现代哲学,特别是数学哲学的路上继续前进。1956年,Hoare拿到了他在哲学、古典语言和文学专业的学士学位,这是他在一生的科学研究工作中,拿到的惟一的学位。
接着,他在牛津继续学习研究生级别的统计学课程。然而,命运却将Hoare带入了一个让他更加着迷的新领域。当他在牛津的研究生课程时进行了快一年时,进入服役年龄的Hoare应征入伍,成了英国皇家海军的一员。
在这期间,他在英国皇家海军学习俄语,并进入了苏联的俄国莫斯科国立大学深造。正是因为此,50年代末,他得到了英国国家物理实验室的工作机会——用机器翻译语言的方法,把俄语翻译成英文。
初次接触到计算机语言和编程的Hoare立刻被这门全新的科学吸引了。他发现,他所热爱的科学哲学和计算机的目的是一致的,“如果我们的目标是以模仿人类智能的方式来对计算机进行编程的话,那首先就必须要对人类的思维、人类的知识、人类的日常生活有所了解。”Hoare说,“所以,当时当我发现在这个业界当中有一份等着我去做的程序员工作时,我马上就来了。”
研究一生的程序员
1958年,当Hoare忙着为人们“用机器自动实现语言翻译”的梦想奋斗时。他发现,以当时的技术,需要先把字典录在磁带上,而每翻译一句话,都需要先从磁带的词典中找出每一个词。
那么,一句话里面有十几个词,一段文章里面,数百上千个单词,且不论翻译的质量,光查词就已经慢得让人无法忍受了。
“如何解决这个问题呢?”Hoare心中一直盘算着。他意识到,惟一的解决办法就是把句子中所有的词,尽量一次性都查出来——把句子中出现的每一个词按照首字母排序,使它们的顺序和在字典中的顺序一致,然后再到磁带中去找,而不是按照每个词在句子当中的逻辑顺序,从字典的中部或某个地方找起。
“我在想,如果我能够写一个这样的排序程序的话,那一定是一件有意思的事情。”Hoare说,“这太让我兴奋了。”
当时,Hoare想到的第一份排序方法,是逐个比较对象,也就是现在的“冒泡算法”。但他认为,这样的速度,仍然不够快。为了改进排序速度,Hoare提出了“快速排序算法”——通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
不过,Hoare并没有把快速排序算法公诸于世,当时他还需要一份工作来糊口。1960年,已经做了两年编程工作的Tony Hoare进入英国一家规模不大的设备提供商Elliott Brother公司,开始了自己程序员的职业生涯。
虽然现在的程序员,只是IT企业中最普通的员工,但当时,这样的工作已经让Hoare相当满足。
Hoare说,他最喜欢的,不在于编程本身,而在于研究和探索。在Elliott公司期间,Hoare领导开发了经典编程语言Algol 60的早期编译器。因为工作出色,很快他成了该公司的首席工程师和首席科学家。1968年,他被聘任为英国贝尔法斯特女王大学计算机科学系的教授并开始了“一个程序员学术研究生涯”,主要研究领域包括编程理论、计算机程序的准确性验证
重构计算世界
1972年,Hoare在一篇论文中正式发表了快速排序算法。这篇文章很快在程序员中掀起了一场革命,很多程序员都开始采用快速排序算法。
“1980年,图灵奖的评奖机构突然通知我,要得图灵奖了,这让我非常惊喜。我非常高兴能够有机会去美国访问,并且就我个人在计算领域中的成果和经验做一个演讲。”而Hoare在领奖时的演讲《皇帝的旧装》又一次震动了计算机领域。
在演讲时,Hoare用这样的比喻来描述编程语言太过复杂的情况,这就和“皇帝的新装”正好相反,因为害怕出现“赤身裸体”,所以穿了太多件衣服。他强调,编程太过复杂是因为每个人都想往里面加更多的功能,最后反而导致这些新功能超出了程序的必要性。
此后,Hoare的一系列论文,都以一种相对比较简单的编程语言来从事程序的验证。“不过我当时写这些论文的时候,从来没有预见到,我的这些研究工作在整个行业当中,在接下来30年的时间里能够一直为人们津津乐道,也有很多后续的开拓。”Hoare说。
1999年,Hoare从大学退休后,加入了微软剑桥研究院,他希望,他的研究成果能够通过微软,影响到更多的人,让编程变得简单、直接。
在退休后的十年间,他一直在研究可验证软件。这一次,他发现,在计算机领域,无论是运行速度还是容量,都以极快的速度增长,但“这不可能永远持续下去,它总会有一个终结点的”。所以,Hoare希望,未来持续改进的软件能够维持下去,这需要可验证软件。与此同时,计算行业还需要一项“大挑战”,而这项挑战不只是纯粹的计算科学的挑战,还会涉及生物学、心理学乃至量子物理学等各个学科。
