EWD简介
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上开发的Algol60,最早的高级语言之一。戴爷爷没日没夜地工作了8个月,就搞出了Algol60,也因此获得了1972年的图灵奖。因为Algol60,戴爷爷发表了一篇石破天惊的文章:Recursive Programming,于是人们才知道,原来高级语言也可以高效地实现递归,原来从此以后,所有程序员都不可避免地和戴爷爷发明的一个词(应该说是概念)打交道:堆栈。而且Algol60还让戴爷爷深入地思考多道程序设计的问题,最终发明了每个系统程序员都绕不开的概念:semaphore。当然,戴爷爷总是把他发明的概念严格形式化,极具科学家本色的说。和这些成就想比,他提出的吃饭的哲学家问题,也就没什么好说的了。
说来好笑,当时的大学(忘了哪所了)还是觉得戴爷爷没有受过正统的数学训练,也不是专门搞数值分析的,所以最后不太情愿地给了他一个教职。这种小挫折并不能妨碍象戴爷爷这样的牛人创造历史。他一边教数值分析 ,一边开始开发一个新的操作系统,并培养计算机科学家。几年后,THE Multiprogramming System横空出世。THE是第一个支持松散耦合,显式同步的进程并由此使得严格证明系统没有死锁变得容易的操作系统。可惜戴爷爷任职的系不识货,还强行解散了他的研究小组(1972年戴爷爷给他的系主任说他得了图灵奖,系主任的第一反应是你们搞计算机就喜欢乱发奖)。这让戴爷爷相当郁闷,得了抑郁症。在极度郁闷之中,戴爷爷决定用写作来治疗自己的抑郁症。于是经典就诞生乐:Notes on Structured Programming。戴爷爷从此被尊为结构化编程的奠基人,而且他的抑郁症也被治好了。
EWD太牛,结果他的故事也太多。1973起,他的故事就在美国发生了。
1930年,Dijkstra出生在荷兰的鹿特丹。他的父亲是一位化学家,母亲是数学家。
他在莱顿大学获得了数学和理论物理的硕士学位,又在阿姆斯特丹大学获得了计算机科学博士学位。
1952年至1962年间,他在阿姆斯特丹数学中心作程序员;1962年至1984年在艾恩霍芬科技大学任数学教授。
1984至1999年,他在美国奥斯汀的德克萨斯大学任计算机科学教授。
1999年退休,任德克萨斯大学名誉教授。
Dijkstra提出了一个著名的见解:算法逻辑是而且必定是一切有用的计算机程序结构的基础。此外,他的著名观点还包括:将操作系统作为明确同步的顺序进程来构造、计算机程序开发的正规化、有效控制不确定性的智力投资等。他发明的最短路径算法有着极高的效率。
他还设计并且实现了第一个Algol60语言编译器。
他还是废除“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简介的更多相关文章
- ASP.NET Core 1.1 简介
ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...
- MVVM模式和在WPF中的实现(一)MVVM模式简介
MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...
- Cassandra简介
在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...
- REST简介
一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...
- Microservice架构模式简介
在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...
- const,static,extern 简介
const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...
- HTTPS简介
一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...
- 【Machine Learning】机器学习及其基础概念简介
机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- Cesium简介以及离线部署运行
Cesium简介 cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎,一款开源3DGIS的js库.cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区 ...
随机推荐
- eclipse 改变颜色,背景
Eclipse背景颜色修改: 操作界面默认颜色为白色.对于我们长期使用电脑编程的人来说,白色很刺激我们的眼睛,所以我经常会改变workspace的背景色,使眼睛舒服一些.设置方法如下: 1.打开win ...
- jfinal的controller默认访问的方法是什么
index()方法: 如: @Controller("/test/exam")public class TestController 如下请求请求:http://localhost ...
- Floyd算法并输出路径
hdu1224 Free DIY Tour Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...
- 使用MySQLMTOP监控MySQL性能(二)
一.服务器角色 服务器角色 172.18.35.29 10.160.22.14 (MySQL Master) 10.160.22.47 (MySQL Slave) 监控点 YES NO NO 被监控点 ...
- mysql登录密码特殊字符处理
mysql -h 192.168.12.23 -u root -pClz_b1qYPyl6$Zu1 登录报错 mysql -h 192.168.12.23 -u root -pClz_b1qYPy ...
- RAID和LVM磁盘阵列
RAID磁盘冗余阵列 CPU的处理性能保持着高速增长,Intel公司在2017年最新发布的i9-7980XE处理器芯片更是达到了18核心36线程.但与此同时,硬盘设备的性能提升却不是很大,因此逐渐成为 ...
- 170727、MySQL查询性能优化
MySQL查询性能优化 MySQL查询性能的优化涉及多个方面,其中包括库表结构.建立合理的索引.设计合理的查询.库表结构包括如何设计表之间的关联.表字段的数据类型等.这需要依据具体的场景进行设计.如下 ...
- Drools规则引擎
一.简介 Drools is a Business Rules Management System (BRMS) solution. It provides a core Business Rules ...
- python threading.thread
Thread 是threading模块中最重要的类之一,可以使用它来创建线程.有两种方式来创建线程:一种是通过继承Thread类,重写它的run方法:另一种是创建一个threading.Thread对 ...
- php 函数__autoload与spl_autoload_register理解
理解自:http://www.cnblogs.com/myluke/archive/2011/06/25/2090119.html __autoload的作用:当我们在一个页面使用其他文件的类方法时候 ...