R.I.P
西风 发自 凹非寺
量子位 | 公众号 QbitAI
编程祖师爷Niklaus Wirth于1月1日逝世,享年89岁。
他是图灵奖得主,被称为有史以来最伟大的程序员之一,编程语言Pascal、Euler、Algol W、Modula、Modula-2、Oberon、Oberon-2、Oberon-07等均出自他手。
他还主导了Lilith和Oberon操作系统的设计与开发,为计算机科学领域写下了十几本著作,其中就包括《算法+数据结构=程序》 (1975年) 、《编译器构造》 (1996年) 。
与人们对计算机科学家的刻板印象不同,Niklaus Wirth生活中极具幽默感和个性。
他常开这样一个玩笑:
在欧洲人们通常用正确的发音"Nick-louse Veert"来称呼他,而在美国,人们总是将其混淆为"Nickel's Worth"。 (也就是说,欧洲人直呼其名,而美国人则称他为价值)
懂编程的人都知道,"按名调用"和"按值调用"是两种不同的参数传递方式,这也被大家公认为是的"有史以来最好的CS双关语"。
Eiffel语言创造者Bertrand Meyer发文悼念:
编程语言、编程方法论、软件工程及硬件设计领域的泰斗,Niklaus Wirth,已于1月1日辞世。我们对这位领域先驱、亲密同事、启蒙导师和挚友的离去深感哀痛。
编程界一代传奇
1934年,Niklaus Wirth出生于瑞士北部的一个小镇。
少年时他与数学家Pascal一样热衷于动手实践和思考,尤其喜欢组装飞机模型。
之后,他先后获得苏黎世联邦理工学院电气工程学士学位、加拿大拉瓦尔大学理学硕士学位、加州大学伯克利分校计算机科学博士学位。博士导师是计算机设计先驱Harry Huskey。
早期,Wirth因创建两种语言在计算机科学领域声名鹊起:Euler、PL360。
Euler是基于他的博士论文工作而开发的通用编程语言,引入了非数值数据类型和运算符优先级等新的概念,被认为是在形式化编程语言设计方面的一次重要尝试。
而PL360系统编程语言,专为IBM System/360系列计算机而设计,采用了特定的解析方法,提供了对硬件的直接控制能力,使得编程更加高效,也更容易编写和维护。
这两种语言都深受早期程序设计语言Algol的影响。
Niklaus Wirth是Algol项目团队的精英成员,该团队定义和创建了一系列语言标准,例如FORTRAN等首批高级语言。
上世纪五十年代末,在计算机科学家还没有专门的学术部门和常规会议时,Algol项目为这个新兴学科奠定了重要基础。通过Algol,Wirth与其他未来的图灵奖得主C.A.R.(Tony)Hoare、Edsger Dijkstra和Peter Naur等展开了深度合作。
Algol 60是Algol项目中最重要的成果之一,其中引入了递归函数、结构化代码块和局部变量等概念。
1966年,Wirth提议要把Algol下一种语言设计成受Euler语言影响的Algol 60扩展和改进版,但遭到团队投票反对,最终团队选择了复杂度很高的Algol 68提案。
1968年,Niklaus Wirth从团队辞职,与Tony Hoare合作,将被拒绝的提案转变为一种非官方的Algol 版本,即Algol-W。
同年,Niklaus Wirth回到了苏黎世联邦理工学院任教,一干就干到了1999年退休。
这当中,Niklaus Wirth又以Algol-W为基础,创造了他最有影响力的作品------Pascal语言。
遵循他个人的审美,Pascal保留了Algol的代码结构、逻辑完整性和对递归的支持,但去除了复杂性的内容,因此简单、灵活、能够快速编译高效代码。
Wirth后来写道:
最关键的原则是纳入那些被充分理解的功能,同时排除那些尚未尝试或尚未实现的功能,尤其是对于开发者而言。
1971年,Pascal在苏黎世联邦理工学院教学中得到采用,并迅速在全球其他大学获得推广。
为适用不同计算机,Wirth还设计了一款新型编译器,既能为虚拟机编写代码,又能生成可在虚拟机上运行的代码。
用这种方法在新计算机上模拟虚拟机,大大简化了编译器的移植过程。随着个人计算机的广泛普及,Pascal非常适应个人计算机有限的内存和存储空间,成为主流编程语言。
而当时的Borland公司推出了经济实惠且运行迅速的Turbo Pascal编译器,进一步巩固了Pascal在上世纪八十年代作为重要的个人计算机高级编程语言的地位。
也造就了当年的Borland传奇。
直到现在,Pascal被认为是C语言问世以前最好的编程语言之一,国际信息学奥林匹克竞赛 (IOI) 还把Pascal语言作为三种程序设计语言之一。
从Euler到Pascal,可以窥见Wirth的一个习惯,他的学术成果或编程语言经常以著名科学家命名,Euler就是为了纪念瑞士著名数学家Euler而命名的,Pascal则是为纪念法国数学家Blaise Pascal而命名。
之后,Wirth与Algol项目的其他资深人士如Edsger Dijksta,对编程方法和形式化方法感兴趣。他参加了IFIP编程方法工作组,提出了逐步完善代码的想法,作为对他们提出的各种"结构化编程"愿景的补充。
之后他又扩展了Pascal,提出了Modula、Modula-2、Oberon等,还主导了Lilith和Oberon操作系统的设计与开发。
除此外,Wirth在其他方面也有许多贡献,如扩充了著名的巴科斯范式,发明了语法图,还写下了《系统程序设计导论》、《算法+数据结构=程序》等众多计算机科学领域的经典著作。
1984年,Niklaus Wirth因"开发了一系列创新的计算机语言",获得计算机科学最高荣誉图灵奖。
在获奖演讲中,Niklaus Wirth讲道人们必须"及早区分什么是本质的,什么是短暂的",并确保"短暂的事物永远不会侵犯到核心设施的系统化、结构化设计"。
每一个项目首先都是一个学习实验。通过发明才能学得最好。只有亲自进行开发项目,我才能对固有的困难有足够的了解,对内在的细节有足够的信心,能够掌握它们。
除了图灵奖之外,维尔特还获得了IEEE计算机先驱奖 (1988年) 、IBM欧洲科学技术奖 (1988年) 。他还被选为瑞士工程院院士 (1992年) 、美国国家工程院外籍院士 (1994年) 。
极具幽默感和个性
天才计算机科学家或是软件工程师常常被视为是与世隔绝的"外来者",Niklaus Wirth却不符合大众的这种刻板印象,他有自己的个性和幽默感。
据网友分享,1968年,Niklaus Wirth好友、计算机科学家Edsger W. Dijkstra向《ACM通讯》 (Communications of the ACM) 提交了一篇论文,原标题是"A case against the goto statement" (反对goto语句的一个案例) 。
为加快发表速度,出版编辑将其改为了"给编辑的信"的形式,随后Niklaus Wirth还为其更改了标题为"The goto statement considered harmful" (认为goto语句有害) 。
随后这个标题被广泛引用,并启发了许多类似的文章标题,如"X considered harmful",甚至出现了一篇名为"Dijkstra considered harmful"的文章。
包括开头提到的Niklaus Wirth常开的那句玩笑,都是他具有独特个人特质的证明。
......
Niklaus Wirth的一生都与编程如影随形。
即便是在80岁生日庆祝研讨会上,Niklaus Wirth还展示了他的新Oberon端口操作系统,运行在一个自制的CPU上,CPU安装在一个随机带有USB外设的FPGA开发板上。
面对Niklaus Wirth的离世,网友们纷纷悼念:
我第一份有报酬的编程工作使用的是Pascal,之后又使用了Modula,这对我后续很多工作产生了深远影响。
我从未有机会见到他,但他对我的职业生涯以及许多其他人都产生了重大影响。
R.I.P
参考链接:
[1]twitter.com/Bertrand_Me...
[2]news.ycombinator.com/item?id=388...
[3]amturing.acm.org/award_winne...