Algorithm 版 (精华区)

发信人: ssos (存在与虚无·戒酒戒网), 信区: Algorithm
标  题: 1984年图灵奖获得者:尼克劳斯·威茨
发信站: 哈工大紫丁香 (2001年08月23日17:09:28 星期四), 站内信件

结构化程序设计的首创者
----------------------------------------------------------------------------
----
----凡是学过一点计算机的人大概都知道“算法+数据结构=程序”这一著名公式。提出
这一公式并以此作为其一本专著书名的瑞士计算机科学家尼克劳斯·威茨(Niklaus Wir
th)于1984 年获得了图灵奖。这是瑞士学者中唯一获此殊荣的人。
----威茨1934年2月15日生于瑞士北部离苏黎世不远的温特图尔(Winterthur),其父瓦尔
特是一位地理学教授。威茨小时就喜欢动手动脑,他的最大爱好就是组装飞机模型。中
学毕业以后,威茨进入在欧洲甚至全世界都很有名的苏黎世工学院(ETH),1958年取得学
士学位。之后他到加拿大的莱维大学深造(Laval是和加拿大名城魁北克隔圣劳伦斯河相
望的一座城市),于1960年取得硕士学位。之后他又一次迁移到美国加州,进入加州大学
伯克利分校,于1963年获得博士学位。
----学成以后,威茨受聘到斯坦福大学刚刚成立的计算机科学系工作。著名的斯坦福大
学门槛极高,怎么会看中这个来自欧洲小国的毛头小伙子呢?原来在50年代末、60年代初
,威茨的计算机经验和成就相当显赫:在苏黎世工学院时,瑞士的计算机先驱斯帕塞(A
.P.Speiser,他曾经出任IFIP的主席)曾经给威茨上过有关计算机的课程,也曾经用过由
斯帕塞开发的计算机ERMETH;在莱维大学时,威茨学了数值分析,上过AlvacⅢE计算机
;在伯克利时,威茨先是有一台Bendix G-15计算机可用,后来又参加了为IBM 704开发
NELIAC语言编译器的科研小组(NELIAC是一个类似于Algol 58的语言)。威茨在撰写博士
论文时,Algol 60报告已经发表。Algol 60是第一个清晰定义的语言,其语法是用严格
公式化的方法说明的。但当时已有一些学者认识到,清晰的规格说明对于可靠而有效的
实现是必需的,但还不够。Algol 60报告中还有一些缺陷和不足。威茨在和Algol的设计
者之一冯·维京格藤(Andrian van Wijngaarden)多次接触和讨论以后,决定对Algol 6
0做进一步改进,并以此为自己的博士论文课题。这就诞生了由威茨所设计的第一个语言
Euler。Euler虽然在实用性上考虑并不很周到,但在学术上却非常优美,为编译器的系
统设计创造了一个很好的基础。
----正是由于上述经历和成果,斯坦福大学看中了威茨。与此同时,IFIP负责Algol语言
完善与扩充的工作小组也看中了威茨,吸收他参加工作。当时,小组中有两派,一派劲
头十足地要设计一个新语言,以便树起一个新的里程碑;另一派则觉得时间太紧,主张
对Algol 60进行适当扩充。威茨参加进去以后,自称同时属于这两派,并提交了一份建
议书。这份建议书经过霍尔(Tony Hoare)等人的修改、完善以后获得通过,这就是Algo
l W(W是威茨名字的首字母)。第二年,也即1966年,Algol W在斯坦福大学的第一台IBM
 360上成功实现并正式应用。这中间还有一个小插曲:IBM 360当时只提供汇编语言和F
ORTRAN语言,但威茨和他的学生都觉得这两者并不适宜于作为设计编译器的工具。为此
,威茨决定定义另一种语言来描写Algol W的编译器。威茨用了两周时间写出这个语言的
定义,然后用了4个月的时间在Burroughs公司的Bu5000计算机上完成了交叉编译程序,
而威茨的一个学生则把这个交叉编译程序移植到IBM 360上去。这些额外的工作极大地加
快了Algol W编译器的开发,同时催生了一个新的语言PL360。PL360 虽然是作为辅助工
具而开发的,但却在许多地方获得应用。
----Algol W及PL360的成功奠定了威茨作为程序设计语言专家的地位,一举成名。但威
茨是一个爱国心极强的人,成名后的他拒绝了斯坦福大学的挽留,于1967年回到祖国,
先在苏黎世大学任职,但第二年就回到他的母校苏黎世工学院。在这里,他首先设计与
实现了PASCAL语言,这是在CDC6000上开发成功的。说来有趣,威茨开发PASCAL的初衷是
为了有一个适合于教学的语言,并没有想到商业应用。但PASCAL一经推出,由于它的简
洁明了,更由于它特别适合于由微处理器组成的计算机系统,竟然广泛地流传开来。在
C语言问世以前,PASCAL是风靡世界、最受欢迎的语言之一。单是威茨的一个学生菲力浦
·凯恩(Phillipe Kahn),从ETH毕业以后,到美国加州办了一个软件公司,就卖出了10
0多万个PASCAL拷贝,大获成功。PASCAL之所以成功和受到欢迎,主要是因为它具有以下
特点:
----1.提供了丰富的数据类型和构造数据的方法。除一般的整型、实型、布尔型数据外
,PASCAL还增加了字符型、子域类型、记录结构类型、文件类型、集合类型和指示字类
型,为程序员增加了极大的方便,也为程序设计提供了极大的灵活性。
----2.既保留了GO TO语句,同时又增加了大量的控制结构,如if-then-else语句、cas
e语句、while语句、repeat语句、for语句,还允许复合语句和处理记录变量的分量使用
with语句这种缩写形式。
----PASCAL的许多成功特点后来被C、Ada等语言所继承和发展。因此,PASCAL在程序设
计语言的发展史上具有承上启下的重要里程碑意义。
----1971年,威茨基于其开发程序设计语言和编程的实践经验,在4月份的《Communica
tions of ACM》上发表了“通过逐步求精方式开发程序” (“Program Development by
 Stepwise Refinement”)的论文,首次提出了“结构化程序设计” (Structured Prog
ramming)的概念。这个概念的重点是 :不要求一步就编制成可执行的程序,而是分若干
步进行,逐步求精。第一步编出的程序抽象程度最高,第二步编出的程序抽象程度有所
降低,……,最后一步编出的程序即为可执行的程序。用这种方法编程,似乎复杂,实
际上优点很多,可使程序易读、易写、易调试、易维护,也易于保证程序的正确性及验
证其正确性。威茨提出的这种结构化程序设计方法又称为“自顶向下”或“逐步求精”
法,在程序设计领域引发了一场革命,成为程序开发的一个标准方法,尤其是在后来发
展起来的软件工程中获得广泛应用。有人评价说威茨的结构化程序设计概念“完全改变
了人们对程序设计的思维方式”,是一点也不夸张的。1983年1月,ACM在纪念《Commun
ications of ACM》创刊25周年时,从其1/4个世纪发表的大量论文中评选出有 “里程碑
式意义的研究论文”25篇,每年1篇,威茨的这篇论文就是其中之一。
----PASCAL的成功也罢,结构化程序设计思想的巨大影响也罢,都没有停止威茨继续创
造性的研究与开发工作。70年代中期,为适应并发程序设计的需要,威茨又成功开发了
一个获得广泛应用的语言Modula。(下转第B6版)(上接第B5 版)Modula除了提供并发程序
设计功能之外,另一个重要特征就是引进了模块概念(这也是这个语言命名为Modula的原
因)。此外,它还引进了“进程”(Process)这一和并发程序相联系而产生的重要概念。
Modula语言特别适合于书写系统程序。但是,这个语言的第二个版本Modula-2却具有比
Modula更加重大得多的意义。这是1976年,威茨再次赴美国,到Xerox公司的Palo Alto
研究中心参与Alto计算机的设计与开发工作。我们以前介绍过, Alto计算机是世界上第
一个具有图形用户界面的个人计算机系统(可惜Xerox公司没有把它商品化,而由Apple公
司的人学去了它的技术推出了Macintosh)。威茨回到瑞士以后,参考Alto的经验,设计
、开发Lilith个人计算机系统。为了和Lilith的体系结构相配合,威茨决定在Modula的
基础上开发Modula-2,作为整个系统的开发语言。Modula-2与 Modula相比,语法更加简
洁,更加强调界面设计,模块可以重用。它共有3个编译单元,即程序模块,定义模块和
实现模块,既提高了可读性,又有助于分别编译。Modula-2在优美性(elegance)和简洁
性(simplicity)方面都比Modula更加提高了一步。Lilith的操作系统、图形软件包、数
据库系统、网络协议套件、文件服务器等基本系统和大量应用模块都是用Modula-2开发
的。在Lilith项目中,威茨坚持将计算机体系结构、语言、操作环境三者统一起来,进
行集成化、一体化设计,这一成功经验是具有革命性的创举,从而使这个项目在计算机
科学史上占有很重要的地位。
----除了程序设计语言本身以外,在其他方面威茨也有许多创造。为了定义和描述PASC
AL和Modula,威茨对著名的“巴科斯-诺尔范式”BNF进行了扩充,成为EBNF(Extended 
BNF)。我们目前所看到的许多语言的BNF实际上是EBNF,不过人们往往忽略掉这个“E”
字。和BNF一起出现的,还常常有一些看上去像铁路图那样的图形,这叫“语法图”(sy
ntax chart或syntax diagram)或干脆就叫“铁路图”(railroad diagram),这也是由威
茨所设计与发明的,这种图形标记法的描述能力等价于BNF,但当然更易于阅读与理解。

----近年来威茨致力于“Oberon计划”(Oberon是希腊神话中的仙境之王和女神Titania
的丈夫),威茨的目标是要使Oberon语言超越Pascal和Modula,使设计出的操作系统和编
译器功能更加强劲。1992年他写了两本书向读者推介Oberon计划(见后),可见其对这个
计划的重视。
----威茨的学术著作很多,主要有如下几种,其中一些是由法文译成英文的:
----《系统程序设计导论》(《Systematic Programming:An Introduction》,Prentic
e-Hall,1973。其法文版已出至第5版) ;
----《算法+数据结构=程序》(《Algorithms+Data Structures=Programs》,Prentice-
Hall,1976) ;
----《算法和数据结构》(《Algorithms and Data Structures》,Prentice-Hall,1986
) ;
----《Modula-2程序设计》(《Programming in Modula-2》, Springer,1988,第4版)
 ;
----《PASCAL用户手册和报告:ISO PASCAL标准》 (《PASCAL User Manual and Repor
t:ISO PASCAL Standard》,Springer,1991) ;
----《Oberon计划:操作系统和编译器的设计》(《Project Oberon:the Design of an
 Operating System and Compiler》,ACM Pr.,1992) ;
----《Oberon程序设计:超越Pascal和Modula》(《Programming in Oberon:Steps bey
ond Pascal and Modula》,ACM Pr.,1922) ;
----《数字电路设计教材》(《Digital Circuit Design for Computer Science Stude
nts:An Introductory Textbook》,Springer,1995)。
----ACM除了在1984年授予威茨图灵奖外,1987年又授予他另一项奖:计算机科学教育杰
出贡献奖。另一个重要的国际学术组织IEEE也授予过威茨两个奖项:1983年的Emanual 
Piore奖和1988年的计算机先驱奖(Computer Pioneer Award)。1992年,加州大学伯克利
分校命名威茨为“杰出校友”。
----威茨是在1984年10月于旧金山举行的ACM年会上接受图灵奖的。威茨发表了题为“从
程序设计语言设计到计算机建造”(From Programming Language Design to Computer 
Construction)的图灵奖演说,回顾了自己在计算机领域所做的工作。演说全文刊载于《
Communications of ACM》1985年2月,159-164页,也可见《ACM 图灵奖演说集》(《AC
M Turing Award Lectures-The First 20 rears:1966-1985》,ACM Pr.),179- 196页。

----威茨现仍在苏黎世工学院任教,他的电子信箱为: wirth@inf.ethz.ch

--

   
<<社会契约论>>是一本好书,应当多读几遍
风味的肘子味道不错,我还想再吃它      

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.230.220]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.399毫秒