没人写的语言,凭什么统治了全世界代码?

2026-08-17 14:39:41 RAIZ

语言:Simula

创建年份:1962(Simula I)/ 1967(Simula 67)

创建者:克里斯滕·尼加德(Kristen Nygaard,1926-2002)、奥利-约翰·达尔(Ole-Johan Dahl,1931-2002)

手算核反应堆的人

1950 年,奥斯陆。一群年轻人坐在桌子前,每人面前一台手摇机械计算器。他们的任务:计算挪威第一座核反应堆中铀棒的共振吸收。

领头的叫克里斯滕·尼加德(Kristen Nygaard),24 岁,刚走出大学没两年。他们用的方法叫蒙特卡罗模拟——说白了,就是用随机数反复模拟中子与铀原子的碰撞,统计出最可能的结果。在今天,这种事用 Python 写三十行代码,一秒出结果。在 1950 年,他们靠人手摇。摇了整整一年。

尼加德后来清醒地意识到一个问题:这个世界的复杂系统——港口调度、工厂流水线、核反应堆——没有一个统一的方法来描述。每次模拟都得从零开始,重新写所有逻辑,重新估计所有参数。一群运筹学专家,干的活跟手工业时代没有本质区别。

这个念头在他脑子里转了十年。直到他在挪威计算中心(Norwegian Computing Center, NCC)找到一个能把它变成现实的人。

睿智创新RAIZ,一体化IT服务提供商

两个人,一间办公室,半年不到

1962 年 1 月。挪威计算中心,奥斯陆。

奥利-约翰·达尔(Ole-Johan Dahl)走进尼加德的办公室。30 岁的达尔刚从荷兰回来,他在阿姆斯特丹数学中心学过编译器设计,是挪威少数真正懂"怎么在计算机上实现一门语言"的人。

尼加德需要的就是这个人。他是概念先驱,脑子里有系统描述和模拟的全部框架,但写不出来编译器。达尔是严谨的实现者,能把抽象的概念翻译成机器能执行的指令。

两人一拍即合。他们做了两个决定。

第一,基于 ALGOL 60。那玩意儿是当时的学术标准,语法优雅,有块结构、类型系统,还有成熟的 BNF 范式描述。不用从头造轮子。

第二,把"进程"(Process)作为核心概念。一个进程就是一个独立的实体——港口里的一艘船、流水线上的一件零件、排队系统中等待的那个人。它有自己的状态,可以被创建、被激活、被暂停、被销毁。

不到五个月,到 1962 年 5 月,Simula I 的主要概念已经成形。尼加德受邀去美国,在埃克特-莫奇利计算机公司(Eckert–Mauchly Computer Corporation)的 UNIVAC 1107 发布会上,向系统编程总监鲍勃·贝默(Bob Bemer)介绍了 Simula。

贝默是 ALGOL 的铁杆粉丝,听完当场表示支持。他还邀请尼加德在当年的 IFIP 国际信息处理大会上发表论文——"SIMULA: An Extension of ALGOL to the Description of Discrete-Event Networks"。

挪威计算中心因此以大幅折扣拿到了 UNIVAC 1107。达尔在这台机器上实现了 Simula I 编译器。到 1965 年 1 月,编译器完全投入运行

从达尔走进尼加德办公室那一天算起,总共三年。

睿智创新RAIZ,一体化IT服务提供商

一颗种子,开出了预料之外的花

Simula I 的定位很窄:一门离散事件仿真语言。用它写程序的人,关心的是排队网络、生产调度、港口物流。出了仿真圈,没人用它。

但达尔和尼加德在推广 Simula I 的过程中发现了一件事。

"进程"这个概念,本质上比仿真要广泛得多。任何一个软件系统里的任何一个实体——文件、窗口、账户、按钮——都可以被当作一个"进程"来对待。有自己的数据,有自己的行为,可以和其他进程交互。

这跟今天程序员天天在用的那个词,一模一样。

1966 年,英国计算机科学家 C.A.R. 霍尔(C.A.R. Hoare)提出了"记录类"(record class)的概念。达尔和尼加德抓住这个思路,做了一个至关重要的推广:加了前缀(prefix)。

举个直白的类比:Glyph(字形)是一个类。Char(字符)是 Glyph 的子类,语法写成 Glyph Class Char。Line(行)也是 Glyph 的子类,里面包含了一组 Glyph 的引用。当程序调用 print 时,Char 打印自己,Line 遍历所有子元素逐个打印——它们共享同一个方法名,但行为完全不同。

这就是继承多态

1967 年 5 月,在奥斯陆召开的 IFIP 模拟语言工作会议上,达尔和尼加德提交了论文《Class and Subclass Declarations》。这篇论文正式定义了:

  • 类(Class):封装数据和行为的模板

  • 子类(Subclass):继承父类的全部能力,还能加自己的东西

  • 虚过程(Virtual Procedure):声明一个方法,具体怎么干由子类决定

  • 动态对象创建和垃圾回收:不用手动分配和释放内存

到这一步,Simula 不再只是"一门仿真语言"了。它变成了Simula 67——一门通用编程语言,同时也是一门面向对象编程语言。事实上,这是第一门面向对象语言。

睿智创新RAIZ,一体化IT服务提供商

同一个会议上,达尔还抛出了一个更激进的提案:把类型(type)和类(class)统一成一个概念。

委员会投票。否决了。

这个主意要等将近二十年,才会在 C++、Java 等语言中成为标准做法。但 1967 年,没人跟得上达尔和尼加德的思路。

Simula 67 最终在 1968 年 2 月的首届 Simula 标准组会议上正式标准化。达尔和尼加德此后各自投身不同的方向——达尔回到奥斯陆大学做形式方法和程序验证,与艾兹赫尔·戴克斯特拉(Edsger Dijkstra)和霍尔合著了经典教科书《结构化编程》(Structured Programming,1972)。尼加德则继续做语言设计,后来主导了通用面向对象语言 BETA 的开发。

但 Simula 的遗产,从这一刻起开始分裂繁殖。

"我是抄 Simula 作业长大的"

先看一条时间线。

  • 1970 年代,艾伦·凯(Alan Kay)在施乐帕洛阿尔托研究中心(Xerox PARC)开发 Smalltalk。他把 Simula 当作关键平台和灵感来源——Smalltalk 的"一切都是对象"哲学直接源于 Simula 的类概念。

  • 1980 年代,比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup)在贝尔实验室设计 C++。他在博士期间深入用过 Simula,后来公开说:"我是把 Simula 的概念带入了 C 语言。"

  • 1990 年代,詹姆斯·高斯林(James Gosling)在太阳微系统公司(Sun Microsystems)开发 Java。他同样承认,Simula 的核心思想是 Java 的设计基础。

一门挪威人为了模拟港口和工厂写的语言——经过 Smalltalk、C++、Java 的三级跳——成了几代程序员脑子里默认的编程思维方式。你今天写的任何一个 classextendsvirtual,都在用 1967 年那篇 IFIP 会议论文里定义的概念。

2001 年,ACM 将图灵奖授予达尔和尼加德。颁奖词写道:"通过设计和实现 Simula I 和 Simula 67,引入了面向对象编程的基本理念。"

第二年,诺贝尔级别的认可紧随其后——两人共同获得 2002 年 IEEE 约翰·冯·诺依曼奖章。

只是,他们都没能活着领奖。

达尔于 2002 年 6 月 29 日去世,享年 70 岁。尼加德于 2002 年 8 月 10 日去世,享年 75 岁,距离加德去世不到两个月。原定于 2002 年 11 月西雅图 OOPSLA 会议上的图灵奖演讲永远不会发生了。ACM 只能发布了一则简短的讣告。

两个合作了整整四十年的人,在获奖后不到一年内,先后离开。

睿智创新RAIZ,一体化IT服务提供商

一门没人写的语言,定义了所有人在写的东西

今天,Simula 不在任何编程语言流行榜单上。TIOBE 不收,Stack Overflow 不问,GitHub 上的仓库一只手数得过来。

但你写的每一行 Python class,每一行 Java extends,每一行 C++ virtual function,都直接连着 1962 年那间挪威办公室——不信你可以打开自己的任何一个项目文件夹看看。面向对象编程至今仍是业界三大主流编程范式之一,与函数式编程和过程式编程并列。如果按市场份额算,支持 OOP 的语言(C++、Java、C#、Python、JavaScript、Swift、Kotlin 等)养活着全球超过 70% 的软件开发者。

奥斯陆大学的新计算机科学大楼被命名为奥利-约翰·达尔楼,主礼堂叫 Simula。2001 年成立的 Simula 研究实验室是挪威顶尖的计算机科学研究机构之一,名字来自一门已经被淘汰几十年的语言。自 2004 年起,AITO 协会每年在 ECOOP 会议上颁发达尔-尼加德奖,表彰面向对象领域的杰出贡献者。

如果尼加德本人来评价这件事,他大概会用他这辈子说过的一句名言来总结。这话不是关于编程的,是关于他一辈子做的另一件事——他当了十年挪威反欧盟运动的领导人,在 1994 年全民公投中,带领 14.5 万成员以 52.2% 的反对票成功阻止了挪威加入欧盟:

"It is better to be disliked for what you are than loved for what you are not." 宁愿因为你是谁而被讨厌,也别因为你不是谁而被喜欢。

一门没当过主流的小语种,拒绝了所有"变成主流"要付出的代价——然后它的思想,成了主流。

注:转载文章来源于网络,版权归原作者或企业所有,侵删!

我要咨询