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 的工程师发现,并判断这册日志多半并非霍珀的个人日志。霍珀确实参与了这台机器的工作,她和团队也促成了 bugdebug 在计算机领域的普及。[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 年的一份工程术语表没有收入 bugdebug;到了 1953 年,身处商用计算机领域的霍珀编写了一份术语表,把 debug 定义为排除机器故障,或排除例程中的错误,次年又有修订版问世。早期 UNIVAC 文档同样把这种工作称为 debugging:一条存储指令出错时,逐步追踪整个例程。到 1962 年,美国计算机协会(Association for Computing Machinery)术语表已将 bugdebug 收作标准程序设计术语。[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 请求英国保护一项并非由英国创设的权威

Recommended In history

Matched by subject and format