"Bug"一词,相信大部分朋友,尤其是程序员们,都不会陌生。除去其表示“昆虫”的词义以外,其在现代另一个广为人知的用法就是来表示计算机程序中的错误,成为一个可能陪伴每个程序员(包括笔者自己)一生的词语。那么,在座各位在边Debug边发出哀嚎之余,是否有曾好奇过这个词的起源呢?
如果在搜索引擎上用中文搜索这个问题,我们可以在排名靠前的CSDN等中文论坛里发现对于这个问题的解答:
1945年,一只小飞蛾钻进了计算机电路里,导致系统无法工作,一位名叫葛丽丝·霍普的人把飞蛾拍死在工作日志上并写道,就是这个Bug(虫子)害我们今天的工作无法完成。由于飞蛾的英文是"Bug",自此"Bug"一词成了电脑系统程序的专业术语,形容那些系统中的缺陷或问题。
顺带一提,CSDN中连这种故事都是从别的地方转载的——CSDN从来没让我失望。
如果各位曾经尝试了解过这个问题,那么很多人都应该看到过这个有意思的故事。然而,如果认为这个故事就是"Bug"这个词义最初的起源,恐怕是不完全准确的。且不论这个故事中存在的不少细节错误,在这个故事之前,其实工程术语中早就出现了"Bug"一词的身影。
接下来,就请大家盖好被子,听我讲讲"Bug"是如何发展成今天的含义的。
"Bug"的早期使用
如果我们在维基百科搜索"Bug",我们会发现其最初来源于中古英语中用来形容妖怪、鬼怪的"Bugge"一词,而现代版本"Bug"最早于1620年左右以此形式出现。彼时,其词义也只是单纯的“昆虫”,并无故障等相关意思。
随着时间推移,自从19世纪70年代开始,"Bug"一词逐渐开始作为一个工程术语被使用。此时计算机尚未问世,而该词主要被用于描述一些机械性的故障。在托马斯·爱迪生的一封信中,他这样写道:
我所有的发明都是如此。第一步是直觉,然后灵光一闪,然后出现困难——这事发生了,然后“Bug”——我们这样称呼那些微小的错误和困难——就出现了。在明确到达商业成功或失败前必需数个月的密切关注、研究和劳动。
除了爱迪生的信之外,我们还能从19世纪的游戏、电影、书籍等资料中找到很多使用"Bug"代表类似意义的早期用法。由此可见,彼时的"Bug"一词,已经出现了故障、错误的含义,并被广泛地使用了。第一个想到用"Bug"来指代故障的人,也许是觉得它们就像小虫子一样烦吧。
飞进计算机的蛾子
那么,"Bug"一词是怎么从一个工程术语,变成专属于计算机程序的术语的呢?这就要提到文章开头的那只飞蛾了。
葛丽丝·霍普是美国海军准将及计算机科学家,世界最早一批的程序员之一,也是最早的女性程序员之一。她是Mark I计算机上第一个专职程序员,创造了现代第一个编译器A-0系统,以及第一个高级商用计算机程序语言COBOL,被誉为“COBOL之母”。1946年,葛丽丝·霍普从军队退役,回到了Mark II和Mark III计算机的研究工作中,而这也是故事的开始。
葛丽丝·霍普(右二)
1947年的9月9日,Mark II计算机突然发生了故障没法正常运作,开摆了。在半天找不到原因之后,焦头烂额的团队对计算机进行了深度检查,最终发现有一只飞蛾飞入了继电器中导致了短路。团队仔细地将这只飞蛾的尸体移除,并用胶带粘在了笔记本上,附言”第一个在现实意义上被发现的Bug(First actual case of bug being found)“。造成Bug的原因,居然真的是个虫子——当时写这句话的人对于这个双关梗显然特别满意。
用胶带粘着飞蛾的笔记本
事实上,发现这只飞蛾并做出将其粘在笔记本上的幽默操作的人并非葛丽丝·霍普本人,而是其同事威廉·伯克。不过,葛丽丝·霍普非常钟爱这个故事,并时不时地向别人复述,以至于这个故事广为流传,直到今天。虽然这个故事并不是"Bug"这个词义的起源,但是这个既有趣又巧合的故事成功地将"Bug"一词在计算机科学界广为传播,逐渐从一个工程术语演化为了计算机程序中一个标志性的术语,让折磨千千万万程序员的”虫子“有了专属的名字。
如今,那本记录下当时情况的笔记本依旧被保存在美国国家历史博物馆中——当然,也包括了笔记本上粘着的那只可怜蛾子。在浩瀚宇宙中,能比这只蛾子还要倒霉的,也只有深夜还在Debug的程序员们了吧。
#免责声明#
①本站部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
②若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
③如果本站有侵犯、不妥之处的资源,请联系我们。将会第一时间解决!
④本站部分内容均由互联网收集整理,仅供大家参考、学习,不存在任何商业目的与商业用途。
⑤本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与任何商业和非法行为,请于24小时之内删除!