第一个记录在案的bug并非匿身于cyber空间的麦克斯韦妖,而是存在于真实世界的活物,更准确的说是只乱打乱撞的飞蛾。
这是怎么回事呢?话说1947年九月的一个晚上,哈佛大学里的一台老爷机Mark II突然死机了。
在戴上福尔摩斯的眼镜寻找凶手前,我们先看看Mark II是个啥?Mark II全名为Mark II Aiken Relay Calculator,是由哈佛大学的Howard Aiken主导研发的计算机。早期的计算机主要用于军事。例如MarkII的前身Mark I参加过曼哈顿计划,并由冯诺依曼在上面编过原子弹爆炸的模拟程序。Mark II也不能免俗,它是由美国海军资助。
Mark II一大特点就是用电磁继电器取代电子机械计数器,所以比前任的计算速度更快。但它的个头还是继承自前任,依然十分巨大。下面是从网上找到的MarkII的照片。它的发热量不小,在夜里是昆虫们温暖的港湾。
现在让我们戴上福尔摩斯的眼镜,穿过历史的迷雾看看是谁把Mark II弄宕机了。有经验的操作员(注意,不是程序员)会准备好椅子和烟斗,如果有一杯吸收了世界能量的咖啡就再好不过了。经过一阵紧张的定位(从下面的图来看可能用的是遍历法),发现一只两英寸的飞蛾挤进电路板F的第70号继电器的触点之间的缝隙,并卡在里面了,蛾子早就被继电器电死了。于是有人用普通的镊子把飞蛾从电路板上夹了出来(知道为什么处理故障的人被称为操作员,而不是程序员了吧?)。Mark II随之恢复了正常。事后坊间流传那天酷暑难奈,机房又没有空调,最后一个人离开机房的时候,没有把门窗关上,想通过门窗散热。一只飞蛾寻着Mark II发出的热流,悄悄的潜入了机房,酿成了悲剧。
这只敢为天下先的飞蛾载入了历册,如今安静的躺在美国国家历史博物馆收藏的Mark II计算机日志本中,见下图的1545段。
当时参与Mark II项目的海军上 校Grace Murray Hopper用透明胶带把蛾子贴到计算机日志本上,并在下面写了一句俏皮话:“First actual case of bug being found”。
这个故事广为流传,后来当计算机出现故障时,人们就会笑称Bug又来了。于是Bug和Debug的叫法也随之兴起。随之量子力学的应用,现在的计算机体积越来越小,很少虫子能钻进去了。但是Bug依然存在,怎么解释?很可能是太阳风暴引起的计算机芯片内电子跃迁导致的:)
注:
- 并非是Hopper发现蛾子,而另有其人。
- 另一句名言“It's always easier to ask forgiveness than it is to get permission. ”也出自Hopper。