【历史上的今天】12 月 10 日:世界上第一位程序员诞生;Ada 语言发布;第一人称射击游戏的开拓者

整理 | 王启隆

透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。

今天是 2021 年 12 月 10 日,在 120 年前的今天,瑞典国王和挪威诺贝尔基金会首次颁发了诺贝尔奖。根据诺贝尔的遗嘱:“诺贝尔奖每年发给那些在过去的一年里,在物理、化学、医学、文学及和平事业方面为人类作出最大贡献者。”回顾计算机历史上的 12 月 10 日,这一天还诞生了哪些伟大的贡献者呢?

1815 年 12 月 10 日:世界上第一位程序员 Ada Lovelace 诞生

奥古斯塔·埃达·金·诺尔(Augusta Ada King-Noel, Countess of Lovelace)出生于 1815 年 12 月 10 日;她原姓拜伦(Byron),嫁给洛夫莱斯伯爵后改姓洛夫莱斯,是一位英国数学家兼作家,代表作是她为查尔斯·巴贝奇的分析机所写的作品。她是世界上第一位主张计算机不只可以用来算数的人,也发表了第一段分析机用的算法;因此,埃达被公认为史上第一位认识电脑完全潜能的人,也是史上最早的程序员之一。

【历史上的今天】12 月 10 日:世界上第一位程序员诞生;Ada 语言发布;第一人称射击游戏的开拓者_第1张图片

图源:维基百科

埃达是知名英国诗人拜伦的唯一婚生子女,在她满月时父母离异,从此父女再未相见;拜伦在诗中称埃达为“我屋檐下、我心中唯一的女儿”。埃达八岁时,拜伦在希腊独立战争中病死,埃达的母亲始终痛恨拜伦,致力栽培埃达的数学逻辑兴趣,以免埃达陷入她眼中拜伦的疯狂下场。但埃达终究很惦记父亲,过世时要求葬在父亲墓旁。借着她优越的家庭与教育环境,她认识了当时许多的科学家名流,如安德鲁·克罗斯、查尔斯·巴贝奇、大卫·布儒斯特爵士、查尔斯·惠斯通、麦可·法拉第和作家狄更斯,埃达自称是在从事“诗意科学”。

十几岁时,凭借自己的数学天分,埃达认识了后世誉为“电脑之父”的英国数学家查尔斯·巴贝奇,展开了一段长期亦师亦友的工作关系,更迷上了巴贝奇的分析机项目。在 1842 到 1843 年间,埃达翻译了一篇意大利军事工程师费德里科·路易吉阐述分析机的文章,其中附带了详尽的笔记。埃达的笔记里,包含了许多人公认的史上第一段计算机程序:一段分析机用的算法;不过,也有历史学家不同意,指出巴贝奇 1836 至 1837 年的私人笔记中,已经有了更早的分析机程序,师徒俩究竟谁才是“世界上第一个程序员”,其实已经没那么重要了。

埃达的笔记对早期电脑发展史非常重要。当巴贝奇等同时代学者,只着眼于电脑的数学运算力时,埃达已经预见了电脑广泛应用的未来;她在笔记中以她的“诗意科学”来研究分析机,探索个人和社会,如何透过科技协同工作。1852 年 11 月 27 日,埃达因病逝世,年仅 36 岁。她对计算机科学的影响极其深远,在 1980 年 的今天,美国国防部以她的出生年份设立了一个编号 MIL-STD-1815,并制作了一个新的计算机编程语言,也就是后文将要介绍的 Ada 语言。

资料来源:维基百科、百度百科

1928 年 12 月 10 日:Multics 和 Unix 的参与设计者 Joe Ossanna 出生

【历史上的今天】12 月 10 日:世界上第一位程序员诞生;Ada 语言发布;第一人称射击游戏的开拓者_第2张图片

图源:维基百科

Joseph Frank Ossanna 出生于 1928 年 12 月 10 日,他是一位计算机科学家,曾服务于贝尔实验室,既参与过 Multics 操作系统的软件架构设计,也曾参与 Unix 的早期研发。Joe Ossanna 加入贝尔实验室之后,最早从事低噪音放大器、负反馈放大器的设计,卫星天线视角设计,电波行动散射理论以及统计资料处理等研究。随后,他于 1964 年加入 Multics 的研发,参与软件设计工作;直到 1967 年,贝尔实验室决定退出 Multics 项目。

在 11 月 3 日的专栏里,我们介绍了 Unix 的诞生,而 Unix 的前身其实便是贝尔实验室退出的 Multics 项目。在学习如何为 PDP-7 计算机编程之后,肯·汤普森、丹尼斯·里奇、乔·奥萨纳和路德·卡纳迪开始为 Unics 系统的雏形编程;而这个 Unics 便是后来的 Unix 系统。

当时,在编写完文件系统和一套基本的实用程序、汇编程序之后,Unix 操作系统的核心就建立起来了。随后团队得到了一台 Graphic Systems 的 CAT 照相排字机,用于为出版和专利申请制作专业文章的相机准备拷贝;Joe Ossanna 便是为这台机器写驱动程序的人,并在两年后用 C 语言重新编写了代码。1977 年 11 月 28 日,Joe Ossanna 因心脏病在家中逝世。

资料来源:维基百科

1980 年 12 月 10 日:Ada 语言发布

1980 年 12 月 10 日,为了集成美军系统运行的上百种语言,提高调试效率,美国国防部决定开发一种新的通用编程语言,命名为 Ada,以纪念 Ada Lovelace。Ada 由 Pascal 及其他语言扩展而来,接近自然语言和数学表达式;其最早针对嵌入式和实时计算设计,至今依然在这些领域广泛使用。1983 年 4 月 11 日,Ada / Ed 翻译器首次执行 Ada 语言验证成功。

【历史上的今天】12 月 10 日:世界上第一位程序员诞生;Ada 语言发布;第一人称射击游戏的开拓者_第3张图片

图源:CSDN 下载自东方 IC

在 1970 年代,美国国防部所属的嵌入式计算机系统项目中使用的编程语言数量逐日增多,其中的很多语言十分陈旧或者依赖于硬件,而且没有一个支持安全的模块化编程,对此,美国国防部感到十分担心。基于这个原因,美国国防部在 1975 年成立了高级语言工作组(HOLWG),它的使命是就是寻找或者创造某种适合国防部需要的编程语言,以便减少现有编程语言数量,而该小组最终的工作成果就是 Ada 语言;由此,类似项目中使用的高级编程语言的数量大大减少了,1983 年的 450 种编程语言,到 1996 年只剩下 37 种。

Ada 语言由于其诞生原因,一直作为军用语言在历史舞台活跃,尤其是在大型嵌入式系统得到广泛应用;而它作为和 Pascal 同源的编程语言,以其安全性高,结构严谨,而倍受大型程序系统设计者青睐。Ada 语言没得到推广也是因为其编译器最初需要美国国防部的认证,所以缺少商业化的竞争;不过正因此,诸如知名的波音 777 飞机便由 Ada 语言驱动,而据称我国的 J-10 所用的数字式四余度线传飞行控制系统软件也是用 Ada 编写的。你还知道哪些隐秘的编程语言?欢迎在评论区进行分享。

资料来源:维基百科

1993 年 12 月 10 日:第一人称射击游戏的开拓者《Doom》问世

《Doom》是游戏公司 id Software 于 1993 年 12 月 10 日在 DOS 系统下推出的一款具有里程碑意义的第一人称射击游戏(FPS),中文译名为《毁灭战士》。这个系列的核心制作者是约翰·卡马克(John Carmack)和程序员约翰·罗梅洛(John Romero)。

《毁灭战士》作为射击游戏乃至全游戏界的开拓者,在多个领域开创先河并获得广泛认同,比如它使用了包围游戏角色的 3D 环境绘图、多人游戏支持,并且能让玩家自由创建扩展游戏内容的 WAD 架构;在当时,《毁灭战士》利用共享软件的方式传播,在两年内达成约一千万次的下载,使游戏的模式通俗化,并且产生了一股游戏的次文化;由于它对游戏工业的冲击之大,在 90 年代中期以后激增的第一人称射击游戏,通常被称为“类 DOOM(Doom-like)”游戏。

【历史上的今天】12 月 10 日:世界上第一位程序员诞生;Ada 语言发布;第一人称射击游戏的开拓者_第4张图片

图源:维基百科

在 1993 年元旦,id Software 发布了一则新闻稿,其中他们写道,他们认为《毁灭战士》将会是造成全世界事业生产力下降的最主要原因;没想到一语成谶,《毁灭战士》在发布后真的成为了工作场所的大问题,不但占去了员工工作的时间,并且由于联机游戏而阻塞了网络的流量。英特尔、Lotus Development 和卡内基美隆大学曾经下达了在工作时间内不得玩《毁灭战士》的政策,而在微软公司内部,《毁灭战士》几乎成为了一种宗教性的现象。

在 1995 年后期,《毁灭战士》被安装的数量甚至超过了微软当时的全新操作系统 Windows 95,这让比尔盖兹曾经考虑过是否要买下 id Software,并且开发 Windows 95 版本的《毁灭战士》来促进销售量;甚至在 Office Excel 95 中也有复活节彩蛋,内容是《毁灭战士》的隐藏关卡,关卡的内容是程序员的照片等等。据推测,也许是微软的工程师们对于《毁灭战士》在 Windows 95 上运行的研究而使得他们能够在试算表程序内放置这个彩蛋小程序。

从技术层面上,《毁灭战士》在当时没有实现真正的“3D”,在数学上游戏画面仍然呈现平面,只是随后加上的高度参数让游戏引擎来产生高度差异;这给了《毁灭战士》设计上有一些限制,例如游戏中并没有楼层的体现,因为不可能使一个房间之上还有另一个房间。不过,真正的“3D”和电脑世界中的第一个近乎真正的“圆”其实最终也被 id Software 这家公司实现,而这段故事被记录在 8 月 20 日的专栏之中。

【欢迎投稿】以史为镜,可以知兴替。计算机科学发展至今,有许多至关重要的事件、人物,欢迎所有朋友一起共建「历史上的今天」,投稿邮箱:[email protected]

你可能感兴趣的:(历史上的今天,历史上的今天,ada,multics,unix,游戏)