西风

编程祖师爷Niklaus Wirth于1月1日逝世,享年89岁。 

他是图灵奖得主,被称为有史以来最伟大的程序员之一,编程语言Pascal、Euler、Algol W、Modula、Modula-2、Oberon、Oberon-2、Oberon-07等均出自他手。

图灵奖得主Niklaus Wirth逝世,从Euler到Pascal,一代编程巨星陨落_编程语言

他还主导了Lilith和Oberon操作系统的设计与开发,为计算机科学领域写下了十几本著作,其中就包括《算法+数据结构=程序》(1975年)、《编译器构造》(1996年)。

与人们对计算机科学家的刻板印象不同,Niklaus Wirth生活中极具幽默感和个性。

他常开这样一个玩笑:

在欧洲人们通常用正确的发音“Nick-louse Veert”来称呼他,而在美国,人们总是将其混淆为“Nickel’s Worth”。(也就是说,欧洲人直呼其名,而美国人则称他为价值)

懂编程的人都知道,“按名调用”和“按值调用”是两种不同的参数传递方式,这也被大家公认为是的“有史以来最好的CS双关语”。

Eiffel语言创造者Bertrand Meyer发文悼念:

编程语言、编程方法论、软件工程及硬件设计领域的泰斗,Niklaus Wirth,已于1月1日辞世。我们对这位领域先驱、亲密同事、启蒙导师和挚友的离去深感哀痛。

图灵奖得主Niklaus Wirth逝世,从Euler到Pascal,一代编程巨星陨落_Pascal_02

编程界一代传奇

1934年,Niklaus Wirth出生于瑞士北部的一个小镇。

少年时他与数学家Pascal一样热衷于动手实践和思考,尤其喜欢组装飞机模型。

之后,他先后获得苏黎世联邦理工学院电气工程学士学位、加拿大拉瓦尔大学理学硕士学位、加州大学伯克利分校计算机科学博士学位。博士导师是计算机设计先驱Harry Huskey。

图灵奖得主Niklaus Wirth逝世,从Euler到Pascal,一代编程巨星陨落_编程语言_03

早期,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逝世,从Euler到Pascal,一代编程巨星陨落_编程语言_04

这当中,Niklaus Wirth又以Algol-W为基础,创造了他最有影响力的作品——Pascal语言。

遵循他个人的审美,Pascal保留了Algol的代码结构、逻辑完整性和对递归的支持,但去除了复杂性的内容,因此简单、灵活、能够快速编译高效代码。

Wirth后来写道:

最关键的原则是纳入那些被充分理解的功能,同时排除那些尚未尝试或尚未实现的功能,尤其是对于开发者而言。

1971年,Pascal在苏黎世联邦理工学院教学中得到采用,并迅速在全球其他大学获得推广。

为适用不同计算机,Wirth还设计了一款新型编译器,既能为虚拟机编写代码,又能生成可在虚拟机上运行的代码。

用这种方法在新计算机上模拟虚拟机,大大简化了编译器的移植过程。随着个人计算机的广泛普及,Pascal非常适应个人计算机有限的内存和存储空间,成为主流编程语言。

而当时的Borland公司推出了经济实惠且运行迅速的Turbo Pascal编译器,进一步巩固了Pascal在上世纪八十年代作为重要的个人计算机高级编程语言的地位。

也造就了当年的Borland传奇。

图灵奖得主Niklaus Wirth逝世,从Euler到Pascal,一代编程巨星陨落_编程语言_05

直到现在,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逝世,从Euler到Pascal,一代编程巨星陨落_编程语言_06

包括开头提到的Niklaus Wirth常开的那句玩笑,都是他具有独特个人特质的证明。

……

Niklaus Wirth的一生都与编程如影随形。

即便是在80岁生日庆祝研讨会上,Niklaus Wirth还展示了他的新Oberon端口操作系统,运行在一个自制的CPU上,CPU安装在一个随机带有USB外设的FPGA开发板上。

面对Niklaus Wirth的离世,网友们纷纷悼念:

我第一份有报酬的编程工作使用的是Pascal,之后又使用了Modula,这对我后续很多工作产生了深远影响。
我从未有机会见到他,但他对我的职业生涯以及许多其他人都产生了重大影响。

图灵奖得主Niklaus Wirth逝世,从Euler到Pascal,一代编程巨星陨落_Pascal_07

R.I.P

参考链接:
[1]https://twitter.com/Bertrand_Meyer/status/1742613897675178347
[2]https://news.ycombinator.com/item?id=38858012
[3]https://amturing.acm.org/award_winners/wirth_1025774.cfm

—  —





图灵奖得主Niklaus Wirth逝世,从Euler到Pascal,一代编程巨星陨落_计算机科学_08