计算机“Bug”简史:从爱迪生的抱怨,到一只飞进哈佛的飞蛾
你知道吗?计算机中的“Bug”(漏洞/错误)一词,确实有一段极其生动且真实的历史故事。当现代程序员为了一个报错抓耳挠腮时,他们口中的“Bug”,在1947年真的是一只字面意义上、被拍死在计算机继电器里的飞蛾。但鲜为人知的是,用“虫子”来代指机器故障的黑话,其实早在计算机诞生前近70年就已经存在了。

1947年的“案发现场”:第一只真正的计算机Bug
要聊计算机的Bug,就必须回到1947年9月9日的哈佛大学。当时,被誉为“计算机科学之母”的 Grace Hopper(葛丽丝·霍普)及其团队正在调试庞大的 Harvard Mark II 计算机。
物理级别的“系统崩溃”
早期的计算机没有现代芯片,而是由数以万计的机械继电器和真空管组成的庞然大物。当 Mark II 突然发生原因不明的故障停机时,工程师们开始排查硬件。
- 发现真凶:团队成员 William Burke 在检查继电器面板时,发现了一只被高压电击毙的飞蛾卡在触点之间,导致电路无法闭合。
- 载入史册的吐槽:工程师们把这只飞蛾小心翼翼地用胶带粘在了工作日志本上,并在旁边写下了一句极其经典的备注:“First actual case of bug being found”(发现了第一个真实的虫子案例)。
“正是由于日志里刻意强调了‘actual(真实的)’这个词,恰恰反证了在1947年之前,工程师们早就在用‘bug’这个词来比喻机器故障了,只不过这是他们第一次抓到‘现行’。” —— 计算机历史博物馆档案
爱迪生的“黑话”:Bug一词的真正起源
既然1947年才抓到第一只真虫子,那“Bug”这个词到底是怎么和科技挂钩的呢?答案是:19世纪的机械工程师们发明的行业黑话。
托马斯·爱迪生的跨时空抱怨
根据 IEEE(电气电子工程师学会)和各类历史档案的考证,早在1878年,大发明家托马斯·爱迪生(Thomas Edison)就在写给朋友的信件中疯狂吐槽过“Bug”。
在信中,爱迪生描述了他搞发明时的痛苦过程:“我的所有发明都是如此。第一步是直觉……然后困难就出现了——这个部件坏了,那个部件不灵了,接着那些被称为‘Bugs(虫子)’的小故障和小麻烦就会显现出来,需要耗费几个月的观察、研究和劳动才能解决。”
| 时代背景 | “Bug”的含义 | 典型应用场景 |
|---|---|---|
| 19世纪末 (机械时代) | 难以捉摸的机械小故障 | 蒸汽机、电报机、早期电话机的齿轮卡顿或接触不良 |
| 20世纪中叶 (电子时代) | 硬件电路的物理缺陷 | 真空管烧毁、继电器进虫子、线路短路 |
| 20世纪末至今 (软件时代) | 代码逻辑错误与内存泄漏 | 操作系统崩溃、App闪退、网页404 |
在缺乏精密检测仪器的年代,机器内部的微小故障看不见摸不着,就像有隐形的虫子在里面捣乱一样。这种生动且带着一丝无奈的比喻,迅速在英美工程界流传开来,成为了硬件工程师们的通用俚语。
延伸冷知识:从“物理除虫”到“千年虫”
随着计算机从纯硬件时代迈入软件时代,“Bug”的含义也完成了从物理实体到虚拟代码的跃迁,并衍生出了许多有趣的科技词汇。
- Debug(除虫)的由来 既然有了Bug,自然就需要Debug。虽然 Grace Hopper 的团队干了“物理除虫”的壮举,但“Debug”一词作为工程术语,在二战时期的雷达和电子管设备维修中就已经被广泛使用了。程序员们继承了这个词,将其变成了“排查代码逻辑错误”的专属动词。
- 不是虫子的“千年虫(Y2K Bug)” 在2000年到来前夕,全球陷入恐慌的“千年虫”危机,其实和昆虫毫无关系。它是因为早期计算机内存极其昂贵,程序员为了省空间,只用两位数字表示年份(如“99”代表1999年)。当时间跨入2000年时,系统会误判为“00”年(即1900年),导致全球金融和基础设施系统的日期逻辑大崩溃。
- “Patch(补丁)”的物理起源 今天我们给系统打“补丁”修复Bug,这个词同样来自早期的穿孔纸带时代。当纸带上的代码出错时,程序员会在错误的孔洞上贴上一块物理纸片(Patch),然后重新打孔。
下次当你看着满屏红色的报错代码,或者为了修复一个Bug熬到深夜时,不妨在脑海里想象一下1947年那只飞向 Harvard Mark II 的无辜飞蛾。它虽然结束了自己短暂的生命,却以一种极其硬核的方式,永远地留在了人类数字文明的词典里。