history

那只飞蛾确是计算机里的“真 bug”——“bug”一词却早已有之

6 条来源 6 条一手来源 已翻译 2026年8月22号

正在加载阅读与收藏统计…
正文
哈佛 Mark II 日志页的档案照片,一只飞蛾被胶带粘在手写测试记录旁,页面上写着“首次发现真正 bug 的实例”。

日志里的措辞点破了这则笑话:只有团队此前已经用 *bug* 比喻故障,把飞蛾称为“首个真正实例”才说得通。[1][2][5]

计算机史上最著名的昆虫,至今仍粘在那张被人拿来开了个玩笑的纸上。1947 年 9 月 9 日,一名哈佛 Mark II 操作员在下午 3:45 记下一次故障:“Relay #70 Panel F (moth) in relay”(F 面板 70 号继电器,继电器内有飞蛾)。标本被发黄的胶带固定住,下面有人补上笑话的点睛之笔:“First actual case of bug being found”(首次发现真正 bug 的实例)。[1][2][5]

actual 是整个故事的轴心。倘若机器故障的全新称呼真由这只飞蛾而来,人们便没有理由特意称它为 actual bug,即一只真正的虫子。这个笑话能够成立,正因为 Mark II 团队早已用 bug 指称与昆虫无关的故障。这一回,隐喻真的长出了翅膀。

人们熟悉的起源故事把先后顺序倒转了。最简洁的版本里,格蕾丝·霍珀(Grace Hopper)在计算机中找到飞蛾,把它称作 bug,又当场发明了“debugging”。这句话几乎每一部分都挨着一桩事实:飞蛾确有其物;它确实让一台继电器计算机停了下来;霍珀是 Mark II 团队成员;她后来也多次讲述这个故事。真正站不住脚的是造词之说。这件实物记录的,是旧技术隐喻化为实体的一天——实体标本也格外容易被镜头留住。工程领域和计算机领域使用 bug 的历史都早于它。

神话:一只飞蛾为计算机领域送来了一个词

起源故事偏爱明确的第一刻、看得见的物件和一位容易辨认的主角,Mark II 飞蛾三者兼具。它褐色的身体留在蓝色方格纸上,周围散落着时间、测试结果、划去的数字,以及机器日常作业留下的普通笔迹。霍珀是程序设计的奠基人物之一,她的出现,又为这一幕安上了读者熟悉的名字。

不过,史密森尼学会现行馆藏目录的措辞比传说审慎得多。目录记载,飞蛾由操作 Mark II 的工程师发现,并判断这册日志多半并非霍珀的个人日志。霍珀确实参与了这台机器的工作,她和团队也促成了 bug 与 debug 在计算机领域的普及。[1] 这项历史贡献分量十足,需要同“她亲手取出昆虫,随后发明两个词”的说法分开看待。

霍珀在 1968 年口述历史中讲起此事时,也一再使用复数主语“we”(我们)。Mark II 机房的窗户没有纱窗,夜间会飞进昆虫;机器停转后,“我们”开始查找,“我们”发现飞蛾,将它取出并放进日志。[4] 事后访谈无法确认 1947 年每一行文字出自谁手,其语法仍保留了单一天才版本所抹去的那个群体:一班共同操作、测试、玩笑和诊断机器的人。

证据从飞蛾出现前数十年开始

早在十九世纪,技术意义上的 bug 已经爬进电报业。托马斯·爱迪生文献项目追溯到一条 1875 年 9 月 15 日的书面记录:期刊 Operator 将电报系统的一项缺陷称为迄今发现的最大 bug。爱迪生留存至今的笔记在 1876 年用 bug 指称技术故障,1878 年的书信又将它用于电话和照明问题。他在其中一封信里把 bugs 解释为“little faults and difficulties”(小故障和困难)。这段措辞表明,车间之外的读者还需要解释这个词,车间之内的人却早已在使用它。[3]

这个隐喻的用处,恰恰来自它宽泛的含义。故障究竟出在元件、连接、设置,还是操作员指令,尚待查明时,人们已经可以先称它为 bug。这个词给麻烦添了一种可追查的形状:仿佛有个小东西钻进系统,只待一路追查,再将它赶出去。到 1889 年,电气词典已经把 bug 定义为设备故障。[2][3]

这套说法在 Mark II 问世前就已抵达哈佛。计算机史学家佩吉·奥尔德里奇·基德韦尔(Peggy Aldrich Kidwell)在物理学家罗伯特·坎贝尔(Robert Campbell)的 Mark I 日志中找到一条 1944 年 4 月 17 日的记录,其中写道,一名 IBM 工程师前来协助查找“bugs”。霍珀在同年 7 月抵达哈佛。后来与她有关的材料还提到一份给操作员的“debugging note”、数学错误,以及海军少尉理查德·布洛赫(Richard Bloch)和坎贝尔追查的“tape bugs”。[2][6]

这些记录足以排除 1947 年飞蛾创造团队用语的说法,也让 bug 在早期计算机工作中的含义显露出来。Mark I 和 Mark II 使用数千个机电继电器;指令由打孔纸带送入,数据则可以来自卡片或开关设置。接触不良、纸带损坏、开关设错、数学错误或元件故障,都足以让运算出错或停下。[2] Debugging 所指从来不限于清除昆虫,它是在机器、介质、指令与人工流程之间寻找故障的工作。

9 月 9 日下午 3:45 发生了什么

Mark II 当时正在哈佛为美国海军建造和测试,之后将移交至弗吉尼亚州达尔格伦。日志所记的那个下午,操作员正在测试算术单元,机器忽然停转。他们一路查到 F 面板的 70 号继电器,发现一只飞蛾挡住了触点。众人取出飞蛾,把它粘在纸页上,随后恢复测试,并于下午 5 点停机。[2][5]

这张日志页的重要之处,在于它保存了整个先后顺序,也保留了纪念物之外的工作记录。飞蛾上方写着更早的继电器故障和改动后的数值结果,下方则是重新开始的测试。它与诊断、清除故障和恢复运行一道进入同一份记录,留在日志中的位置属于工作现场。整件实物呈现的 debugging,是一项受时间约束的维护工作。

它也留下了团队的幽默感。“First actual case”的趣味落在虫子的字面实体,无关这个词的首创权。同一熟悉词语的两层含义,在这里迎面相撞。这些技术人员已经花了多年时间,在继电器、纸带和计算中追赶比喻意义上的 bugs。到了下午 3:45,其中一只碰巧成了动物学意义上的虫子。

就连日期也受到了这则轶事的牵引。霍珀后来把此事放在 1945 年夏天,这个年份随后广为流传。基德韦尔指出,一项机械事实同这段记忆彼此冲突:Mark II 的全面建造约到 1946 年春季才开始。日志和史密森尼学会的藏品记录都把事件定在 1947 年 9 月 9 日。[1][2] 保存下来的实物把日期校回原位,也完整保留了霍珀与事件的联系。

霍珀做成了一件比造词更重要的事

若把飞蛾故事的修正变成一场词语归属权之争,它又会滑向另一种失真。爱迪生同样只是这条传播链上的一环;文献显示,这个词早已在电报业和电气技术实践中流动。把造词之功从霍珀名下移开,她的影响仍然清晰可见。

霍珀帮助车间语言进入刚刚兴起的程序设计学科。基德韦尔追踪到一处意味深长的变化:1951 年的一份工程术语表没有收入 bug 和 debug;到了 1953 年,身处商用计算机领域的霍珀编写了一份术语表,把 debug 定义为排除机器故障,或排除例程中的错误,次年又有修订版问世。早期 UNIVAC 文档同样把这种工作称为 debugging:一条存储指令出错时,逐步追踪整个例程。到 1962 年,美国计算机协会(Association for Computing Machinery)术语表已将 bug 与 debug 收作标准程序设计术语。[2]

这次含义延伸影响深远。Mark II 飞蛾造成的是硬件阻塞,霍珀的定义则明确让 debugging 进入一连串指令内部。于是,同一个简洁隐喻可以从继电器触点一路抵达程序例程,同时仍能区分两类故障在机械性质上的差异。

她留在档案里的幽默,也让这次转移变得可见。史密森尼学会的馆藏指南列出霍珀画过的几种虫子:纸带形的“table worm”、让继电器松脱的 bug,以及提供错误数据的 NRL bug;指南还把追查数学错误和 tape bugs 的功劳记在布洛赫与坎贝尔名下。[6] 庄严命名仪式的想象与这些材料相去甚远。眼前是一套工作词汇,经由便笺、漫画、术语表、培训和故事,在同事之间传递。

为什么较克制的说法更符合历史

关于飞蛾事件,如今可以分开两种解释。流行版本把它视为一个词的诞生:霍珀找到昆虫,为故障命名,程序员从此有了一个沿用至今的词。档案版本则把它视为一则凝结历史的轶事:一个团队遇见了其日常用语的字面实例,保存了这个笑话,霍珀后来又帮助故事和词汇继续传播。[1][2][4]

后一种解释容纳的证据更多。它说清了 actual 一词的用意,也能同时容纳十九世纪电气行业的用法、1944 年 Mark I 日志、霍珀在飞蛾事件前留下的 debugging 笔记,以及她后来以复数主语讲述的版本。它还说明了传说为何如此诱人。隐喻通常在交谈与劳作中无声扩散,这一个却留下了一具虫体。

因此,修正神话时仍须保留人物与事件的层次。即便 bug 一词早已存在,70 号继电器旁的这一幕仍属于格蕾丝·霍珀的历史。她更持久的贡献,在于帮助一个继承自工程领域的词跨过技术分界,成为人们思考程序时的日常用语。Mark II 团队那天下午没有创造 debugging,却为它留下了一件完美的实物证据:故障被找到,机器重新启动,一个老笑话在胶带下化成了实体。

来源

  1. 史密森尼学会美国国家历史博物馆,“Log Book With Computer Bug”——藏品记录,涵盖 1947 年日期、实物描述、来源、团队归属,以及这册日志应非霍珀个人日志的审慎说明。
  2. Peggy Aldrich Kidwell,“Stalking the Elusive Computer Bug”,IEEE Annals of the History of Computing 20, no. 4 (1998), pp. 5–9——一项档案研究,考察 1947 年以前的用法、Mark I 与 Mark II 记录、日期订正,以及术语向程序设计领域的传播。
  3. 托马斯·爱迪生文献数字版,“Edison and the Bug”——记录 1875 年以来的技术用法、爱迪生的笔记与书信,以及十九世纪电气词典中的定义。
  4. 史密森尼学会档案中心,格蕾丝·默里·霍珀口述历史访谈(1968 年 11 月)——霍珀多年后以第一人称复数讲述 Mark II 机房、飞蛾和团队笑话。
  5. 美国海军历史中心照片 NH 96566-KN,经 Wikimedia Commons 发布,“First Computer Bug, 1947”——本文所用日志档案照片的来源页面。
  6. 史密森尼学会档案中心,Guide to the Grace Murray Hopper Collection——霍珀虫子漫画、幽默档案、debugging 笔记,以及布洛赫和坎贝尔署名记录的馆藏目录。
Previous He Whakaputanga 请求英国保护一项并非由英国创设的权威 Next USS Squalus 号救援前三趟按设计完成,第四趟只能另创上浮办法

Recommended In history

Matched by subject and format