你有没有想过,一只小小的虫子是如何和程序错误、漏洞联系上的呢?
这得从一个故事说起。
在电子计算机刚刚被发明的年代,计算机是由许多的电子管和各种继电器组装而成的。
在1947年的某一天,哈佛大学的计算机哈佛二代(Harvard Mark II)突然停止了运行,“下班”了的 Grace Hopper 在一个继电器中发现了这样的一只飞蛾:
当她从继电器中取出这只幺蛾子,计算机就正常工作了。于是她便将其粘贴到了计算机的日志本中,同时写道:“first actual case of bug being found.”,这也正是上面那张图。
由于计算机的继电器触点间断开的时候会有电弧发出闪光,这只妖蛾子奋不顾身地飞了上去,用节肢动物的鲜血开辟了脊索动物的Debug史。这只飞蛾注定会被载入史册,从而名垂千古。这个带有昆虫的日志本永远地保存在了华盛顿的美国国家历史博物馆中[1]
当然,这只飞蛾也从此成为了一批批程序猿的噩梦。
这是流传最广的关于计算机bug的故事,然而历史的真相却有些不同。
这个故事中描述的场景确实是真实的,然而Hopper却不是最早使用这个词的人。
实际上早在爱迪生时代,bug一词就已经广泛用于描述机械故障了,这一点从其1870年左右的日记中可以看出。而且和bug相关的一个词“debug”(调试,或解决bug)的使用,似乎也比上面故事中描述的时间要早。牛津英语词典关于debug的词源中,也提到了1945年在关于飞机发动机的地方使用了debug一词。
无论如何,bug和程序错误已经形成了紧密的联系,而如何找到我们程序中的虫子,才是我们真正要关心的事情。
下一篇文章,我们就要谈到如何debug,并且在此过程中找出你程序中存在的问题。
注释:
[1]:http://americanhistory.si.edu/collections/search/object/nmah_334663