Edsger Wybe Dijkstra was a principal contributor in the late 1950‘s to the development of the ALGOL, a high level programming language which has become a model of clarity and mathematical rigor. He is one of the principal exponents of the science and art of programming languages in general, and has greatly contributed to our understanding of their structure, representation, and implementation. His fifteen years of publications extend from theoretical articles on graph theory to basic manuals, expository texts, and philosophical contemplations in the field of programming languages.
一提到EWD,很多人就会想起找最短路径的Dijkstra Algorithm,就好像一提到Sir. Tony Hoare,就想起Quick Sort一样。其实这些个算法不过是两个牛人在他们职业生涯中最琐碎的贡献。比如Dijkstra算法,无非是戴爷爷在1956年为了展示新计算机ARMAC的计算能力,初试身手的成果,属于他的算法处女作。据戴爷爷自述,他搞出最短路径算法的时候连纸笔都没用。当时他和他老婆在阿姆斯特丹一家咖啡厅的阳台上晒太阳喝咖啡,突然就把这个算法想出来乐。而且当时的算法研究还比较原始,牛人们忙着用计算机搞数值计算,对离散算法不屑一顾。那时连一个象样的专注于离散算法的专业期刊都没有。戴爷爷于是推迟发表这个算法。直到1959年,他才把这个算法发表在Numerische Mathematik的创刊号上,权为捧场。EWD在多个领域牛气冲天,端的是理论和编程两手硬的高手。只不过他的很多工作比较深刻,学校的老先生们觉得本科生接受不了,不给本科生讲而已。
戴爷爷大概因为最短路径算法一战成名,于是有人请他参加另一台计算机X1的设计工作,并且把设计实时中断系统的任务派给了他。现在看来实时中断也许不算什么,但要知到,X1前根本就没有实时中断的概念。实现它简直就是一场豪赌。戴爷爷起初还不情愿,但经不住项目负责人Bram和Carel的轮番"吹捧":我们知道实时中断让您工作变得非常困难,但象您这样的牛人肯定能做出来的说。结果戴爷爷被糖衣炮弹彻底击穿,接下了这个烫手山芋。两三年后,他不仅搞出了实时中断,还围绕这个写出了自己的博士论文,顺利戴上博士帽。
让戴爷爷真正成名立万的还是在X1上开发的Algo60,最早的高级语言之一。戴爷爷没日没夜地工作了8个月,就搞出了Algo60,也因此获得了1972年的图灵奖。因为Algo60,戴爷爷发表了一篇石破天惊的文章:Recursive Programming,于是人们才知道,原来高级语言也可以高效地实现递归,原来从此以后,所有程序员都不可避免地和戴爷爷发明的一个词(应该说是概念)打交道:堆栈。而且Algo60还让戴爷爷深入地思考多道程序设计的问题,最终发明了每个系统程序员都绕不开的概念:semaphore。当然,戴爷爷总是把他发明的概念严格形式化,极具科学家本色的说。和这些成就想比,他提出的吃饭的哲学家问题,也就没什么好说的了。
说来好笑,当时的大学(忘了哪所了)还是觉得戴爷爷没有受过正统的数学训练,也不是专门搞数值分析的,所以最后不太情愿地给了他一个教职。这种小挫折并不能妨碍象戴爷爷这样的牛人创造历史。他一边教数值分析 ,一边开始开发一个新的操作系统,并培养计算机科学家。几年后,THE Multiprogramming System横空出世。THE是第一个支持松散耦合,显式同步的进程并由此使得严格证明系统没有死锁变得容易的操作系统。可惜戴爷爷任职的系不识货,还强行解散了他的研究小组(1972年戴爷爷给他的系主任说他得了图灵奖,系主任的第一反应是你们搞计算机就喜欢乱发奖)。这让戴爷爷相当郁闷,得了抑郁症。在极度郁闷之中,戴爷爷决定用写作来治疗自己的抑郁症。于是经典就诞生乐:Notes on Structured Programming。戴爷爷从此被尊为结构化编程的奠基人,而且他的抑郁症也被治好了。
EWD太牛,结果他的故事也太多。1973起,他的故事就在美国发生了。
1930年,Dijkstra出生在荷兰的鹿特丹。他的父亲是一位化学家,母亲是数学家。
他在莱顿大学获得了数学和理论物理的硕士学位,又在阿姆斯特丹大学获得了计算机科学博士学位。
1952年至1962年间,他在阿姆斯特丹数学中心作程序员;1962年至1984年在艾恩霍芬科技大学任数学教授。
1984至1999年,他在美国奥斯汀的德克萨斯大学任计算机科学教授。
1999年退休,任德克萨斯大学名誉教授。
Dijkstra提出了一个著名的见解:算法逻辑是而且必定是一切有用的计算机程序结构的基础。此外,他的著名观点还包括:将*作系统作为明确同步的顺序进程来构造、计算机程序开发的正规化、有效控制不确定性的智力投资等。他发明的最短路径算法有着极高的效率。
他还设计并且实现了第一个Algo60语言编译器。
他还是废除“goto语句”的领导者。
Dijkstra是一位高产的作家。http://www.cs.utexas.edu/~EWD/这个网址,你可以找到他全部超过3000篇的作品。他经常与数百位朋友、同事通信——不是使用电子邮件,而是传统的信件。无论是写学术论文还是写信,他都坚持使用钢笔,而不是计算机。
Dijkstra最广为人知的是他的睿智、雄辩而一针见血的话语。他说:“计算机能不能思考?这个问题就好象‘潜水艇能不能游泳’一样。”
当年轻的科学家问他如何选择研究课题时,他回答:“只做你能做的事。”在荣获图灵将之后的演讲中,他说:“作为一种工具,计算机使我们的文化起了浅浅的波澜,但也仅此而已;作为对人类智力的一种挑战,计算机掀起的轩然大波在人类历史上是史无前例的。”
Dijkstra提出了许多新概念、新术语,大大的丰富了计算机科学的语言。他提出的概念包括结构化程序设计、问题分解、同步、死锁、“哲学家晚餐”、最弱前提……以及著名的用于控制计算机进程同步的“信号量”。牛津英语词典收录了他在计算机科学环境中使用的“vector”和“stack”这两个词。
在他的科学生涯中,Dijkstra一直坚持学院派的高风亮节,不让自己的研究受到来自商业、管理、政治等等因素的影响。简单、优美而又说服力,这就是他的风格。在程序设计和数学领域中,他对“优雅”的一贯坚持激励了成千上万的人。他把自己的工作评价为“最高标准”,并以此鼓励他的朋友做到同样的高度。
另外,他还义无反顾地担当了苏格拉底的角色——城邦的牛虻。他一次又一次地指出时髦观点中存在的错误,象牛虻一样刺激国家这匹“驽马”不断前进,和苏格拉底一样,他最重要的遗产就是那些未完地研讨、归纳了一半的理论和没有完成的探索。所有与他讨论、共事过的人,尤其是那些参加过他在艾恩德霍芬和奥斯汀组织的读书小组(著名的“星期二下午俱乐部” )的人,都从他身上获益匪浅。
Dijkstra是1972年图灵奖的得主——图灵奖常被称为“计算机科学界的诺贝尔奖”。
他是荷兰皇家科学院的院士、美国国家科学院的院士,同时还是不列颠计算机协会的名誉会员。
他还在1974年获得过美国信息处理学会联合会(AFIPS)颁发哈里·古德奖。
在1982年获得电气电子工程师协会(IEEE)颁发的计算机先驱奖。
在1989年获得美国计算机学会(ACM)为计算机科学教育做出突出贡献者而颁发的SIGCSE奖。
雅典经济大学曾在2001年授予他名誉博士头衔。
2002年8月6日,在与癌魔多年的斗争之后,计算机科学及工程界的泰斗Edsger Wybe Dijkstra教授在荷兰Nuenen的家中与世长辞,享年72岁。
2002年,日本的C&C基金会对Dijkstra地评价是:“他对软件基础理论、算法理论结构化和信号机制进行了开创性的研究,为计算机科学奠定了坚实的基础。”
让我们借用裴多给苏格拉底的悼词:“我们毫无疑问地宣称,在我们所知的与他同一时代的所有人中,他是最聪明、最公正、最优秀的。”
Edsger Wybe Dijkstra引导了并且将继续引导这个星球所有的程序员,他的贡献和影响将与世长存。
EWD简介