首个计算机Bug的由来
“Bug”一词,是指“故障”、“缺陷”。了解软件开发的朋友都非常熟悉,程序员和测试人员更不用说,在工作中会常遇到。
9月9日下午在微博上看到@新浪科技发了一条微博消息:
#历史上的今天#1945年的今天,一只小飞蛾钻进了计算机电路里,导致系统无法工作,一位名叫格蕾丝·赫柏的人把飞蛾拍死在工作日志上(见 图),写道:就是这个 bug(虫子),害我们今天的工作无法完成——于是,bug一词成了电脑系统程序的专业术语,形容那些系统中的缺陷或问题。
(图1)
(注1:微博消息是摘自一位新浪博主的博文,点击进入查看后,可知那位博主也是从网络转载。)
好奇使然,于是在Google查找信息,摘录并编译了一些英文信息。
美国海军网站上的记录
下面的蓝色段落,摘自美国海军网站(Naval History& Heritage Command)。
The following image shows an organism of great historic significance, reportedly first identified and named by Lieutenant Grace Murray Hopper while she was on Navy active duty in 1947.
下面这张画展示了一个有伟大历史意义的生物,由格蕾丝·穆雷·霍波上尉首次确认并命名。1947年,格蕾丝正在海军服役。
(图2:美国海军网站的图片,注意图中红色箭头指示的“1947”)
The First "Computer Bug"
首个“计算机Bug”
Moth found trapped between points at Relay# 70, Panel F, of the Mark II Aiken Relay Calculator while it was being tested at Harvard University, 9 September 1947. The operators affixed the moth to the computer log,with the entry: "First actual case of bug being found". They put out the word that they had "debugged" the machine, thus introducing the term "debugging a computer program".
1947年9月9日,正 在哈佛大学测试马克II型艾肯中继器计算机,在电板编号为70的中继器触点旁发现了一只飞蛾。操作员把飞蛾贴在计算机日志上了,并写下了“首个发现bug 的实际案例”。他们提出了一个词,“debug(调试)”了机器,从而引入新术语“debugging a computer program(调试计算机程序)”。
In 1988, the log,with the moth still taped by the entry,was in the Naval Surface Warfare Center Computer Museum at Dahlgren, Virginia.
1988年,这个仍然贴着飞蛾的日志,保存于弗吉尼亚州达尔格伦的海军水面作战中心计算机博物馆。
维基百科上的词条
另外,在英文维基百科的 Softwar bug 词条中,有比较全面的介绍,摘录翻译部分内容:
“bug”术语的发明,因为格蕾丝·霍波她公布过早期电子计算机的一个故障原因,通常错误地归功于她。这个 版本的故事源自下面这段话:“在1946年,当霍波退役后后,她加入哈佛大学的计算机实验室,继续研究马克II型和马克III型计算机的工作。操作员在追 踪马克II型的错误时发现继电器中有一只飞蛾,遂有bug术语。这个bug被仔细移除,并被贴在日志本上。这带来的第一个bug,就是我们今日所说的错误 (error)或程序中的故障(glitch)。”
格蕾丝·霍波其实并不是那位发现这只飞蛾的人,只是她欣然承认了而已。虽然日志本上的日期是1947年9月9日(见图2),不过有时候被错误地报导成1945年。发现飞蛾的操作员,包括威廉姆·比尔·伯克,伯克在弗吉尼亚州达尔格伦的海军武器实验室,熟悉工程术语,好逗乐,给飞蛾写下了“首个发现bug的实际案例”。霍波喜欢讲述这个故事。这个日志本现存于史密森尼国立美国历史博物馆,飞蛾还完整地贴于其上。
日志本的信息
从James Huggins的这篇关于第一个计算机Bug的文章中得知:那个日志本经过一些波折后,海军水面作战中心计算机博物馆在1991年捐赠给史密森尼国立美国历史博物馆。后因为经费和空间的缘故,美国历史博物馆拖了好些年才把这个日志本实际展出。
综述
综合上述信息,可以知道新浪科技所发的那条微博消息时,有不少错误,至少有两处。如下:
时间错误,并非“1945年的9月9日”,应是“1947年的9月9日”。
关于飞蛾的死,并不是格蕾丝·赫柏拍死的。发现飞蛾的时候,飞蛾已经死亡。
关于时间错误,因为新浪科技编辑是摘编自一篇个人博客,要编辑去查证,有点不现实。
关于飞蛾的死,那个人博客中是说:“哈珀观察这个出错的继电器,发现一只飞蛾躺在中间,已经被继电器打死。她小心地用镊子将蛾子夹出来,计算机又恢复正常。”(且不说个人博主的说法是否正确)编辑硬要说是“格蕾丝·赫柏的人把飞蛾拍死在工作日志” ,有点让人无语。“粗心”不是理由吧?
另外,新浪科技的那条微博转发近3000,并且有不少带V字的账号转发,这条微博,误导了不少受众啊。
百度百科中的bug词条,在介绍bug由来时,写的也是“1945年”。此外,很多相关的中文文章,也都写着“1945年”。
结束语
虽说网络信息很多,判断真伪不容易,但像这种涉及国外的历史信息,其实多动动手,就可以在英文维基百科中找到相应词条。
对程序员来说,英语很重要!这里就不多解释,能体会的朋友自然可以体会。
时间匆忙,或许本文有些地方也许有误,可以在评论中留言,也可以在@程序员的那些事 微博中交流讨论。
----------------------------------------------------
本文出处:伯乐在线- 职场博客
本文链接:http://www.jobbole.com/entry.php/1408