贡献者: 待更新
本文根据 CC-BY-SA 协议转载翻译自维基百科相关文章。
Edsger Wybe Dijkstra(/ˈdaɪkstrə/ DYKE-strə;荷兰语:[ˈɛtsxər ˈʋibə ˈdɛikstraː] ⓘ;1930 年 5 月 11 日-2002 年 8 月 6 日)是荷兰计算机科学家、程序员、软件工程师、数学家和科学散文家。
Dijkstra 出生于荷兰鹿特丹,他学习了数学和物理学,之后在莱顿大学攻读理论物理学。阿德里安·范·温格尔丹(Adriaan van Wijngaarden)曾邀请他担任荷兰第一位计算机程序员,在阿姆斯特丹的数学中心工作,任职时间为 1952 年到 1962 年。他在 1956 年提出并解决了最短路径问题,并于 1960 年与同事贾普·A·宗内费尔德(Jaap A. Zonneveld)共同开发了编程语言 ALGOL 60 的首个编译器。1962 年,他搬到埃因霍温,随后又移居到纽嫩,在埃因霍温技术大学数学系担任教授。20 世纪 60 年代末,他构建了 THE 多任务操作系统,该系统通过使用基于软件的分页虚拟内存,影响了后续操作系统的设计。1973 年 8 月,Dijkstra 加入了 Burroughs 公司,成为唯一的研究员。在 Burroughs 的这段时间里,他的研究文章产出最为丰盛,撰写了近 500 篇《EWD》系列文件,其中大部分为技术报告,供特定小组私下传阅。
1984 年,Dijkstra 接受了德克萨斯大学奥斯汀分校计算机科学系的施伦伯杰百年讲席,并在奥斯汀工作,直到 1999 年 11 月退休。退休后,他和妻子返回原住地纽嫩,直至 2002 年 8 月 6 日因长期与癌症斗争去世。
Dijkstra 因其在开发结构化编程语言方面的基础性贡献而获得了 1972 年的图灵奖。临终前,他因在程序计算自稳定性方面的研究获得了 ACM PODC 影响力论文奖,这项奖项在次年以 “Dijkstra 奖” 命名,以纪念他。
Edsger W. Dijkstra 出生于鹿特丹。他的父亲是一位化学家,曾担任荷兰化学学会会长,并在一所中学教授化学,后来成为该校的校长。母亲是一位数学家,但没有正式的职业。
Dijkstra 曾考虑过从事法律职业,并希望能代表荷兰出任联合国代表。然而,在 1948 年中学毕业后,在父母的建议下,他选择了在莱顿大学学习数学和物理,之后继续攻读理论物理学。
在 1950 年代初期,电子计算机还是一种新鲜事物。Dijkstra 偶然进入了计算机领域,并通过他的导师 Johannes Haantjes 教授,遇到了 Adriaan van Wijngaarden(阿姆斯特丹数学中心计算部门主任),后者给了他一份工作。1952 年 3 月,他正式成为荷兰的第一位 “程序员”。
Dijkstra 曾一段时间致力于物理学,他在莱顿每周有三天时间从事物理工作。然而,随着对计算机的接触增加,他的兴趣开始发生转变。他回忆道:
“在编程了大约三年后,我与当时是我的老板的 A. van Wijngaarden 进行了讨论,这个讨论我将永远感激他。问题是,我当时应该在莱顿大学同时攻读理论物理学,而我发现这两项活动越来越难以兼顾,于是我必须做出选择,要么放弃编程,成为一个真正的、受人尊敬的理论物理学家,要么以最低的努力完成物理学学习,只做个名义上的毕业生,去做……做什么呢?做程序员?但那是一个体面的职业吗?毕竟,什么是编程呢?有没有一个坚实的知识体系,能够支持它成为一门 intellectually respectable(受人尊敬的学科)?我记得很清楚,当我面对那个问题时,我嫉妒我的硬件同事们,因为当他们被问及他们的专业能力时,至少可以指出他们了解真空管、放大器等硬件,而我觉得,当我面对这个问题时,我会空手而归。满怀疑虑,我敲响了 Van Wijngaarden 的办公室门,问他是否能‘和我谈一谈’,当我几小时后离开时,我已经是另一个人。因为在耐心倾听了我的问题后,他同意到目前为止编程的学科确实不多,但他接着平静地解释说,自动计算机是不可避免的,它们将会存在下去,而我们现在只是在起步阶段,难道我不能成为那些人之一,帮助将编程发展为未来几年里受人尊敬的学科吗?这一刻是我生命中的转折点,我迅速完成了我的物理学学习。”
—— Edsger Dijkstra,《谦逊的程序员》(EWD340),《ACM 通讯》
Dijkstra 于 1957 年与 Maria "Ria" C. Debets 结婚,婚礼中他需要声明自己的职业。当时他声明自己是程序员,这在当时荷兰是无法接受的,因为荷兰当时并没有这个职业。
1959 年,他获得了阿姆斯特丹大学的博士学位,论文题目为《与自动计算机的通信》,该论文详细描述了为荷兰第一台商用计算机——Electrologica X1 设计的汇编语言。他的论文导师是 Van Wijngaarden。
从 1952 年到 1962 年,Dijkstra 在阿姆斯特丹的数学中心工作,在那里他与 Bram Jan Loopstra 和 Carel S. Scholten 紧密合作,他们被聘用来建造一台计算机。他们的互动方式非常有纪律性:首先,他们会决定硬件与软件之间的接口,并通过编写编程手册来确定这些接口。然后,硬件设计人员必须忠实于他们的部分,而作为程序员的 Dijkstra 则为尚不存在的机器编写软件。从这段经历中,Dijkstra 学到了两课:清晰的文档是至关重要的,并且通过精心设计,程序调试可以大大避免。
Dijkstra 在 1956 年为 ARMAC 计算机的正式启用展示中,提出并解决了最短路径问题。由于当时没有专门用于自动计算的期刊,他直到 1959 年才发布这一成果。
在数学中心,Dijkstra 和他的同事 Jaap Zonneveld 在 1960 年 8 月开发了第一个用于编程语言 ALGOL 60 的编译器,比其他团队生产的编译器早了超过一年。ALGOL 60 被认为是结构化编程发展的一个重要进展。
1962 年,Dijkstra 搬到了埃因霍温,后来又搬到了荷兰南部的纽嫩,在那里他成为了埃因霍温理工大学数学系的教授。该大学没有单独的计算机科学系,数学系的文化也不特别适合他。Dijkstra 尝试建立一个计算机科学家的团队,以便合作解决问题。这对于数学系来说是一种不寻常的研究模式。
在 1960 年代末,他开发了 THE 操作系统(该系统以当时称为 “Technische Hogeschool Eindhoven” 的大学命名),该系统通过使用基于软件的分页虚拟内存,影响了后续操作系统的设计。
迪杰斯特拉于 1973 年 8 月加入伯罗克公司——当时以生产基于创新硬件架构的计算机而闻名,担任其研究员。他的职责包括每年几次访问公司的研究中心,并进行自己的研究,他的研究地点是在位于努恩的家中的二楼书房。实际上,迪杰斯特拉是伯罗克公司唯一的研究员,并且主要在家工作,偶尔会前往公司在美国的分支机构。因此,他将大学的职务减至每周一天。那一天,周二,很快就成为著名的 “周二下午俱乐部” 会议日,在这个研讨会上,他与同事们讨论科学文章,审视所有方面:符号、组织、呈现、语言、内容等。1984 年他搬到美国德克萨斯大学奥斯汀分校后,位于奥斯汀的 “周二下午俱乐部” 分会也随之成立。
在伯罗克公司的岁月中,他的研究成果最为丰硕。他在 EWD 系列中写了近 500 篇文献,其中大部分是技术报告,这些报告主要在一个特定小组内进行私人流通。
迪杰斯特拉于 1984 年接受了德克萨斯大学奥斯汀分校计算机科学系的施伦伯杰百年讲座教授职位。
Dijkstra 在奥斯汀工作直到 1999 年 11 月退休。为纪念这一时刻并庆祝他四十多年对计算机科学的开创性贡献,计算机科学系于 2000 年 5 月 他的 70 岁生日那天组织了一场研讨会。[6]
Dijkstra 和他的妻子从奥斯汀返回荷兰的原居所,得知他只剩下几个月的生命。他曾表示希望在奥斯汀退休,但希望在荷兰去世。Dijkstra 于 2002 年 8 月 6 日因长期与癌症斗争去世。[3][12][13][14] 他和妻子留下了三个孩子:Marcus、Femke 和计算机科学家 Rutger M. Dijkstra。[15]
你很难怪麻省理工学院没有注意到一个来自荷兰小镇的默默无闻的计算机科学家。
——Dijkstra,1960 年代中期在努嫩(Nuenen)自述。
在计算机科学界,Dijkstra 作为一个 “个性” 人物广为人知。在他的著作《编程的学科》(1976 年)的前言中,他写道:“对于缺少参考书目,我既不做解释,也不道歉。” 实际上,他的大多数文章和书籍根本没有参考文献。[10] Dijkstra 选择了这种工作方式,以保持自力更生。[18]
作为一名大学教授,Dijkstra 将教学视为不仅仅是一项必要的活动,而是一项严肃的研究工作。[6] 他对教学的方式非常独特。[19] 他讲课的风格被描述为有些特立独行。讲课时,他在句子之间长时间的停顿,通常被认为是因为英语不是他的母语。然而,这些停顿也为他提供了思考的时间,他被认为是一位在讲课过程中思维敏捷、深刻的思考者。他在奥斯汀的课程与计算机科学无关,而是专注于数学证明的展示。[10] 每学期开始时,他会为每个学生拍一张照片,以便记住他们的名字。他从不使用教科书,唯一的例外可能是他自己的书在编写过程中。在授课时,他更喜欢在黑板上用粉笔写证明,而不是使用投影仪。他鼓励学生提出想法,并探讨这些想法,或者拒绝探讨,因为它们违反了他的某些原则。他布置了具有挑战性的作业,并会认真研究学生的解决方案。他的期末考试是口头的,持续一整周。每个学生都在 Dijkstra 的办公室或家里接受考试,每次考试都持续数小时。[6]
Dijkstra 还非常独创地评估人们的工作能力。当弗拉基米尔·利夫希茨(Vladimir Lifschitz)在 1990 年到奥斯汀面试时,Dijkstra 给了他一个难题。利夫希茨解答了这个问题,并从那时起便在奥斯汀工作。[10]
几十年来,他拒绝在自己的工作中使用计算机。即使在最终屈服于德克萨斯大学同事的劝说,购买了一台 Macintosh 计算机后,他也仅仅用它来收发电子邮件和浏览万维网。[20] Dijkstra 从不使用计算机来写他的文章。他更喜欢依赖打字机,后来则使用他的蒙布朗钢笔。[10] Dijkstra 最喜欢的写作工具是蒙布朗 Meisterstück 钢笔。
他不使用文字处理软件,因为他认为一个人应该能够在不需要草稿、重写或重大编辑的情况下写信或写文章。他会先在脑海中理清思路,然后再动手写,而他曾提到,在他还是一名物理学学生时,他常常在街头漫步时在脑中解决作业问题。[6] Dijkstra 的大多数出版物都是他一个人写的。他从未有过秘书,所有的信件和通讯都由他亲自处理。[10] 当同事们为他 60 岁生日准备了由 Springer-Verlag 出版的 Festschrift 时,他特地给 61 位贡献者逐一写了手写感谢信。[10]
在《谦逊的程序员》(1972)一书中,Dijkstra 写道:“我们不能忘记,我们计算机科学家的任务不是编写程序,而是设计出能够显示所需行为的计算类。”
Dijkstra 还反对将软件工程纳入学术计算机科学的范畴。他写道:“正如经济学被称为‘痛苦的科学’,软件工程应该被称为‘注定失败的学科’,因为它连自己的目标都无法接近,因为它的目标自相矛盾。” 并且 “软件工程已经接受了它的使命——‘如何编程,如果你不能编程’。”[21]
Dijkstra 过着简朴的生活,甚至有些节俭。[10] 他和妻子在努嫩的房子简单、朴素,没有电视、录像机或手机,也不去看电影。[10] 他会弹钢琴,而在奥斯汀时,他喜欢去听音乐会。Dijkstra 是一位热爱古典音乐的听众,他最喜欢的作曲家是莫扎特。[6]
在 Dijkstra 的职业生涯中,他的工作以优雅和简洁著称。[10] 他是一个多产的作家(尤其是散文家),写下了超过 1,300 篇论文,许多文章都是用他那精确的笔迹手写的。这些作品包括散文、寓言、童话和警示、全面的解释和教学用的幌子。大多数作品涉及数学和计算机科学;还有一些是旅行报告,更多地揭示了作者本人,而非所访问的人和地方。他的习惯是复制每篇论文并将其分发给一小群同事,后者再将这些论文复印并转发给另一个有限的科学家群体。[22]
Dijkstra 以他用钢笔精心撰写手稿的习惯而著称。这些手稿被称为 EWDs,因为 Dijkstra 用他的首字母 “EWD” 作为前缀来编号。据 Dijkstra 自己说,EWD 的创作始于他从阿姆斯特丹数学中心转到埃因霍温理工大学(当时称为 Technische Hogeschool Eindhoven)之后。搬到埃因霍温后,Dijkstra 经历了超过一年的创作瓶颈。他将一份新的 EWD 复印件分发给同事,许多接收者将复印件继续复印并转发,从而使 EWDs 在国际计算机科学界传播开来。EWDs 的主题涵盖了计算机科学和数学,包括旅行报告、信件和演讲。这些短文跨越了 40 年的时间。几乎所有 1972 年后的 EWD 都为手写。它们通常不超过 15 页,并且按顺序编号。最后一篇,编号 1318,出现在 2002 年 4 月 14 日。在计算机科学领域,这些被称为 EWD 报告,简称 EWDs。超过 1,300 篇 EWD 已经被扫描,并且随着越来越多的文献被转录以便于检索,它们可在德克萨斯大学的 Dijkstra 档案馆在线查看。[23]
他对简洁的兴趣从小就开始,并在母亲的指导下形成。他曾经说过,他曾问过母亲三角学是否是一个困难的主题。母亲回答说,他必须学会所有的公式,并且如果他需要超过五行才能证明某个问题,那么他就走错了路。[24]
Dijkstra 以机智、口才、粗鲁、直接、对同行的残酷以及巧妙的措辞而闻名。例如,他曾说:“机器是否能思考的问题……就像问潜艇是否能游泳一样无关紧要。”[25] 他给一位有前途的研究员的建议是:“做只有你能做的事。”[6] Dijkstra 还因在与同事互动时直言不讳、批评激烈且缺乏社交技巧而著称。作为一位直言不讳且批判性强的远见者,他坚决反对教授 BASIC 语言。[26]
在许多更具机智的散文中,Dijkstra 描述了一个他自己担任董事长的虚构公司。这个公司叫做 “数学公司”(Mathematics, Inc.),他设想该公司像软件公司一样,将数学定理的生产商业化。他发明了数学公司的一些活动和挑战,并将它们记录在 EWD 系列的几篇论文中。这个虚构的公司曾证明了黎曼猜想,但随后在收取已经基于黎曼假设证明的结果的数学家的版税方面遇到了很大困难。该证明本身是一个商业机密。[27] 公司的许多证明都匆忙推出,之后大部分精力都花费在维护工作上。[28] 一个更成功的尝试是制定了毕达哥拉斯定理的标准证明,替代了 100 多个不兼容的现有证明。[29] Dijkstra 将 “数学公司” 描述为 “有史以来最令人兴奋和最悲惨的生意”。[27] EWD 443(1974 年)描述了他的虚构公司拥有超过 75%的全球市场份额。[30][31]
Dijkstra 在 1972 年获得图灵奖,以表彰他对结构化编程的倡导。结构化编程是一种编程范式,它利用结构化的控制流,而不是使用`Goto`语句跳转到程序中的不同部分。他 1968 年写给《ACM 通讯》的信件《Go To 语句被认为有害》("Go To statement considered harmful")引发了广泛的讨论。现代程序员普遍遵循结构化编程的范式。[32]
他对计算机科学最著名的贡献之一是最短路径算法,称为 Dijkstra 算法,广泛应用于现代计算机科学本科课程的教学中。其他贡献包括:换轨算法(Shunting yard algorithm);THE 多道程序系统(THE multiprogramming system),这是结构化系统的早期重要例子,将系统构建为一组层次结构;银行家算法(Banker's algorithm);以及用于协调多个处理器和程序的信号量构造(semaphore)。Dijkstra 在分布式计算领域提出的另一个概念是自稳定性(self-stabilization)——这是一种确保系统可靠性的替代方法。Dijkstra 算法被用于最短路径优先(SPF)算法,这一算法在路由协议 OSPF 和 IS-IS 中得到了应用。[33][34]
Dijkstra 获得的奖项和荣誉包括:[20]
1969 年,英国计算机学会(BCS)批准设立一项奖项与会士头衔——英国计算机学会杰出会士(DFBCS),根据其皇家章程第 7 条授予。1971 年,Dijkstra 成为首位当选者。[39]
1990 年,为庆祝 Dijkstra 的 60 岁生日,德克萨斯大学奥斯汀分校计算机科学系(UTCS)组织了为期两天的纪念研讨会。来自美国和欧洲的演讲者参与了此次活动,一群计算机科学家为此贡献了研究论文,并编辑成册。[40]
2002 年,日本 C&C 基金会因 Dijkstra 在计算机软件科学基础的建立方面的开创性贡献,特别是在基础软件理论、算法理论、结构化编程和信号量方面的创造性研究,授予 Dijkstra 奖项。Dijkstra 在去世前收到了该奖项的通知,但奖项由他的家人在他去世后的颁奖仪式上代为接受。
在 2002 年去世前不久,Dijkstra 因其在程序计算自稳定性方面的研究获得了 ACM PODC 分布式计算领域影响力论文奖。该年度奖项次年改名为 Dijkstra 奖(Edsger W. Dijkstra 分布式计算奖),以此纪念他。
Dijkstra 计算机科学杰出学术成就奖(芝加哥洛约拉大学计算机科学系)以 Edsger W. Dijkstra 命名。自 2005 年起,该奖项每年颁发给计算机科学专业的毕业生,以表彰其在所有专业课程中的学术表现,评选标准为总体 GPA 和系内教师投票选举。[41]
德克萨斯大学奥斯汀分校计算机科学系(UTCS)于 2010 年 10 月 12 日举办了首届 Edsger W. Dijkstra 纪念讲座。牛津大学名誉教授、微软研究院首席研究员 Tony Hoare 为此次活动的演讲者。此讲座系列得到了 Schlumberger 公司慷慨捐赠的资助,以纪念 Dijkstra 的贡献。
。
 
 
 
 
 
 
 
 
 
 
 
友情链接: 超理论坛 | ©小时科技 保留一切权利