图灵奖:Tony Hoare、John Edward Hopcroft和Barbara Liskov
图灵奖:Tony Hoare、John Edward Hopcroft和Barbara Liskov
![此博文包含图片](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
10月17日,图灵奖获得者、微软剑桥研究院首席研究员托尼·霍尔(Tony Hoare)爵士,与中国科学院院士何积丰、李未、周巢尘、林惠民齐聚微软亚洲研究院,在为期4天的可验证计算大师班里,给中国学生传道授业。托尼·霍尔可谓是可验证软件理论的泰斗,让我们通过下面的对话来了解这位计算大师脑中的奇妙灵感从何而来。
托尼·霍尔与多位大师坐在讲台上回答学生的问题
问题一:您这次是专门来给“大师班”的学生上课的,可验证软件在中国还是一个全新的课题。能简单地介绍一下您个人在这个领域的发展历史么?
托尼·霍尔:我在这个行业里最早开始自己的工作是在一个比较小规模的英国设备公司,叫做Elliott Brothers。当时主要是为公司提供一种高级语言Algol 60的早期编译器。然后,在1966年的时候,我开始转向从事研究方面的工作。在1968年,我搬到贝尔法斯特开始在皇后大学从事研究和教学的工作。
因为我本人对于编程语言和程序验证以及编程的原则等非常感兴趣,而且当时我们在验证方面也是用计算机本身来做相关的验证和测试,所以,我就开始在皇后大学启动我的研究工作,之后,我写了一系列的论文,主要是以一种相对比较简单的编程语言来从事程序的验证。其实,我当时写这些论文的时候,从来没有预见到,我的这些研究工作在整个行业当中,特别是在接下来30年的时间里能够一直为人们津津乐道。
1999年,我从之前的大学退休。那时候,微软剑桥研究院给了我一个高级研究员的职务。我欣然接受了,而且在这个岗位上一干就是十年。当我进入到微软研究院的时候,我发现我的预测是正确的,正是因为在微软的十年,使得我在过去30年当中的研究想法和成果能有机会转化进产品,在软件的开发方面得到了很广泛的应用。所以,我想在这个领域当中仍然有大量后续的研究需要进行以面对现在计算机行业的新问题。目前来说,计算机要处理的任务的复杂性和规模之巨是从前的人没有预料到的。从这个角度而言,当前的计算机使用规模和复杂性要比30年前大得多。所以,我本人也极力地鼓励我在学术界的同事,以及在大学研究的同行们,能够积极地参与到软件验证的相关研究方面的工作中,使得这样一个非常前沿的研究能够被进一步推进。
非常幸运的是,微软公司有一项政策,那就是积极地参与学术界很有价值的并且和微软有关联的研究工作。我本人也感觉到在推动这方面研究的工作方面,我还是可以为微软做一些贡献,我还是可以在实施微软与大学合作的这个策略和政策方面做一些贡献的。所以,我也积极地和学术界的同事们共同来探讨相关的主题和计划。我们一起发动了一个在研究方面的运动,我们称之为“可验证软件”的倡议。
问题二:听说您当初到牛津大学的时候,学的是文学和哲学这方面的专业,这些可能跟计算机差得有点远,那是什么契机让您转向了学计算机?或者是什么使您对计算机发生了兴趣?
托尼·霍尔:其实是这样的,在那么早期的时候,没有大学专门开设计算机科学的课程,因此,凡是现在从事这个行业的人,早年的时候都是学的别的学科。实际上,当时在大学里,令我最感兴趣的课程是哲学,我当时学两方面的哲学,一方面是古希腊哲学家,比如说像亚里士多德和柏拉图这样的古典哲学;同时,我也学习一些当代哲学家的哲学思想,比如罗素(Russell)和艾耶尔(Ayer)。而在哲学方面令我最感兴趣的课程是数学哲学和科学哲学。即便在当年那样早的时候,哲学家已经对计算这个话题表示出了浓厚的兴趣。在他们看来,计算本身是一种可以用来探索世界、探索人类思维和人类逻辑思考的一个有效途径。
所以说,如果我们的目标是一种模仿人类的智能的方式来对计算机进行编程的话,那首先就必须要对人类的思维、人类的知识、人类的日常生活有所了解。所以,当我发现在这个业界当中有一份等着我去做的程序员的工作时,我就马上来这个公司(微软)了。
我觉得早期学习哲学的经历给予了我在思维的时候一个分析框架的能力,早年的哲学学习给了我一种兴趣和一种能力。也就是说,当我思考一个问题的时候,不管这个问题是什么,我基本上能够从这个问题的所有方面都能够考虑得到,都能够进行思考,接着想出多种不同解决方法。然后,我会选择一个最令人信服的、最好的,甚至是最美的一种解决方法。
问题三:那我想知道一下,您当时在发明快排算法的时候,您当时受到了什么启发或者灵感的来源是什么?您能不能给我们讲一下当时的故事呢?
托尼·霍尔:你问是什么激发了我,其实背后有一个有趣的故事,这个故事说起来非常长。当年我们英国的国家物理实验室给了我一个工作的机会,那个项目主要是做机器翻译语言的方法,把俄语翻译成英语。早在60年代,人们已经开始梦想通过机器自动实现语言的翻译。当时的字典是录在磁带上,所以要找一个词理论上要倒半个磁带,才能找到这个词。那这样的话,在磁头上要花几分钟的时间才可以找到那个词。
那怎么解决这个问题呢?为了克服时间的问题,我们把一个句子当中所有的词,尽量一次性的都查出来。这些词我们按照它在字典当中的顺序来加以排列,然后再到这个磁带当中去找,而不是按照这些词在句子当中的顺序到磁带中间去找。我在1959年时候开始学习编程,我认为如果能够写一个这样的排序的程序的话,应该是一个非常有意思的事情。我当时想到的第一个方法叫做冒泡排序,也就是说一次查一个词。但是,后来我认为这样做的话,查起来就很慢。于是,我接下来的第二个想法就是快速排序方法。
我当时用的理论是一个比较知名而且常用的理论,叫做分治法(Divide and Conquer)。简单来说,在我们解决一个问题的时候,先把这个问题分割成两个部分,那这两个部分呢,比起初的问题要小,但是和原先的问题是很类似的,然后,针对分割出来的小部分别的来找解决方法,然后,再把这两个分别的解决的方法结合起来,回头来解决这个最初的问题,所以,它的英文叫做(Divide and Conquer)。
问题四:听说你在获得图灵奖的时候做了一个名为《皇帝的旧装》的演讲,能说说当时您都谈到了什么?
托尼·霍尔:我在那天的演讲当中主要是谈编程语言的设计,我当时是想对那个时候的一些方法提出一些批评,比如说像Algol 68这样的设计,我认为它们太过复杂了。我就打了一个比方,说这些语言这么复杂,就好像一个人穿了太多件衣服在身上。我就借鉴了安徒生的《皇帝的新衣》的童话故事来说,目前在这样一种情况下,就好像一个人穿了太多件衣服,而皇帝之所以穿了太多件的衣服呢,是因为他害怕出现那种在《皇帝的新衣》里面出现的最后赤身裸体、什么衣服都没有穿的状况。我用这样的一个比喻来描述当时的这些编程语言太过复杂。而当时的编程太过复杂是因为每一个人都想往里面加更多的功能,最后就导致这些新的功能最后超出了程序的必要性。所以,我就觉得我们应该回到一个比较简单的状况,让编程语言不要那么复杂。我同时也说,一个程序的正确性要比在写程序的时候的难易程度更重要。我现在回想起来,我当时说这些话,可能有一点太过傲慢。
问题五:您对中国计算领域的印象如何?在未来的行业发展中,您觉得中国能承担一个什么样的角色?
托尼·霍尔:其实,除了微软公司在中国做的一些工作之外,对于中国的计算行业,我了解得非常少。但是我知道微软公司非常地重视它在亚洲的研究实验室,我们对在此地工作的这些人员以及他们所从事的工作有着极高的尊重。我和在中国学术界的计算机科学家们也有一些联系。在我看来,他们非常聪明,也非常有活力和动力,并且应该说是前景非常光明。我希望在未来,也就是我提出的这个可验证软件倡议方面,中国的科学家能够发挥一个很大作用。
问题六:是否能有一种理论来评估计算机语言?
托尼·霍尔:其实现在没有一个大家都接受的一个理论来评估一个语言,那么,在实践当中,选择语言的原因呢,往往和语言的实际质量之间并没有太大关联。说到实际质量,它涉及到受欢迎的程度、它的时尚性、可获得性,以及它的可熟悉性、兼容性等要素。但是这个问题是我非常感兴趣的,这也是最开始启动我在可验证方面工作的初衷。
在我看来,语言设计的目标应该是确保他能够使我们以简便的方法来写出那些正确的程序。与此同时,使得出错的概率变得更难。对于一种语言,根据它最后写出来的程序的正确性进行评估,应该是评测一个语言质量的科学准则。比如说,你花越长的时间来证明这个程序最后写出来是正确的,就说明你用的这个语言,是越不成功的,质量是越低。
问题七:未来计算机语言是否可以成为人类自然语言这样?
托尼·霍尔:一个受欢迎的语言应该说,它一直具备着成长性,因为使用这些语言的人会用这个语言来实现不同的目的。在这方面而言,其实计算机的语言和人类的自然语言是有区别的,因为人类的自然语言在成长的过程中会有一些词慢慢地就不用了,或者一些词会发生变化,或者这个语言的形式会发生一些变化,而在计算机语言的范畴之内是相反的。因为我们现在计算机必须得能够读懂上一代的计算机的语言,所以,我想正是因为计算机行业要求的兼容性,使得你前面说到的自然语言当中旧语言被剔除掉的可能不太可能会发生,那么语言其实是以更加复杂的方式在向前演进。
访谈人介绍
托尼·霍尔
微软剑桥研究院首席研究员。1980年图灵奖获得者。
托尼·霍尔于1956年在牛津大学获得一生之中第一个也是唯一的学位,专业是哲学、古典语言与文学(拉丁语和希腊语)。随后,他在英国皇家海军学习俄语,在牛津大学进行了为期一年的统计学研究,在莫斯科国立大学进行了为期一年的机器翻译研究。在莫斯科国立大学期间,他发布了著名的快速排序算法(Quicksort)。
这个经历使得他的兴趣转向计算机。1960年,他作为程序员加入Elliott Brothers公司,领导开发了经典编程语言Algol 60的早期编译器。由于其出色成绩,托尼·霍尔最终成为该公司的首席工程师和首席科学家。1968年,他被聘任为英国贝尔法斯特女王大学计算机科学系的教授并开始了学术研究生涯,主要研究领域包括编程理论、计算机程序的准确性验证。
1977年,他返回牛津大学并加入编程研究小组。在这里,他设立了与计算科学有关的多个本科与硕士学位。1999年在牛津大学退休后,托尼·霍尔加盟微软剑桥研究院,从事程序精确性领域的深入研究,以及此领域某些早期研究成果的应用工作。
他在科学与工程领域的成就得到了广泛认可:荣获图灵奖和京东奖;英国皇家学会会员;英国皇家工程院院士;意大利科学院院士;以及美国国家工程院院士。
John Edward Hopcroft,康奈尔大学计算机科学系教授。1939年10月7日生于西雅图。1961年在西雅图大学获得电气工程学士学位以后,进入斯坦福大学研究生院深造,师从研究自适应信号处理和神经元网络的鼻祖--著名学者威德罗(Bernard Widrow)。John在1962年获得硕士学位,1964年获得博士学位。学成以后,他曾先后在普林斯顿大学、康乃尔大学、斯坦福大学等著名高等学府工作,也曾任职于一些科学研究机构如NSF(美国科学基金会)和NRC(美国国家研究院),从事对科学研究的规划和行政管理工作。1992年到1998年5月,他被布什总统指定为监督国家科学基金会的国家科学委员会成员。2005年,John获得IEEE哈里•古德(Harry Goode)纪念奖,并且于2007年获得计算机研究协会的杰出贡献奖。1986年,John由于在算法及数据结构设计和分析方面的基础性成就,被授予图灵奖。
成为计算机科学家的机缘巧合
John成为著名的计算机科学家起源于一个十分偶然的机会。他学习的专业是电气工程,对计算机科学原本没有多少知识,只学过一门“开关电路和逻辑设计”算是多少有些关系的。因此他原打算毕业后去西海岸的一所大学执教电气工程方面的课程。但就在毕业以前,有一次他偶然经过他的导师威德罗办公室的门口。当时,普林斯顿大学的麦克卢斯基教授(Edward McCluskey,他也是一位著名的学者,是研究数理逻辑的专家,他和奎因(Quine)共同创造的化简开关函数的一种方法就被叫做奎因—麦克卢斯基法(Quine-McCluskey method)。他还曾出任IEEE计算机协会的主席。)正为筹建“数字系统实验室”打电话给威德罗,请他推荐毕业博士生去那里工作。威德罗一眼瞥见从门口走过的John,觉得勤奋好学、悟性又高的这位得意门生正是一个值得推荐的人才,当即把他叫进办公室,并把电话听筒递给了他。John在电话里听了麦克卢斯基对普林斯顿大学拟建数字系统实验室的考虑和打算,之后又前去面谈了一次,实地了解一番。仰慕于普林斯顿大学作为美国一流大学的名望,以及对数字系统这一全新的学科领域强烈的兴趣,John欣然放弃了原先的计划,接受了普林斯顿的聘任,从而改变了他一生的道路。那个时候的John没有意识到,就是这次雇用使他成为了世界上首批计算机科学家之一。因为在他之前并没有计算机科学的师资人才,他就有了他人通常不具备的机会。假如John仍然在做物理学领域的研究,他很可能就得等到前人退休以后才能进入师资人才的队伍。
John对教育的思考
John乐于给学生讲述自己的经历,因为他觉得,学生们应该根据学科未来的发展来设定自己将来的位置。时代的变化提供很多新的机遇。不仅仅是学生,对于国家来说也是这样。那些意识到世界正在随着计算机科学的发展而改变的学生和国家将会生活得更好。长年在美国高等学府的执教经历,使John对教育及创新人才的培养有着深刻的理解,他的学生中不乏中国留学生,这也使他有机会观察和了解中国。他带过一些中国籍的学生,John认为,这些中国学生就是在最好的时间里选择了最正确的位置。
John以独特的角度阐释信息时代教育应该思考的一些问题。教师在创新人才培养中应该发挥什么样的作用?在长期执教经验中,John学到的一件重要事情是,在教育中,教师的优秀与否并不在于其是否能够准备出最好的材料、发表最棒的演说,而在于其对学生成功的关心程度。如果学生确信教师对他们的成功与否非常在意,他们就更容易获得成功。
John说,孩子在很小的时候,大概是5岁左右,就发展起来了他们的创造力。对于儿童来说,一个能够让他们感觉到安全、感受到被爱、允许他们去探索这个世界的稳定环境是非常重要的。当然,这是从心理学上来说的。但是他认为培养创新能力的一个重点恰恰在于童年时代的早期教育。如果一个儿童在幼儿园度过的一到三年里成功地学习到了基本技能,在之后的学习当中他就会做得更好。对于整个国家的人口来说,往往会重视社会当中创造力较高的5%到10%数量的人,但决定一个国家经济发展的,是这个国家中占多数人的创造力的平均水平,我们却往往忘记这点。John所注意到的另一件事是,对于学生们来说,他们的课程压力有点过重了。人们往往认为选5门课能够比选4门学到更多,但他对此有所怀疑。“学生需要足够的时间来消化他们所学习到的材料。即使是在美国,我也鼓励学生们少选几门课。我们的学院也在降低对学生必选课程数目的要求。因为我们意识到,这种要求使得学生们没有足够的时间消化并思考这些材料。同时,高等教育并不仅仅是消化掉课堂上所学的知识就足够了,学生们需要时间互相讨论、需要学习团队协作的能力,这些对于他们的将来都是非常有价值的。有一些学生非常聪明,但是不懂得如何与他人合作,限制了他职业生涯取得良好发展的可能。而由智力平凡者组成的团队,却可以借由合作互相协助、解决一些独立的个人无法解决的难题。”
关于图灵奖
图灵奖(Turing Award)以计算机科学之父图灵(Alan M. Turing)的名字命名,是计算机界的最高技术荣誉,有“计算机诺贝尔奖”之称。图灵奖由美国计算机协会(ACM,Association for Computer Machinery)评选,始自1966年,用以奖励那些对计算机科学研究与推动计算机技术发展有卓越贡献的杰出科学家。图灵奖对获奖者的要求极高,评奖程序也极严,一般每年只奖励一名计算机科学家,只有极少数年度有两名以上在同一方向上做出贡献的科学家同时获奖。
计算机科学的未来方向
演讲人:康奈尔大学终身教授,1986年图灵奖获得者John E. HOPCROFT博士
会议:二十一世纪的计算大会
http://research.microsoft.com/asia/21stcomputing/21stCC07/index.htm
http://tech.sina.com.cn/focus/21stCC07/index.shtml
抽象的力量--记Barbara
2008年图灵奖得主,美国计算机历史上第一位女博士Barbara Liskov当年在准备图灵奖颁奖仪式讲话时,她重新回顾自己从研究起步之后看过的篇篇论文,从而梳理出一条如何一步步摘取图灵奖皇冠的路径的。在“二十一世纪的计算”大会上,Barbara女士与在场的近2千名学生分享了她学术之路上的几个关键节点。今天,我们也一起来仔细听听Barbara的这段经历吧。
2009年,我在图灵奖获奖仪式上要做一个讲话,在我想这个演讲怎么讲的时候,我就决定把我看过的论文再重新看一看,就是说我达到获得图灵奖的成就的那些最初的想法是什么,今天我非常想与大家分享这个。
我在斯坦福大学拿到了博士学位,当时学的是人工智能,我在读博士读到一半的时候,决定放弃人工智能转而研究计算机系统,当然了,学博士最后要拿学位的,这样才能做进一步研究。我决定上学的时候先不转型,拿到学位以后再转型。之后我在一个机构工作,主要是做一些计算机的研究,我在博士毕业以后开始做计算机系统的研究了。
首先我参加了维纳斯机器的一个设计,当时谈一种微编程,也就是说我们给计算机一个小的指令组,而且给它很小的只读内存,这样在非常弱的指令组上面是没有办法写的。对于这个项目来说非常有趣的一点,Interdata 3这个指令组和今天的一个架构是没有什么不同的,当时人们写的很多程序是机器程序,而且要想直接使用那么弱的指令组编程是非常难的,今天编程语言更加高级,由编译器生成。这个指令组相对来说还是比较标准化的,我把这个信号语给放进去了,放在当时的一个操作系统上面,我认为在硬件当中必须要有这样的配置。
到70年代末期我又开始推进一个新的项目了,大家看到我们主要做系统设计,不再做任何的人工智能,而且是边做边学来理解计算机系统,70年代末又开始变成编程方法论。
当时政府发现他们正在经历软件危机,今天我们仍然在经历软件危机。这是什么意思?我们不了解如何高效地运用软件,那时候软件匮乏是很大的问题,有大批的失败项目。刚开始我们有一个想法,然而软件不能达到我们的要求,最后导致整个项目必须放弃。那个软件的成本比今天要高得多,比方说一个大型机的耗资能够达到几十万美元,大家根本不了解软件怎么做出来,大家感觉软件可以轻而易举的做出来,而且软件不花钱,硬件花钱,所以当时人们不愿意在软件方面投资、花钱,这样对于软件编程员来说工作很难做,而且他们的工作不受重视。今天众所周知软件也是很贵的,不会为了硬件牺牲软件了。
为准备我的图灵获奖感言,我去年又重读了几篇论文,这个很有价值,今天介绍给我们的同学们也读这几篇论文。在给美国研究生做报告的时候,我发现大部分人没有读过这些论文,建议大家去读:
首先想给大家讲的是E.W.Dijkstra写的Go To Statement Consider Harmful这篇论文,这个论文当时发表的时候引起了很大的争议。当时大家感觉很奇怪,让大家放弃Go to语句,我们就很难推理程序。一旦不能推理程序在做什么的时候,你怎么能确保程序会去做你想做的事情呢?而当你对程序做出推理的时候发现程序文本是一个静止的东西。你要推理的是程序动态的执行,你推理的过程如果想做得更加简单的话,你要能够把静态和动态统一在一起,如果用Go to转到这个做法,这样就很混乱,就没有结构。有一个结构化的方式理解程序更好理解。
还有另外一个非常重要的论文,是D.L.Parnas写的Information Distribution Aspects of Design Methodology,关于这样的话题写了两篇文章,写的是程序结构问题,他的论文当中有一些很有意思的论断,他说这个项目是由模块组成的,不知道这些模块究竟是什么,他说我们知道这样一个结构,必须了解这个结构,但是结构本身是不清楚的。模块是什么呢?想把这些模块组合起来,并且模块之间产生互动的话,就必须说明你的代码是正确的,必须理解这些模块是相互联系的,不是说这样的模块对另外模块产生预算,而是整个模块相互联系。所以在论文当中提出了非常重要的一条,各个模块之间的联系是模块相互之间的假设。这样一个联系其实比你想象的更为复杂,必须进行深入的了解。
当时我读这些论文的时候推出了我的Venus系统。我使用了他们论文当中提供的方法,当时搞了自己的团队,承担了很重要的任务。在我们项目最开始决定用一个特别的开发推动我们这个项目。讲到项目的时候,会有各种各样的流程,这些流程他们也是相互之间进行呼叫的,但是也会产生很多总体的变量。在Venus中,我们会把整体的命令行分散,我们叫做分隔。对于每一个模块有自己所谓的指令表,每一个指令表有自己的变量,各个指令之间相互互动的时候叫做运算。也就是说同一个分割中有不同的运算。这样一种概念实际上是模块化的概念,在Venus项目中引用了这个。那个时候希望搞一个操作系统,就是用这种模块化的概念。
S.Schuman和P.Jourrand在他们的论文中谈到了可扩展语言的作用,当时这个论文是在1967年发布的,主要有两种方法,困难性的语言必须让编程语言改变语言,这样他们可以进一步的进行调整,里面有语意,讲到语意进一步拓展句法,看起来是非常有道理的。
还有一篇O-J. Dahl和C.A.R Hoar于1972年写的非常有轰动效应的一篇文章,Hierarchical Program Structures。在当时对于封闭没有产生概念,所以说没有把抽象以及分割两者之间结合起来。还有一篇是J.H.Morris的Protection in Programming Languages。这篇文章又开始讨论模块化的问题,模块化是非常重要的概念,如果有很大项目,每个模块规模又是比较大的,所以你要修正你的程序,必须修正不同的模块,要考虑这个模块是否完成了它应该做的事情。当时Morris问的问题是如何保证使用模块化的方式可以进行良好的调试。
到1974年夏天快结束的时候又要做一个抉择:下一步研究如何做。当时我选择继续研究设计程序语言,提出了抽象数据类型,提出有一系列的预算、对象以及所有的运算,只有通过这些运算才能对目标进行存取。这些论文中也对语言进行描述,说这是一个大概的框架、大致的架构。
为什么选择程序语言呢?讲到这样一种模块化,应该和虚拟数据类型结合起来的,人们需要了解里面的方法论。我觉得要走下一步其实是有必要原因的。首先编程语言就需要向程序员进行良好沟通,如果程序员不懂有什么意义呢?当时我们考虑到这一点,编程语言需要让编程员可以很好的了解,同时抽象数据类型是否真正的能够应用。想到一种想法怎么谈都行,但是讲到编程语言,把这个变成真正的实际使用。另一个原因,我希望对于这样一个概念,或者这样一个想法进行明确的定义,把这样一种想法具体的实施,因为我们这样一个想法本身是比较虚幻的,但是通过编程语言可以把这样的想法变成事实。
下面给大家讲讲设计流程。我想指出的是对于语言设计的目标其实和接口设计目标是一致的。我在这个项目之后也做了很多其他的项目,我始终把这些项目放在心上。一旦设计一个模块,或者大型、小型的界面、接口,必须考虑几点,首先考虑这样的模块是否能够考虑足够的表达能力。也就是说是否能够实现想要的目标。第二个原则是必须简单,如果你的程序员不了解这个程序如何编译,那么效率就很低了。同时它的绩效要比较高,而且使用起来很方便,否则是没有人愿意用这样的语言。对于任何的编程语言,这就是我们需要关注的四大目标。
我获得图灵奖以后,我的丈夫每天在网上找对我的赞誉,其实在我刚开始做研究的时候,没有人了解,但今天大家都知道了,这是主要的转变。现在在研究工作当中仍然有很多挑战,我起步非常早,但仍然有很多有趣的课题值得我们解决,对于下面的问题,我们需要更好的程序方法论,特别是在大规模并行计算的技术成为现实的时候。另外互联网本身也是一种计算机,我们如何来适应互联网时代的编程需要,也是我们有待解决的一个挑战。谢谢大家!
Barbara Liskov在演讲中提到的其他几篇重要论文是:
N. Wirth. Program Development by Stepwise Refinement.
B. Liskov. A Design Methodology for Reliable Software Systems.
W. Wulf and M. Shaw. Global Variable Considered Harmful.
B. Liskov and S. Zilles. Programming with Abstract Data Types.
Barbara Liskov是美国第一位计算机科学女博士,也是历史上第二位获得图灵奖的女性。她不仅关注计算机科学,致力于让计算机科学为人类提供更加便捷的生活,她还是一位受到学生敬重的好老师。同时,她也关注弱势群体,努力为弱势女性谋得更多就业和福利机会。
Barbara1961年在加州大学伯克利分校获得数学学士学位,1968年在斯坦福大学获得博士学位,因此成为美国历史上第一位女性计算机博士。2008年,美国计算机协会 (ACM) 宣布Barbara为当年年度图灵奖获得者,以表彰其在程序设计语言与系统设计,特别是在数据抽象、容错和分布式计算领域的实践和理论基础方面的贡献。
美国计算机协会认为, Barbara在计算机编程领域带来了革命性的创新。麻省理工官员拉斐尔•雷夫表示:“她的杰出成就已经跨越了学界的高墙,改变世界每日的生活。你每次和朋友交换邮件,检查银行账户,或者是使用搜索引擎,你都是在应用Barbara的研究成果。”
Barbara 在程序设计语言方面的成就使软件变得更加可靠,同时对消费者和企业用户而言更加易于维护。她的研究成果现已成为各个重要程序设计语言的基础,包括 ADA、C++、Java 和 C#。
自1972年以来, Barbara一直担任麻省理工学院(MIT)教授,与许多研究生一起做计算机科学的研究工作,特别是在分布式计算领域;此外,作为学校平等委员会(Faculty Equity)的助理教务长,Barbara一直致力于在MIT内部为弱势群体的女性争取进入院系的机会,改善她们的不利处境。从她开始教书之时,就没有停止过思考“女性作为一个弱势群体的事实”。当Barbara在斯坦福大学上学的时候,她是班上惟一的女生,但是,她从来没有认为自己是一个弱者,反倒觉得在斯坦福的日子没有面临过多大挑战,大家都是一起学习,互相帮助。
谈到为何会进入计算机行业,Barbara讲述道:她大学的专业是数学,在毕业的时候,计算机科学还是一个非常年轻的领域,当时对计算机根本不太了解。走出校园之后,只是想找一份工作,但是一直找不到与数学相关的、自己感兴趣的工作。最后,找到一个计算机程序员的工作,因为那时还没有人获得过计算机科学的专业学位,公司认为只要有相关背景能够胜任工作就可以,于是,她就这样得到一个计算机程序员的工作,之后Barbara发现自己对计算机还的很是有兴趣的,从此便进入计算机行业。
如今作为计算机行业的佼佼者,Barbara在谈到自己的经验时,体会最深刻的就是:没有专心致志的精神就不会成功,创造性偶尔会出现,但这不是人所能计划的。专心做一件事,不一定会有创造性的想法,但是这总会让你有所进步,因此,她第一个经验就是,你必须要专心地解决一些问题;但是,同时要谨记不要时时刻刻都想着它,很多有创意的想法都是在比较轻松的时刻出现的。她从来不晚上在家工作,而是喜欢早晨进入工作状态之后再想应该做什么,这个时候往往会有一些好的想法涌现,因此,既要有精力高度集中的时刻,也需要有喘息的机会。她说,现在有些年轻人整天不停的工作,忽略了朋友,丢掉了爱好,这些都是不可取的,有一个平衡的生活状态是非常重要的,富有幽默感也很重要。有很多人爱抱怨,如果你能微笑着面对许多的不如意,事情往往就会向一个积极的方向发展。最后,还要信任他人。
面对未来的挑战,Barbara认为,应对挑战最好的方法就是不断地学习,不仅要掌握专业的知识和技术,而且要有长远的视野,有宽广的知识背景。她认为大学本科教育不应该特别关注某一个特殊的子领域,因为你并不知道自己未来将要做什么,你需要的是一个牢固的基础背景,这样将来就可以转换自己的行业,可以适时的做出一些转变。Barbara的经历就是从人工智能研究到计算机系统,再到程序语言直至分布式计算。未来的发展趋势跟今天肯定是不同的,我们不知道未来会发生什么,所以要做好随时变化的准备。
关于图灵奖
图灵奖(Turing Award)以计算机科学之父图灵(Alan M. Turing)的名字命名,是计算机界的最高技术荣誉,有“计算机诺贝尔奖”之称。图灵奖由美国计算机协会(ACM,Association for Computer Machinery)评选,始自1966年,用以奖励那些对计算机科学研究与推动计算机技术发展有卓越贡献的杰出科学家。图灵奖对获奖者的要求极高,评奖程序也极严,一般每年只奖励一名计算机科学家,只有极少数年度有两名以上在同一方向上做出贡献的科学家同时获奖。