执着的数字思想者——Pascal之父.doc
8页执着的数字思想者——Pascal 之父 Niklaus Wirth 其人图:Niklaus Wirth 近照 引言:程序=算法+数据结构尼克劳斯·沃斯(Niklaus Wirth)教授,Pascal 系列语言之父,世界闻名的计算机科学家 他是苏黎世联邦理工学院(Swiss Federal Institute of Technology 简称 ETH)教授,因发 明了 Pascal 计算机编程语言(1970 年)及其它几种计算机语言而著名其中的 Oberon 语言 被苏黎世一家名为 Oberon microsystems 的 IT 公司投入商业生产Pascal 的基本概念对最 近开发的各种计算机语言影响巨大,特别是一系列面向对象语言,如 Java 等 Wirth 教授的 Pascal 语言影响了几代软件开发人员,并提出计算机界非常有名的“数据结 构十算法= 程序”著名公式,除了发明了多种影响深远的程序设计语言,他还提出“结构化 程序设计”这一革命性概念,为新软件技术“结构化编程”的开发做出了贡献 上个世纪七十年代,Wirth 教授利用假期时间在施乐公司(Xerox PARC)的帕洛阿尔托研究中 心(Palo Alto Research Center)进行研究;之后开发了世界最早的个人计算机之一,名为 “Lilith”(1978-80)。
直到今天,其中一台仍在 Wirth 教授在苏黎世理工学院的办公室里 使用 Wirth 教授曾在苏黎世联邦理工学院授课多年,并出版了许多书籍,其中不少著作被视为计 算机领域的经典 他曾多次因其开拓性成就获奖: 1983 年,获 电气和电子工程师协会(IEEE)Emanuel Piore 奖; 1984 年,获图灵奖(A. M. Turing prize ); 1987 年,获美国计算机学会(ACM)计算机科学教育杰出贡献奖; 1989 年,获 IBM 欧洲杰出科学技术奖 Wirth 教授还在很多大学担任名誉教授,从俄罗斯到南非遍布世界各地执着技术梦 引言:“Everything is software, but software is not everything.” 一切都可以是软件,但软件并不是一切图:退休后的 Wirth 先生 Wirth 的一生,是执着地追求技术的一生,每一个阶段,都有他的执着和独特的思考生于 瑞士,求学美洲,立业瑞士 瑞士是 Wirth 的故乡,也是他天真烂漫童年渡过的地方1934 年 2 月,Wirth 生于瑞士北部 离苏黎世不远的温特图尔(Winterthur) ,Wirth 小时就喜欢动手动脑,组装飞机模型是他 的最大爱好。
他父亲是高中地理学教师,有一个小书房,作为家中唯一的孩子,父亲的书房 成了他发现灵感的地方,这里有许多技术书籍,从这些书中,他发现了涡轮、蒸汽机、火车 头和电报的构造说明,这些问题令他着迷但是这些理论并没有使他满足,他想知晓生活中 这一切东西是怎样运作的,怎么办呢?自己动手做 作为飞机模型迷,他和朋友们建造了自己的飞机,数量还相当可观,足有几十只,最大的一 个机翼跨度足有三米半在高中时,他还是一个化学迷,在家中地下室里建立了一个实验室, 以用来实验在学校里学到的东西象其他的孩子一样,他童年时也有一些有意思的小故事有一次,他和朋友做了一个火箭模型,在实验时,由于没有将硝石、硫磺和木炭等混合物压 缩好,结果使火箭没有到达预定轨道,更为不幸的是,火箭落到了校长的脚下,当时校长正 好溜达到学校的角落里,好处是校长比较和蔼,他们并没有得到纪律处分 也许正是从那时起,燃起了他的技术梦,在他的职业生涯中他走出了一条自己的路中学毕 业以后,Wirth 进入在欧洲甚至全世界都很有名气的苏黎世工学院(ETH) ,获得电子工程学 士学位后,他于 1959 年离开了瑞士,远渡重洋来到加拿大,在加拿大的莱维大学(Laval University)深造,于 1960 年取得硕士学位。
之后他再次迁移,来到美国加利福尼亚,进 入世界闻名的加州大学伯克利分校,于 1963 年获得博士学位并且后来成了斯坦福大学的 助理教授 在加拿大两年,美国八年后,1968 年,Wirth 一家重回到了瑞士,等着他的是承建 ETH 计 算机科学部门的重任计算机科学及计算机科学教育成了他一生不解的缘,不过他的子女并 没有完全继承父业,虽然大女儿和儿子也在学校中工作,但一个搞行政,另一个教音乐 在 ETH 工作 32 年后,1999 年 3 月他正式退休,而 ETH 的计算机科学大厦业已建立 YZ: 您能谈一下自己的家庭吗?在退休的前后,生活有什么样的不同? NW:我和我妻子 Diana 生活在距离苏黎世大约 13 公里的郊区,我有三个孩子,他们都长大了, 有自己的家庭最大的女儿是一所学校校长的秘书;我的儿子给未来要成为教师的学生们教 授音乐;我的儿媳妇是一位学校心理学工作者 我是六年前退休的我喜欢这种闲适的生活,没有压力,也没有时间表,议程,会议和测验 原则上,退休后一个人更能够集中精力干自己喜欢的事情但实际上我仍然有不少杂务我 继续应邀作演讲,继续写论文;作为业余爱好,仍然用我那台 18 岁大的老电脑 Ceres,编 一些程序或搞一些电子制作。
我还将时间用在看文学著作上,也经常出去散步、远足 YZ: 您的生活是怎样和计算机联系在一起的呢? NW: 当时我对于一些计算机问题着迷,可能是因为它新奇而神秘,而且没有人教授1959 年,当我完成了在 ETH 的课程后,我首先移居到加拿大,一年后到了美国加利福尼亚州在 加拿大,我取得了硕士学位并设计了一台模拟计算机在伯克利,我参加了一个小组——多 少有些偶然的成分在其中——为一种程序设计语言的编译器而工作,那是 Algol58 的一种派 生语言这个编译器非常复杂,如何让它有条理又易于理解使我着迷就这样我开始了在设 计程序语言方面工作,有关于编译器方面的,也有句法构造分析方面的这些工作在那时都 是全新的、从没有人了解过的课题我于 1963 年获得博士学位,论文正是对此问题的讨论: 名称是《一般性 Algol 语言》 ,授予单位是加州大学伯克利分校电机工程系 YZ: 您觉得怎样才是一种好的学编程的方式呢?一种编程工具是不是必要的? NW: 我们因为要编程而学习语言,而不要本末倒置本质是编程,编程的工具是语言,是一 种形式符号一种好的方法是从简单的(但不是一眼看穿的)例子开始当设计一个程序时, 必须时刻谨记设计的正确性取决于它的作用。
为了构建更复杂的程序,我们需要能够提供组 织结构的符号或指令,以便能够对各部分充分发展,并将他们顺利组合成一个整体,而且组 合时不需要再对各部分进行验证显然,抽象在其中扮演了重要的角色,符号的作用也不容 小视我们必须鼓励洁净的、结构良好的语言设计,使程序设计者不必拘泥于具体计算机的 烦琐,或者说为产生“好的”输出而烦心 但不幸的是,现在应用最广范的语言并不具备上述特点即使是最简单的程序也充满了含糊 不清的符咒,使得初学者,哪怕是专家,也不知所云它们往往十分复杂,并诱使程序员用 形式奇怪的结构和夸张的风格从前,我们接受的教育是计算机和计算机语言应该定义严谨, 好使一个人可以通过学习这些定义规则而掌握所有的东西不幸的是,现在已经不再如此了 手册变得如此厚重以致没有人使用,这是一个不容置疑错误的征兆以 C++作为最典型的示 例:它对于一切我们曾经学过的关于语言设计的几十年来的东西都置之不理新语言定义模糊,又如 Java,在正式语法出炉之前,已有四个版本的 Java 被发布!程序员们被诱使,指 使去尝试,如果一个方式行不通,就试试别的这种通过反复试验从错误中学习程序的方式 可以称做 hacking。
不幸的是,高速的,密集的交互试验,和耐心的电脑使得这一切成为了 可能但这种方式不能被接受,尤其在学校教育上更难接受,因为它是拙劣工程学的基础, 并且造成今天错误百出的软件工程现在已经到了我们的大学扮演主角的时候了,我们要成 为领导者而不是跟随者 YZ: 一种好的大学教育是什么样子的呢,尤其对计算机科学来说? NW: 我觉得数学中的逻辑学的部分应该加入到程序设计中来这不是程序执行的正确证明, 而是正确的程序结构不用说计算机系的学生在大学阶段将全部的数学基础课程都掌握,尤 其是对事物精确把握,抽象思考的能力 如果一个学生获得某一个应用领域的知识会更好,包括商业,科学计算和自动控制等方面 如果是对于一般教育,我认为还应该包括历史,语言,和自然科学等基础课程 YZ: 学习编程最大的挑战是什么? NW:让我引用 E.W.Dijkstra 的话他说:“编程的挑战不是去将它搞成一团糟” 每一天, 程序员必须同全新的复杂性问题交战,既然所面对的问题已是复杂的,所以让我们避免在编 程中加入更多的人为的复杂的事情YZ: ACM 图灵奖被称做计算机界的诺贝尔奖,图灵奖对您的生活和研究工作有何影响? NW: 同样地,在 1984 年获得图灵奖之后,我老被人们称为 Pascal 语言之父。
但是公正地说, 后来的 Modula-2 和 Oberon 是更好的设计,更强大,更优雅,更简单图灵奖使我的工作得 到了最大程度上认可如果人们是因为通过使用我的作品而认识了我,比因为我获得过某个 奖而认识我,我更愿意接受前者Pascal 一家图:Wirth 名言实录 引言:Program testing can show the presence of mistakes,but never prove their absence. 程序测试能说明存在着错误,但不能说明没有错误Pascal 语言是 Wirth 走向世界和成名的开始,从 1968 年诞生至今,演化成一个庞大的家族 Pascal 是成功的,成功的原因有很多,除了语言本身的精确和严谨,最有趣的莫过于和这 个名字相联系的一个思想家、数学家、物理学家 Blaise Pascal,而后的 Modula 及 Oberon 秉承 Pascal 的特性,但没有发展到 Pascal 般的流行,其中的一个原因也许在于它的名字: 难怪 Wirth 不无遗憾地说,当时为什么没有将 Modula 称作 Pascal-2 呢?! 承接他在美国时的研究工作成就 Alogol-W 语言,Wirth 完善了他的语言系统结构,也有了 从 Pascal 到 Modula 再到 Oberon 的发展。
20 世纪 70 年代中期,为适应并发程序设计的需要,Wirth 成功开发 Modula,除了提供并发 程序设计功能,另一个重要特征是引进了模块概念Modula 语言还特别适合于书写系统程 序,比 Modula 具有更加重大意义的是 Modula-2 1976 年,Wirth 再次赴美国,到 Xerox 公司的 Palo Alto 研究中心参与 Alto 计算机的设计与开发工作Alto 是世界上第一个具有 图形用户界面的个人计算机系统 Wirth 回到瑞士以后,参考 Alto 的经验,设计、开发 Lilith 个人计算机系统为了和Lilith 的体系结构相配合,沃思决定在 Modula 基础上开发新版本,作为整个系统的开发语 言Modula-2 与 Modula 相比,语法更加简洁,更加强调界面设计,模块的可重用性更好 M0dula-2 在优雅性(elegance)和简洁性(simplicity)两方面都比 Modula 更进一步 Lilith 的操作系统、图形软件包、数据库系统、网络协议套件、文件服务器等基本系统和 大量应用模块全都是用 M0dula-2 开发的目前世界上已经开发了近百个 Modula-2 的编译 系统,北美和欧洲的许多大学已经用 Modula-2 代替 PASCAL 作为计算机系本科生的第一门 程序设计课程。
在 Lilith 项目中,沃思坚持将计算机体系结构、语言、操作环境。





