【历史上的今天】10 月 30 日:英特尔最大失误;图像冒险游戏的发明者诞生;最后一台 Multics 计算机被关闭

整理 | 王启隆

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

今天是 2021 年 10 月 30 日,在 12 年前的今天,两弹一星元勋钱学森逝世,钱老是中国火箭、导弹、航天事业的奠基人,被誉为“航天之父”、“火箭之王”;2009 年的这一日,钱老在北京逝世,享年 98 岁。回顾计算机历史上的 10 月 30 日,今天也诞生了许多关键事件,一点点改变了我们手上的技术和工具。

1847 年 10 月 30 日:乔治·布尔发明了布尔逻辑

【历史上的今天】10 月 30 日:英特尔最大失误;图像冒险游戏的发明者诞生;最后一台 Multics 计算机被关闭_第1张图片

图源:维基百科

布尔逻辑(Boolean algebra)得名于乔治·布尔(George Boole),他是爱尔兰科克的皇后学院的英国数学家,在十九世纪中叶首次定义了逻辑的代数系统;1847 年 10 月 30 日,布尔出版The Mathematical Analysis of Logic 一书,首次定义了逻辑的代数系统,后来被称为布尔逻辑,也叫布尔代数。布尔逻辑是数字逻辑和计算机科学的基础,1937 年,香农在布尔的基础上向前跨出了伟大一步,将布尔逻辑应用到了电子学中。现在,布尔逻辑在电子学、计算机硬件和软件中有很多应用。

布尔逻辑的诞生把形式逻辑归结为了一种代数,布尔认为,逻辑中的各种命题能够使用数学符号来代表,并能依据规则推导出相应于逻辑问题的适当结论。布尔的逻辑代数理论建立在两种逻辑值“真 True”、“假 False”和三种逻辑关系“与 AND”、“或 OR”、“非 NOT”;这种理论为数字电子计算机的二进制、形关逻辑元件和逻辑电路的设计铺平了道路。1854 年,布尔出版了名著《布尔代数》,并在此基础上,经过许多年的发展,形成了现代计算机的理论基础——娄理逻辑。

和许多发明一样,布尔逻辑在诞生之初被冷落,直到 20 世纪早期,一些电气工程师直观地认识到布尔代数类似于某些类型的电路的行为;克劳德·香农(Claude Shannon)在 1937 年的硕士论文《继电器和开关电路的符号分析》中正式证明了这种行为在逻辑上等同于布尔代数。今天,所有现代通用计算机都使用二值布尔逻辑来执行其功能;也就是说,它们的电路是二值布尔逻辑的物理表现;如果说图灵实现了计算机的“可计算性”,那么布尔便是为其奠定了逻辑性的人。

资料来源:维基百科

1954 年 10 月 30 日:史上首款图像冒险游戏的开发者 Ken Williams 出生

冒险游戏是一种电子游戏类型,在这种游戏中,玩家在一个互动故事中扮演主角,由探索和/或解决谜题驱动;这种游戏类型的重点在于故事,这使得它能够大量借鉴其他基于叙事的媒体,文学和电影,包括各种各样的文学类型。由于计算机技术的限制,冒险游戏在最开始都是纯文字的,而文本冒险游戏的起源很难追溯,因为 20 世纪 70 年代的计算机记录并不完善。

直到 1980 年,一对夫妇改变了这一现状。由妻子 Roberta Williams 设计,丈夫 Ken Williams 协助编程的,世界上第一款有图像,而非纯文字画面的冒险游戏《谜之屋》(Mystery House)诞生,这也是美国 On-Line Systems 公司(现为 Sierra Entertainment)发行的第一款电子游戏。
【历史上的今天】10 月 30 日:英特尔最大失误;图像冒险游戏的发明者诞生;最后一台 Multics 计算机被关闭_第2张图片

图源:维基百科

1954 年 10 月 30 日,Ken Williams 诞生于美国印第安纳州;他是一名游戏程序员,On-Line Systems 的联合创始人,后来该公司改名为 Sierra Entertainment,被动视公司复兴。在 Sierra 公司,他和妻子 Roberta Williams 制作了《King’s Quest》、《Space Quest》、《Police Quest》和《Leisure Suit Larry》等经典游戏。

1979 年,Roberta Williams 当时是个家庭主妇,在家从事家务及照顾孩子。其夫 Ken Williams 创立了一家名为 On-Line Systems 的电脑软件公司,当时 Apple II 电脑刚发行,因此 Ken 认为 Fortran 编译器有市场需求,遂进行该类软件开发的作业。某一天,Ken 把 TRS-80 计算机带回家中,妻子 Roberta 借此接触到了名为《巨洞冒险》的文字冒险游戏,这款游戏是最早的冒险游戏。Roberta 对此深感着迷,并尝试寻找和《巨洞冒险》类似的电子游戏,却一无所获,于是起了自己来创作电子游戏的念头。

Roberta 在厨房的餐桌上构思游戏剧情,并用纸笔将其记录下来。她参考英国小说家阿加莎·克里斯蒂的著作《无人生还》和纸上游戏《妙探寻凶》,以作为故事的参考(因此,《谜之屋》其实也是第一款恐怖题材的电子游戏)。她认为冒险游戏必须要有个很棒的故事、而且要让玩家认为是在玩游戏;Roberta 花了一个月完成她的故事,但是程序设计不是她的专业领域。某天,她和丈夫出去吃晚餐时,试图说服丈夫协助制作这款游戏,而 Ken 放弃了 Fortran 编译器的开发转而协助妻子,他是《谜之屋》唯一的程序员。

最终,《谜之屋》在 1980 年 5 月发售,当时的价格是一套 25.95 美元,共卖出了大约 8 万套。《谜之屋》引起了冒险游戏视觉化的开始,从此 2D 平面图像成为冒险游戏开发的主流,游戏制作人开始尝试用各类图像配合文字加强玩家对游戏剧情的体验。借由《谜之屋》的销售盈利,On-Line Systems 公司从此转型成为电子游戏开发公司,逐渐扩大规模并推出许多电子游戏;该公司不但推出图像冒险游戏,还是采用声卡和显卡制作游戏、推出光盘游戏的先驱。Ken 和 Roberta 夫妇共同推动了图像冒险游戏的发展,对电子游戏发展有重要的影响。

资料来源:维基百科

1994 年 10 月 30 日:Thomas Nicely 发现 Pentium FDIV bug

世界上的第一个 Bug 我们曾在 9 月 9 日的“历史上的今天”专栏里介绍过,那么,世界上最难修复的 Bug 是哪一个?回到 1994 年,林奇堡大学的数学教授 Thomas Nicely 在 10 月 30 日独立发现并公开披露了 Intel P5 Pentium FPU(浮点单元)中的 Pentium FDIV bug。

Thomas Nicely 当时发现用电脑处理长除法时一直出错,他用一个数字去除以 824,633,702,441 时,答案一直是错误的;事后发现原因是英特尔为了加速运算,将整个乘法表刻录在处理器上面,但是 2048 个乘法数字中,有 5 个输入错误。这些错误其实不容易出现,在运算过程中,它会自动修复错误,只有几个二进制的数字组,才会造成完全错误的结果。

【历史上的今天】10 月 30 日:英特尔最大失误;图像冒险游戏的发明者诞生;最后一台 Multics 计算机被关闭_第3张图片

图源:CSDN 下载自东方 IC

在这起事件的初期,英特尔的工程师指出,大约 90 亿个长除法中才会有这么一次错误;依照计算,平均故障间隔大概是七百年,所以几乎是不可能发生。但是,当 Thomas Nicely 在 CompuServe 上报道了这个错误之后,这个 Bug 立刻成为了第一批真正通过互联网传播的故事之一;仅仅几天后,有人在 Usenet 中 comp.sys.intel 组上发布了关于这个问题的消息,确认了浮点错误。从那开始,这起事件传遍各地,被工程行业出版物 EE Times 在新闻中报道,并且纽约时报和波士顿环球报在内的主流媒体都对此进行了报道;在接下来的时间里,更是出现了数百篇关于此事的文章。

值得一提的是,1994 年,互联网开始第一次进入主流领域,而这个 Bug 让 1994 年的人们第一次认识到了互联网;Pentium FDIV bug 一度成为了新闻焦点,让英特尔在感恩节通过互联网登上世界头版,让这家全球首屈一指的计算机芯片制造商感到尴尬。但是,这个 Bug 始终没有解决;英特尔同时遭遇了舆论压力、技术问题和公关危机,那一年公司的股票也受到了很大冲击。在这一年的圣诞节,英特尔公司无可奈何,只能召回了有缺陷的产品,这是英特尔第一次全面召回计算机芯片;最终,英特尔因此事件损失了 5 亿美元。

【历史上的今天】10 月 30 日:英特尔最大失误;图像冒险游戏的发明者诞生;最后一台 Multics 计算机被关闭_第4张图片

图源:维基百科

那么,Pentium FDIV bug 最终得到了解决了吗?1994 年的冬天,Cleve Moler 从 David Hough 维护的电子邮件列表中第一次了解到 FDIV 错误,随着对事件的逐渐了解,Moler 对这个 Bug 的兴趣越来越浓;11 月 15 日,Moler 以质数和比率为例,向英特尔和新闻组发布了他当时所知道的情况,他指出,这两种情况下的除数都小于 2 的幂的 3 倍。

Cleve Moler 是谁? 他出生于 1939 年,是美国数学家及计算机科学家,一生研究数值分析领域;他也是 MATLAB 语言创立者,软件公司 Mathworks 的首席科学家,美国国家工程院院士。Moler 发布的帖子迅速在互联网上爆火,业界的专家们都来询问他具体情况;最终,他把 Tim Coe、Terje Mathisen、Alex Wolfe 等热切关注该事件的程序员高手聚在一起,再找来了英特尔的几位软硬件工程师,试图一起修复 Pentium FDIV bug。

有志之士们联合了起来。他们认为解决方案的关键在于,芯片几乎一直都在分工方面做得非常好;因此,在这种情况下不需要改变太多,只将分子和分母同时乘以 15/16 ,就可以将除数从不安全区域中去掉,并确保随后的除法完全准确。使用这种方法,就不需要测试由除法产生的剩余值的大小。Cleve Moler 的团队最终出色地解决了 Pentium FDIV bug,他也没有忘记宣传 MATLAB,这项优化技术最终被公布到了 MATLAB 新闻组,可供全社会无偿自由使用。MATLAB 和 Mathworks 从此步入公众视野,而英特尔也汲取了一次惨痛的教训。

资料来源:维基百科、blogs.mathworks.com

2000 年 10 月 30 日:最后一台运行 Multics 的机器被关闭

Multics ,全名 Multiplexed Information and Computing Service,是基于单级存储器概念的早期有影响力的分时操作系统,常有人说 Multics “从微型计算机到大型机,影响了所有的现代操作系统”。Multics 最初的规划和开发始于 1964 年,它最初是由麻省理工学院、通用电气和贝尔实验室(Bell Labs)领导的一个合作项目,基于专门为它设计的 GE 645 计算机上开发。

【历史上的今天】10 月 30 日:英特尔最大失误;图像冒险游戏的发明者诞生;最后一台 Multics 计算机被关闭_第5张图片

图源:维基百科

MULTICS 最初的目的是连接 1000 部终端,支持 300 位用户同时上线。1969 年,因 MULTICS 项目的工作进度过于缓慢,最后终究遭裁撤的命运,贝尔实验室由此退出此项目;当时,肯·汤普逊正在为这个系统撰写一个称为“星际旅行”(Space Travel)的游戏程序。在贝尔实验室退出 Multics 计划后,实验室的两位软件工程师肯·汤普逊与丹尼斯·里奇以 B 语言和汇编语言为基础而发展出 UNIX,而 1973 年汤普逊和里奇用 C 语言重写了 Unix,为 Unix 的普及奠定了基础;而通用电气及麻省理工学院仍继续开发 Multics,并最终成为商业产品,由霍尼韦尔(Honeywell)销售。

2000 年 10 月 30 日,最后一个已知的、在霍尼韦尔硬件上运行的 Multics 计算机由加拿大新斯科舍省哈利法克斯的加拿大国防部关闭;直到 2006 年,Bull HN 向 MIT. 发布了 MR12.5 的源代码,这是 1992 年的 Multics 最终版本;除了一些可选的部分,如 TCP/IP.,系统的大部分现在都是免费软件。2014 年,Multics 使用模拟器在当时最新的计算机上成功运行;伴随着模拟器的 1.0 版本发布,并增加了一些新特性,Multics 这颗桌面操作系统的早期火种被流传了下来。Multics 为现在的众多操作系统提供了灵感,不禁让人遐想未来的桌面操作系统会是怎么样的;你心目中未来的主流会是谁?欢迎参与本期投票和评论,分享你的真知灼见。

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

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