奥利·约翰·达尔 :著名的计算机学家

更新时间:2024-09-20 20:57

简介

奥利·约翰·达尔Ole-Johan Dah,出生于1931年10月12日于Mandal,挪威,去世于2002年6月29日。

1961年到1965年,逾Nygaard一起,Dahl设计开发了著名的simula 1语言和后来的Simula 67语言(1965–1968)。Simula被认为是第一个面向对象的高级编程语言

1968年,Dahl开始任职于挪威奥斯陆大学(www.uio.no). 在Oslo大学其间,Dahl,与著名的CAR Hoare, Edsger Dijkstra,合作撰写了著名的结构化编程(Structured Programming)一书。该书可能是上世纪70年代关于软件设计方面最有名的学术书籍。

2001年,与Nygaard 一道,Dahl获得IEEE的IEEE John von Neumann Medal

2002年2月,与Nygaard一道,Dahl获得了图灵奖。同年6月,Dahl离开了人世。

经历与成就

1967年5月20日,在挪威奥斯陆郊外的小镇莉沙布举行的IFIP TC-2 工作会议上,挪威科学家Ole-Johan Dahl和Kristen Nygaard正式发布了simula 67语言。Simula 67被认为是最早的面向对象程序设计语言,它引入了所有后来面向对象程序设计语言所遵循的基础概念:对象、类、继承。之后,在1968年2月形成了Simula 67的正式文本。

Ole-Johan Dahl与Nygaard   挪威科学家Ole-Johan Dahl,Kristen Nygaard

也是在1968年,荷兰教授E.W.Dijkstra提出了“GOTO语句是有害的”观点,指出程序的质量与程序中所包含的GOTO语句的数量成反比,认为应该在一切高级语言中取消GOTO语句。这一观点在计算机学术界激起了强烈的反响,引发了一场长达数年的广泛的论战,其直接结果是结构化程序设计方法的产生。

相信当时没有任何人预见到当年发生的这两件事对后来计算机技术,特别是软件技术所产生的深远影响。尽管这两种方法的思想差异巨大,但是多年以后,无论是Ole-Johan Dahl和Kristen Nygaard,还是E.W.Dijkstra,都因其在这一年所取得的成就,获得了计算机界的诺贝尔奖——图灵奖。为了纪念挪威的这两位科学家的卓越贡献,在挪威研究基金会(挪威航空 Research Council)的筹划下,Simula研究所 (Simula Research Laboratory)于2001年1月正式成立。

随着计算机技术的迅猛发展,硬件成本不断降低,而软件成本却不断增加,因此,如何缩短软件生产周期和提高维护效率,研制出高质量的软件产品成为一个重要课题。

程序设计思想的进步

在20世纪60年代,软件曾出现过严重危机,由软件错误而引起的信息丢失、系统报废事件屡有发生。为此,1968年,荷兰学者E.W.Dijkstra提出了程序设计中常用的GOTO语句的三大危害:破坏了程序的静动一致性;程序不易测试;限制了代码优化。

Ole-Johan Dahl此举引起了软件界长达数年的论战,并由此产生了结构化程序设计方法,同时诞生了基于这一设计方法的程序设计语言Pascal。

瑞士计算机科学家Niklaus Wirth开发的Pascal,一经推出,它的简洁明了以及丰富的数据结构和控制结构,为程序员提供了极大的方便性与灵活性,同时它特别适合微计算机系统,因此大受欢迎。结构化程序设计思想采用了模块分解与功能抽象和自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子程序,便于开发和维护。因此,结构化方法迅速走红,并在整个20世纪70年代的软件开发中占绝对统治地位。

但是,到了70年代末期,随着计算机科学的发展和应用领域的不断扩大,对计算机技术的要求越来越高。结构化程序设计语言和结构化分析与设计已无法满足用户需求的变化,于是面向对象技术开始浮出水面。

面向对象程序设计方法起源于simula 67语言。在程序设计语言的发展史上,20世纪60年代后期是承上启下的重要时期。这一时期有三种重要的语言问世,即Simula 67、由一批顶尖计算机科学家共同设计的Algol 68、以及为IBM 360系列机配套开发的PL/I。这三种语言虽均有所创新,但Simula 67的面向对象概念的影响是最巨大而深远的。它本身虽因为比较难学、难用而未能广泛流行,但在它的影响下所产生的面向对象技术却迅速传播开来,并在全世界掀起了一股OO热潮,至今盛行不衰。面向对象程序设计在软件开发领域引起了大的变革,极大地提高了软件开发的效率,为解决软件危机带来了一线光明。

但是,事实表明,面向对象程序设计方法虽然比结构化方法能更自然地表现现实世界,但它不是灵丹妙药,并不能解决所有问题,它本身存在固有的内在的局限性。最近兴起的面向方面编程(AOP)正是为了改进上述程序设计方法学的不足。AOP被视为是“后”面向对象时代的一种新的重要的程序设计技术。而从更广义的范畴看,在过去的40年里,软件体系结构试图处理日益增长的软件复杂性,但复杂性却仍继续增加,传统的体系结构好像已经达到了其处理此类问题的极限。新兴的Web 服务通过允许应用程序以对象模型中立的方式实现互连,从而提供了一个更强大、更灵活的编程模型,并将对软件开发方法产生巨大的影响。

争议

谁是面向对象之父?

图灵奖得主(2003年) Alan Kay是面向对象之父大概是有争议的,因为公认的第一个OO语言是Simula,由另外两个图灵奖得主(2001年)Ole-Johan Dahl and Kristen Nygaard发明,所以维基百科将三者都称为OO之父。不过考虑到面向对象编程这个名字却是Alan Kay的发明。

时光倒转到1966年,当时Kay还在犹他大学读研究生,师从图灵奖得主(1988年)Ivan Sutherland。受Sketchpad, simula, ARPAnet 的设计和 Burroughs B5000 (一种有独特设计的大型机,1961年问世,实现了最早的虚拟机)等等的影响,他开始思考程序设计的架构。1967年的某个时候,当被人问及自己在做什么的时候,Kay回答:“It's object-oriented programming”。Kay回忆,OO最初的概念来自四部分:

1. 对象就像是生物学里的细胞,或者网络中的一台计算机,只能够通过消息来通信(因此消息概念出现很早,但是它在程序设计语言中实际可用却花了较长时间。)

2. 我想去掉数据(【刘江按】此处可能指数据的封装,因为B5000的设计特点之一是禁止非授权的数据访问)。B5000通过其令人难以置信的硬件架构实现了这一点。我意识到,细胞/计算机的隐喻有可能实现这一目的, "<-" 符号可以只是表示消息而已。(这一点花了我很长时间,因为我实际上认为所有这些符号都是函数和过程的名字。)

3. 我的数学背景使我意识到,每个对象可以有很多运算,而且可以有很多系列运算,这样会非常有用。术语”多态“是非常晚(应该是由Peter Wegner)提出的,而且不那么合理,因为它实际上来自函数术语体系,而我所考虑的含义不仅仅是函数。我发明了一个术语" genericity"来指代拟代数(quasi-algebraic)形式的泛型行为。

4. 我不喜欢simula I 或者Simula 67的继承方式(虽然我认为Nygaard和Dahl都是伟大的思想者和设计者)。因此我决定在有了更深刻理解之前,先不考虑将继承作为内置特性。我对这种架构的最初实验是在Van Wijngaarten和Wirth的"Generalization of ALGOL"和Wirth的Euler基础上的修改,都是类似LISP的,但具有更传统的可读性更好的语法。我那时候还不太理解 LISP古怪的元语言概念,但是从其他来源包括Irons' IMP那里获得了类似的可扩展语言的想法。

第二阶段,我最终理解了LISP,然后以此为基础设计了更小也更强大的迟绑定底层结构。Dave Fisher的论文是以McCarthy风格完成的,他有关可扩展控制结构的想法对我非常有帮助。这时另一个大的影响是Carl Hewitt的PLANNER。

最初的smalltalk版本就出自以上这些来源。而对于后来的Smalltalk版本,历史对它们的批评是:又倒退回simula的老路上,没有实现更安全的尽可能随处可用的扩展机制。

在被问及面向对象程序设计的含义时,Alan Kay这样回答:

我并不反对类型,但是我不知道哪个类型系统没有大问题的,因此我仍然喜欢动态类型化。

对我而言,面向对象程序设计只意味着消息发送(messaging),状态处理的局部保存、保护和隐藏(local retention and protection and hiding of state-process),还有一切东西的极端迟绑定(extreme late-binding of all things)。这些在smalltalkLISP中都可以实现。可能还有其他系统,但我不知道。

对上面比较令人费解的”状态处理的局部保存“那句,Alan Kay又做了进一步解释,但仍然不好懂。大概意思似乎是说面向对象有两条道路,一种是他所支持的比较小众的无数据(bio/net non-data-procedure route),一种是现在比较主流的ADT。

获奖

Ole-Johan Dahl (10/12/1931—06/29/2002)图灵奖获得时间:2001年。第三十六位图灵奖(2001年)获得者。

图灵奖引用(Turing Award Citation):

For ideas Fundamental to the emergence of object oriented programming, through their 设计 of the programming languages simula I and Simula 67.

(授予Ole-Johan Dahl 图灵奖以表彰其在)通过设计编程语言Simula I和Simula 67中产生的对面向对象程序语言出现至关重要的观念。

Simula 概念上讲是Algol 60的一个超集,引入了对象(Object),类(Class),子类(Subclasses),虚拟方法(Virtual Methods),垃圾收集(Garbage collection)等等面向对象编程语言的概念和机制。simula也因此被认为是第一个面向对象的程序语言。

个人生活

奥勒-约翰·达尔早期的兴趣是阅读、数学和弹钢琴。他的母亲是一位家庭主妇,他的姐姐和哥哥都没有学术倾向。他七岁时,他的家人搬到了奥斯陆南部的德拉门。他十三岁的时候,他的堂兄被纳粹枪杀,全家逃到了瑞典。因此,他错过了小学最后一年的学习,以校外考生的身份参加入学考试后直接进入高中。

奥勒-约翰·达尔和他的妻子托芙有两个孩子,弗雷德里克和英格丽德。

奥勒-约翰·达尔于1998年被诊断出患有癌症,但这种疾病一开始似乎并没有危及生命。然而,2001年秋天,癌症病情恶化。之后于2002年6月29日去世,年仅70岁。

奥勒-约翰·达尔与克里斯汀·尼加德(Kristen Nygaard)是老朋友兼同事关系,一起在扬·V·加威克(Jan V. Garwick)的指导下工作,他们曾经一起荣获图灵奖以及电气和电子工程师协会(IEEE)约翰·冯·诺依曼奖。在奥勒-约翰·达尔去世的几周后,2002年8月9日,克里斯汀·尼加德也去世了。

人物评价

奥利-约翰·达尔和克利斯登·奈加特通过他们创造的编程语言Simula I及Simula 67,为面向对象编程的概念奠定了重要基础(Together with Kristen Nygart, Ollie-John Dahl made an outstanding contribution to providing the basis for the emergence of object-oriented programming through their programming languages Simula I and Simula 67)。(2001年图灵奖评)

奥利-约翰·达尔与克利斯登·奈加特共同被视为Simula及面向对象编程的创始人。作为研究者,奥利-约翰·达尔以追求简洁、高雅和纯粹闻名(Professor Ole-Johan Dahl was a Norwegian computer scientist and is considered to be the father of Simula and object-oriented programming, together with Kristen Nygaard.his characteristic as a researcher was the quest for simplicity, elegance, and purity)。(奥斯陆大学评)

参考资料

科技中国 奥利-约翰·达尔(Ole-Johan Dahl)简介:.www.techcn.com.cn.2010-03-12

奥勒-约翰·达尔.ACM.2024-08-07

In memory of Ole-Johan Dahl and Kristen Nygaard.www.jot.fm.2024-08-08

Tribute to Ole-Johan Dahl - Department of Informatics.奥斯陆大学.2024-08-07

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}
友情链接: