图灵奖获得者 Dijkstra:一个天才的画像

发布者:史永堂发布时间:2022-02-19浏览次数:33

以下文章来源于公众号ACM日常,作者dansen


埃德杰·怀贝·迪克斯特拉 (Edsger Wybe Dijkstra1930511~200286日),生于荷兰鹿特丹, 计算机科学家,毕业就职于荷兰莱顿大学,早年钻研物理及数学,而后转为计算学。曾在1972年获得过素有计算机科学界的诺贝尔奖之称的图灵奖,之后,他还获得过1974AFIPS Harry Goode Memorial Award1989ACM SIGCSE计算机科学教育教学杰出贡献奖、以及2002ACM PODC最具影响力论文奖。

 

1.科学事业

 

埃德杰·怀贝·迪克斯特拉于1930511日出生于荷兰鹿特丹。他的母亲是数学家,父亲是化学家。1956年毕业于莱顿大学数学和理论物理专业。1959年,他凭借论文《与自动计算机的通信》获得了阿姆斯特丹大学的博士学位,该论文专门描述了为荷兰开发的第一台商用计算机X1设计的组装语言。它还处理了中断的概念,这在当时是一种新奇的事物。他的博士论文导师是范·维加登。

 

1952年到1962年,他在阿姆斯特丹的数学中心工作,在那里他遇到了他的妻子丽娅。1962年,他们搬到了埃因霍温,在那里他成为了埃因霍温技术大学数学系的一名教授。1964年,他们搬到了埃因霍温郊区纽宁的一座新房子,纽宁是埃因霍温郊区的一个小村庄。1973年,当Dijkstra开始传播他的报告在巴勒斯研究员的签名时,它被添加到了世界计算机科学的地图上。许多人认为,巴勒斯,一家当时以生产计算机的公司而闻名,基于创新的硬件架构,总部位于纽宁。事实上,Dijkstra是巴勒斯公司唯一的研究员,他在家为该公司工作,偶尔也会去该公司在美国的分支机构旅行。

 

结果,他把在大学的约会减少到每周一天。那一天,也就是星期二,很快就被称为著名的星期二下午俱乐部,在这个研讨会上,他与同事们讨论科学文章,研究所有方面------符号、组织、演讲、语言、内容等。1984年他搬到美国德克萨斯州奥斯汀大学后不久,星期二下午俱乐部的一个新的分支出现在奥斯汀。迪克斯特拉在奥斯汀工作,直到1999年秋天退休。20022月,身患绝症的他从奥斯汀回到了他位于纽宁的原房子,半年后的86日在那里去世。他身后留下了妻子和三个孩子,马库斯、菲姆克和拉特格。

 

2.科学贡献

 

通过他的基本贡献,迪克斯特拉塑造和影响了计算机科学领域。他的开创性贡献范围从计算机科学的工程领域到理论领域,涵盖了几个方面,包括编译器构建、操作系统、分布式系统、串行和并行编程、软件工程和图形算法。他的许多论文,通常只有几页长,都是全新的研究领域的起点。更重要的是,一些现在在计算机科学中完全标准的概念首先由Dijkstra确定,并带有他创造的名字。

 

例子很多。1959年,他发表了一篇3页的文章关于与图相关的两个问题的注释,这是一种著名的、极其简单的找到图中最短路径的算法,现在被称为Dijkstra算法。它在未来40年的影响最好的总结为米克尔·索罗普的文章,无向单源最短路径。

 

1959年以来,SSSP(一般有向和无向图的单源最短路径)的所有理论发展都是基于Dijkstra的算法。

 

Fortran之后,ALGOL60是第二种高级编程语言。Dijkstra密切参与了ALGOL60的开发、实现和推广。正如彼得·诺尔在文章ALGOL60发展的最后阶段的欧洲方面所讨论的,在19781月第一次ACM规划语言历史签署会议的会议集中,Dijkstra参加了1958-1959年期间的一些会议,最终发表了定义阿尔60语言的报告。Dijkstra的名字并没有出现在最终报告的13位作者的名单中。显然,他最终离开了委员会,是因为他不同意多数人的意见。尽管如此,在数学中心期间,他与第一个ALGOL60编译器贾普·佐纳维尔德共同写作。它采用了一种新的递归实现方法。他的短篇著作《Algol60编程入门》最初出版于1962年,多年来一直是该语言的标准参考文献。

 

1965年的一篇一页论文中,他介绍了n个过程的互排斥问题,并讨论了它的解决方案。这可能是第一个发布的并发算法。本文还介绍了关键部分的标准概念。米歇尔·雷纳尔1986年出版的《相互排除算法》展示了这本书在出版后的头20年对该领域的影响。

 

Dijkstra和他在埃因霍温的同事还设计并实现了操作系统,该系统被组织成明确的分层结构。他1968年关于这一主题的文章为操作系统的所有后续设计提供了基础。

 

1968年,迪克斯特拉发表了他的著名论文《协同顺序过程》,这是一篇70页的文章,起源于并行编程领域。他在其中讨论了相互排斥的概念和一个令人满意的解决方案应该满足的标准。他还纠正了他1965年论文中遗漏的历史观点,包括了互排除问题的第一个解决方案。此外,他还提出了第一个并行进程的同步机制,即信号量的两个操作PV。他还确定了死锁问题(称为致命拥抱问题),并提出了一种优雅的银行家算法,以防止死锁。死锁的检测和预防已成为并发编程领域长期存在的研究问题。

 

其中有几个想法是由他在更早的时候提出的。例如,他早在1962年就引入了信号量的概念。这在他的手稿EWD51用荷兰语编写的多重编程和X8)中进行了讨论(http://www.cs.utexas.edu/users/EWD/ewd00xx/EWD51.PDF)PV操作是Prolaag的缩写,荷兰语中不存在,代表(荷兰语中维拉格),以及维霍根,荷兰语中加薪的意思。反过来,银行家的算法出现在他的手稿EWD108中,用荷兰语编写的早期算法(一种防止致命拥抱的算法)(http://www.cs.utexas.edu/users/EWD/ewd01xx/EWD108pdf)。此外,论文合作顺序过程1965年完成,并作为他的手稿EWD123(http://www.cs.utexas.edu/users/EWD/ewd01xx/EWD123.PDF)

 

然后,在1971年的一篇论文中,他通过用餐哲学家问题来说明僵局问题,根据这个问题,五位哲学家坐在一张桌子旁,应该只吃五个叉子的意大利面。困难是它们每个人都用两个叉子来吃。这个问题成为了解释新的同步原语的经典基准。本文还导致了对高级同步机制的深入研究,最终引出了显示器的概念。

 

他在1974年的分布式控制的论文《自我稳定系统》是容错计算的起点之一。有趣的是,这篇论文是在1983年,在莱斯利·兰波特在ACM分布式计算原理研讨会(PODC)上的受邀演讲后,才被注意到它的重要性。它获得了2002年的PODC重要论文奖。

 

Dijkstra大胆地批评传统的if-then-else编程声明是不对称的,并在1975年提出了另一个基于guard概念的对称结构。这使得他能够提出2300多年前的欧几里得算法,该算法以美观的对称形式计算两个自然数的最大共除数。从那时起,guard的概念就深入地传播到计算机科学中。

 

1976年,他出版了一本开创性的书《A Discipline of Programming》,提出了他的程序系统开发方法及其程序的正确性证明。在他的演讲中,他使用了他微小的guarded commands语言。该语言依赖于非决定性,所采用的最弱的前提语义和所提出的开发方法至今已对该领域产生了巨大的影响。1984年,为了进一步支持这种编程方法,他与WimFeijen联合出版了一本面向计算机科学一年级学生的入门教科书。这本书首次以荷兰语出版,名为《程序方法》。英文版于1988年出版。

 

20世纪80年代初,他发表了两篇关于在分布式系统中检测终止问题的小型论文。第一本有四页,是由卡里尔·斯科尔滕写的;第二本三页,由维姆·费扬和内蒂·范·加斯特伦编写。这个问题是由尼西姆·弗朗切斯在一个有限的CSP程序中独立制定和解决。它成为分布式规划领域最常被研究的问题之一,并出现了关于这个主题的一些调查。然后在1990年,他与卡里尔·肖尔滕出版了《预测微积分和程序语义》。这本书致力于逻辑和数学分析,然而,人们对这本书的评价褒贬不一。我们稍后再讨论这件事。

 

他的基本成就很早就得到了认可。1972年,他获得了ACM图灵奖。他是美国艺术与科学学院的外国荣誉成员,荷兰皇家艺术与科学学院(KNAW)的成员,并拥有北爱尔兰贝尔法斯特大学和希腊雅典大学的荣誉博士称号。此外,在30年的时间里,他获得了许多奖项和荣誉,其中一些就在他去世前几周。2001410日,荷兰电视台播出了一个关于迪克斯特拉的半小时电视节目,该节目在主要日报《全国广播》中得到了好评。毫不奇怪,他的讣告出现在《纽约时报》、《卫报》、《华盛顿邮报》和《卫报》。

 

3.工作方式

 

迪克斯特拉从未用电脑写过文章。他更喜欢依靠打字机,后来又喜欢依靠勃朗峰的钢笔。这些文章随后以一种古老的方式分发:他将副本发给一些朋友和同事,他们随后作为分发中心的源节点。这些短篇文章历时40年。它们很少超过15页,并连续编号。最后一个,第1318号,是从2002414日。在计算机科学中,它们被称为EWD报告,或者简称为ewd。早期的版本还没有日期,所以很难确定它们的出版日期。

 

为了庆祝他70岁生日和EWD的大多数报道,奥斯汀的计算机科学系在2000年发布了一张光盘,这发生了一个重大变化。他们也可以从哈姆·理查兹维护的http://www.cs.utexas.edu/users/EWD/网站上获得,最近的报告补充道。这大量的材料,总计超过7700页,包括科学文章、文章、立场论文、会议和科学旅行报告、公开信、演讲,以及最近,越来越多的,对著名和不太广为人知的组合问题和谜题的解决方案的优雅阐述。Dijkstra对他的工作应用了严格的自我评估程序,最终只有一小部分ewd被提交给参考期刊。因此,他的许多贡献并不出名。

 

他的笔迹是如此完美和独特,以至于在20世纪80年代末,来自DEC系统研究中心的卢卡·卡德利为Mac电脑设计了一种Dijkstra字体。不久之后,迪杰克斯特拉收到了用这种字体排字,并认为它是手写的,直到他传到关于创建这种字体的消息。迪克斯特拉的一些同事在奥斯汀的部门会议上偶尔会在幻灯片演示中使用这种字体。那些好奇他引人注目的笔迹和异常优雅的展示风格的人可以下载,例如,他对多年生狼、山羊和卷心菜谜题的展示(参见2000年的EWD1255)

 

他在写作方面的优雅是无与伦比的。他可以以文章的形式写一些正式的问题,几乎没有任何公式。他已经讨论过的论文协同顺序过程也许就是最好的例子。类似地,他能够以一种看似非正式的方式,用简单的散文来讨论分布式计算中复杂的算法,只有几个简单的算法。他以独特的风格写文章,特点简洁,论证简洁,阐述清晰。每句话都被仔细地凿了出来。每一段都很引人注目。

 

事实上,在他所做的一切中,他完全是一个完美主义者。他的演讲总是无可挑剔,通常带有一种独特的戏剧感,只用粉笔和黑板,完全超出了他的头脑。它们也非常有趣,因为他尖锐的评论,引人注目的短语转折,或者他在开始演讲前经常在黑板上引用的奇怪语录。在教室里,他永远不会要求观众保持沉默。相反,他会把声音降到几乎听不见的地步。这个技巧非常有效。

 

20世纪70年代末开始,他开始对证明的发展和展示的主题感兴趣。其中一些证明是他的编程方法在几何或代数上的惊人应用。他批评了暗示的使用、不必要的案例推理或矛盾的推理。相反,他倾向于以等价链的形式提出的证明,每一步都被证明是一个交错的评论,并喜欢强调等价链是有关联的,这一事实是逻辑学家知道但显然从未使用过的事实。

 

他还为一阶逻辑设计了自己的符号,可以更好地处理明确给定范围的量词,一般没有想到数学家对表示的蔑视和对符号的缺乏关注。他甚至批评人们熟悉的Σ对总结的使用具有草率和误导性。此外,他反复主张从零开始编号,所以他的报告,从某个时刻开始,总是从第0页开始,当他写关于n个过程时,它们总是编号为0...n−1。此外,他反对使用图纸或示例来描述概念,例如,特定类型的图形。

 

4.他的观点

 

在与同事的个人接触中,他往往表现出僵硬、严肃和冷漠。在一些罕见的情况下,他甚至显然粗鲁,像在1980年代初他在阿姆斯特丹大学演讲时戏剧性的离开。几年后,在奥斯汀,他对麻省理工学院一位著名计算机科学家在演讲结束时发表我疯了的评论说了感谢上帝。但在办公室里的非正式私人会议上,他可能会最有魅力,为学生们提供咖啡,并对自己的创作讲一些微妙的俏皮笑话。

 

由于他的行为和不妥协的立场,他受到一些同事的不喜欢,特别是在荷兰。他们在他先知式的言论和尖刻的评论中没有看到任何东西,这些言论经常在演讲后发表,他反对黑客式的编程方法,反对草率的符号,或者表达他对组织糟糕的演讲的反对。通常,这种对他的观点的怀疑可以简单的用嫉妒来解释,他的观点和文章被广泛引用和讨论。当在荷兰为一些重要的活动寻求一个著名的演讲者时,迪克斯特拉通常会被忽略。

 

在许多场合,他的极端观点在几年后成为了标准。例如,1968年,他发表了一篇两页的文章,Goto被认为是有害的,批评了Goto声明在编程语言中的使用。这引起了一场巨大的骚动。30年后,goto声明在Java中没有出现。

 

他对编程的观点经常受到尖锐的批评和激烈的争论,但它们为编程方法和验证软件正确性的方法铺平了道路,并有助于早期更好地理解编程过程中所涉及的复杂性。最后,如果有发言人试图阐明软件危机的问题,他们的目光总是转向迪克斯特拉。

 

迪克斯特拉通过许多其他术语、短语和口号丰富了我们的词汇。被广泛使用的术语结构化编程是在他1972年《结构化编程笔记》中创造出来的。另一个口号是问题分离,经常被在软件工程中使用,可以追溯到他从1974年写的简短笔记《关于科学思想的角色》(EWD447)

 

他可以用极其清晰和极其精确的方式表达自己的观点,因此它们自然会被用作章节或文章的格言,或者作为一个新的研究路线的理由。可以很容易地出版一本小册子,里面有他的格言和关于计算机、软件或计算机科学的令人耳目一新的声明。

 

这些观点也可能导致其他计算机科学家的强烈反对,包括著名科学家。Don Knuth1974年写了一篇长达40页的文章,题为带有goto语句的结构化编程。在1989ACM32的通讯上发表了关于教授计算机科学的辩论的文章。在这一期中,理查德·卡普、理查德·汉明和其他著名的计算机科学家批评他的观点过于极端和过于激进,特别是因为他坚持认为,编程的入门课程应该主要是一门数学课程,完全没有程序测试。

 

还应该补充的是,在某些情况下,迪克斯特拉缺乏新想法的接收似乎源于他无法看到他不喜欢的符号。此外,在好几次场合,他拒绝熟悉数学逻辑中的基础文学,这使他误入歧途,比如他发现等价性是有关联的。

 

事实上,他和肖尔滕的书《预测微积分和程序语义》收到了Egon B的一篇毁灭性的评论。Egon B展示了几个命题微积分定律,证明是华丽的方法评论,可以证明在一个完全直接的方式使用我的方法从1928年,在每个布尔表达式表示为一个多项式的多项式系数01Egon B还严厉批评了对谓词逻辑发展的描述,其中只选择了少数逻辑学家,并从莱布尼茨到布尔到克斯特拉。公平地说,这里应该提到,迪克斯特拉和肖尔滕的证明陈述方法,以及其他人的工作,也导致了现在所谓的计算逻辑的发展。

 

这种傲慢的引用方法是一些同事憎恨迪克斯特拉的原因之一。事实上,书目参考文献从来都不是迪克斯特拉作品的强项,他的大部分文章和书籍也根本没有任何参考文献。在他的书《编程的纪律》的序言中,他只是沮丧地说:由于没有参考书目,我既不解释也不道歉

 

所有这些都可能是他为能够专注于自己的想法和自己的方法所必须付出的小代价。毕竟,在他所做的大部分事情里,他是一个先驱,是一个自学成才的天才。显然,为了保持创造性和高度的原创性,他不得不关闭别人的作品。他宁愿从第一性原则中得到所有的结果,而忽略他人所做的工作。他更感兴趣的是结果发展背后的思维过程,而不是结果本身。事实上,他的大部分工作都涉及到方法论。

 

他坚强的个性,加上非凡的工作习惯和对如何进行研究的明确观点,吸引了许多研究者。他似乎相信每个人都应该像他那样思考和行动。这使他成为一个天生的先知,并解释了他的许多特点。他吸引了一群相对较小但稳定的门徒,其中包括博士生和非常著名的计算机科学家,他们采用了他的写作风格和符号,他的举止,使用钢笔,偶尔甚至采用他穿凉鞋的习惯。

 

5.奥斯汀的生活

 

他在奥斯汀找到了自己的第二个家。他喜欢美国及其国家公园,经常和妻子乘坐被称为图灵机的大众汽车四处度假。当他在熟悉的领域工作,善于社交和友好。他和妻子经常在晚上去拜访朋友和同事,连续社交半小时。他也经常乐于助人,并有一种原始的幽默感。当被问及他有多少博士生时,他微笑着回答说:两个。爱因斯坦没有什么。(最终,迪克斯特拉有了四名博士生:尼科·哈伯曼,曾担任卡耐基梅隆大学计算机科学系系主任;马丁·雷姆成为埃因霍温技术大学总统;内蒂·范·加斯特伦,直到最近过早去世一直在同一所大学工作;大卫·诺曼,他在新泽西州霍博肯的史蒂文斯理工学院工作,曾在迪克斯特拉和托尼·霍尔担任博士主管。)

 

他受到同事们的喜欢和尊敬,他们被他谦逊的行为所震惊。斯特罗瑟·摩尔曾在系会议上谈到迪克斯特拉的学院态度:埃德杰是一名伟大的教员。他相信一人一票的原则,并坚持下去。事实上,迪克斯特拉从未涉足大学政治,也总是远离冲突。与此同时,他对人非常敏锐,并能立即认出谁是一个敬业的科学家,谁是一个伪装的政治家。

 

他为奥斯汀的学生开设的课程与计算机科学没有什么关系:处理数学证明的presentation。实际上,在部门的主页上,人们可以读到以下对他的研究的简短总结:我感兴趣的领域的重点是简化数学论证,以增加我们的推理能力,特别是通过使用正规化的技术。在课程中,他会要求学生写下他在课堂上讨论的基本数学问题的证明,下次他还给学生的时候会附上详细的评论,比如许多遗漏问题。他在评估人们的工作能力方面也具有高度的独创性。1990年,当弗拉基米尔·利夫斯基茨来到奥斯汀接受面试时,迪克斯特拉给了他一个谜题。弗拉基米尔解决了这个问题,并从那以后一直在奥斯汀工作。

 

迪克斯特拉在奥斯汀的科学生活与一个典型的计算机科学研究者截然不同。据我所知,他从未提交过研究拨款提案,没有参加任何会议方案委员会,也没有作为发言者参加会议。他阅读的科学文章大多是通过推荐阅读的,并且更喜欢依赖与一小群同事的直接交流,其中包括一些最著名的计算机科学家。事实上,他和许多同事和朋友保持着信件,偶尔会持续几十年。他几年前才开始使用电子邮件,之前依靠传真和手写信件作为交流手段。

 

6.生活方式

 

作为一名科学家,迪克斯特拉是诚实和正直的典范。他的大多数出版物都是由他一人编写的。他与同事们共同撰写的几篇出版物具有他写作风格的特点。他从来没有秘书,只是独自处理他所有的信件。他从未以赠款或咨询的形式寻求资金,也从未以他的名义支持他不会有实质性贡献的倡议。当同事们为施普林格-弗拉格出版的60岁生日做节日礼物时,他费了很大劲,在一封手写的信中分别感谢了61位撰稿人。他高度的自信和一种非常谦虚的生活方式相结合,达到了斯巴达人的程度。他和妻子在纽宁的房子简单、小、谦逊。他没有电视、录像机或手机,也没有去看电影。他钢琴弹得非常好,在奥斯汀时,他喜欢去参加音乐会。他还喜欢用荷兰语处理困难的填字游戏,并会毫不犹豫地将自己的解决方案发送给报纸。

 

7.遗产

 

迪克斯特拉非凡的智力和勇气,以及深刻而又简单优雅的思想,改变了计算机科学的进程。他无论是作为科学家,还是在个人生活中,都是正直无与伦比的。他对一般的科学,特别是对研究的看法有着惊人的深度和创意。正如奥斯汀计算科学系的系主任J·斯特罗瑟·摩尔在迪克斯特拉的葬礼上所说:他就像一个在黑暗中拥有光明的人。他几乎阐明了他讨论过的每一个问题。简而言之,他是个天才。在计算机科学方面,我们都是迪克斯特拉的孩子。

 

致谢

 

莉亚·迪克斯特拉让我们意识到迪克斯特拉相当早就引入了几个概念。维姆·费詹、大卫·格里斯和保罗·维特·安伊对最初的版本提出了批评意见,并提供了有用的修正和额外的信息。莱斯利·兰波特提供了一些有帮助的历史评论。



版权声明

转自ACM算法日常,版权属于原作者,仅用于学术分享