Simula是两种模拟编程语言的名字,Simula I和Simula 67,由Ole-Johan Dahl和Kristen Nygaard于20世纪60年代在奥斯陆的挪威计算中心开发。在语法上,它是ALGOL 60[1]: 1.3.1的近似超集,也受到Simscript设计的影响[2]。
Simula 67引入了对象、[1]:2、5.3类、[1]:1.3.3、2继承和子类、[1]:2.2.1虚拟过程、[1]:2.2.3协程、[1]:9.2和离散事件模拟、[1]:14.2和特色垃圾收集。[1]:9.1在Simula衍生品中引入了其他形式的子类型(除了继承子类)。[引文需要]
Simula被认为是第一个面向对象的编程语言。顾名思义,1962年的第一个Simula版本是为模拟而设计的;尽管Simula 67被设计成一种通用编程语言[3],并为当今面向对象语言的许多特性提供了框架。
Simula已经广泛应用于各种应用中,例如模拟超大规模集成(VLSI)设计、过程建模、通信协议、算法和其他应用,例如排版、计算机图形学和教育。Simula的影响经常被低估,并且Simula类型的对象在c++、Object Pascal、Java、c#和许多其他语言中被重新实现。计算机科学家,如c++的创造者Bjarne Stroustrup和Java的创造者James Gosling,已经承认Simula是一个主要的影响。[4]
下面的叙述是基于Jan Rune Holmevik的历史论文[5][6]。
克里斯汀·奈加德于1957年开始编写计算机模拟程序。Nygaard认为需要一种更好的方式来描述系统的异质性和运作。为了进一步实现他关于描述系统的正式计算机语言的想法,尼加德意识到他需要一个比他有更多计算机编程技能的人。1962年1月,奥勒-约翰·达尔加入了他的工作。不久之后,决定将该语言与ALGOL 60连接起来。到1962年5月,模拟语言的主要概念已经确定。SIMULA I诞生了,这是一种专门用于模拟离散事件系统的编程语言。
1962年5月下旬,克里斯汀·奈加德应邀访问埃克特-莫奇利计算机公司,与他们的新UNIVAC 1107计算机的营销有关。在那次访问中,尼加德向Univac的系统编程总监罗伯特·比默(Robert Bemer)介绍了Simula的想法。Bemer是ALGOL的忠实粉丝,他发现Simula项目很有吸引力。Bemer还在国际信息处理联合会主办的第二届信息处理国际会议上担任会议主席。他邀请了Nygaard,后者发表了一篇论文“SIMULA - ALGOL在离散事件网络描述中的扩展”。
挪威计算中心在1963年8月以相当低的价格得到了一台UNIVAC 1107, Dahl根据与UNIVAC签订的合同在这台机器上实现了SIMULA I。实现基于UNIVAC ALGOL 60编译器。到1965年1月,SIMULA I在UNIVAC 1107上完全运行。在接下来的几年里,Dahl和Nygaard花了很多时间教授Simula。Simula传播到世界上的几个国家,Simula I后来在其他计算机上实现,包括Burroughs B5500和俄罗斯Ural-16。
1966年,C. a . R. Hoare引入了记录类构造的概念,Dahl和Nygaard将其扩展为前缀概念和其他特征,以满足他们对广义过程概念的要求。1967年5月,Dahl和Nygaard在奥斯陆举行的模拟语言IFIP工作会议上发表了他们关于类和子类声明的论文。本文成为Simula 67的第一个正式定义。1967年6月,召开了一次会议,以标准化该语言并启动一些实现。达尔提出将类型和类的概念统一起来。这引发了严肃的讨论,该提议被董事会否决了。在1968年2月Simula标准组(SSG)的第一次会议上,Simula 67正式标准化。
来自DECsystem-10 SIMULA语言手册的页面,由瑞典国防研究所出版
Simula对Smalltalk和后来的面向对象编程语言的发展都很有影响。虽然Simula只支持协程而不是真正的并发,但它也帮助启发了并发计算的actor模型。[7]
2001年11月,Dahl和Nygaard被电气和电子工程师协会授予IEEE John von Neumann奖章,以表彰他们“通过设计和实现SIMULA 67引入了面向对象编程的基本概念”。2002年4月,他们获得了2001年的A。美国计算机协会(ACM)颁发图灵奖,获奖理由是:“通过他们设计的编程语言Simula I和Simula 67,为面向对象编程的出现提供了基础思想。”Dahl和Nygaard分别于当年的6月和8月去世[10],而ACM图灵奖讲座[11]原定于2002年11月在西雅图举行的OOPSLA会议上发表。
Simula研究实验室是一个以Simula语言命名的研究机构,Nygaard从2001年开始在那里担任兼职职位。奥斯陆大学的新计算机科学大楼被命名为Ole Johan Dahl’s House,以纪念Dahl,主礼堂被命名为Simula。