◎ 蘇凱米
“It’s not a bug,it’s a feature”——中文意思為“這不是一個故障,而是一種功能”。
沒人知道是哪位計算機專家首次說出了上面的這句話,但每個人都知道這句漫不經(jīng)心的調(diào)侃已經(jīng)成為了計算機領(lǐng)域中最流行的格言。每當(dāng)工程師和科學(xué)家遇到硬件或軟件的故障時,都不免用這句格言自嘲一下。
不過,這句格言中有一個詞語顯得非常奇怪,那就是“bug”。這個詞的本義是指“昆蟲”,如今在計算機科學(xué)中卻專指“故障”,而且相應(yīng)地,修復(fù)故障的工作——“調(diào)試”,也被稱為“debug”——“bug”的衍生詞。
那么,指昆蟲的名詞——“bug”,如何成為了計算機科學(xué)的術(shù)語?
早在1878年3月3日,美國發(fā)明家托馬斯·愛迪生在給美國西部聯(lián)盟電話公司的一封信件中寫道:“你在一定程度上是對的,我確實在我的儀器中發(fā)現(xiàn)了一種新型昆蟲(bug),但我不能叫它‘電話蟲’,而應(yīng)該叫它‘callbellum’,這種昆蟲在所有電話呼叫裝置中都能見到。”
愛迪生信中提到的這個“callbellum”并不是真正的昆蟲,而是一種帶有拉丁風(fēng)格的幽默比喻?!癱all”指的是電話,“bellum”在拉丁語中是“戰(zhàn)爭”的意思。所以,愛迪生的意思是,自己正在和電話裝置的故障問題做斗爭。
到了晚年,愛迪生更加明確地將“故障”比作“bug”。在給好友西奧多·普斯卡斯的信中,愛迪生寫道:“我所有的發(fā)明都是如此,第一步是直覺,伴隨著靈感一起爆發(fā),然后困難就出現(xiàn)了——這玩意產(chǎn)生了各種昆蟲(bug),也就是五花八門的故障和小毛病。在一項發(fā)明取得商業(yè)成功或被定義為失敗之前,都需要經(jīng)歷幾個月的觀察、測試和實踐來尋找這些故障。畢竟,你在找房子的時候從來不會注意到蟑螂,只有真正住進(jìn)去之后,它們才會暴露出來?!?/p>
愛迪生越來越頻繁地使用“bug”,導(dǎo)致這個詞開始頻繁地出現(xiàn)在科技報刊中。1892年,“bug”被正式收錄進(jìn)了美國工程師所編著的《標(biāo)準(zhǔn)電氣詞典》中,它首次成為了電氣領(lǐng)域中的標(biāo)準(zhǔn)術(shù)語,被釋義為:電器在工作或連接過程中出現(xiàn)的任何故障和麻煩。
到了 20世紀(jì),“bug”這個詞逐漸在科學(xué)界得到了更多的認(rèn)可,而且這種用法也開始進(jìn)入到日常生活中??茖W(xué)家注意到,1931年的一則“Baffle Ball”(世界上第一臺商用彈球機)廣告,它自豪地宣稱“在這個游戲中沒有‘bug’”。1944年,科幻作家艾薩克·阿西莫夫也在短篇小說《抓兔子》中寫道:“美國機器人必須從高級機器人中取出bug,而且那里的bug實在太多了,只要稍微測試一下就至少能找到6個?!?/p>
既然“bug”最初由愛迪生引入,而且在七十多年里由許多出色的推廣者來推廣,那么為何人們一說起“bug”,總會最先想到1947年的飛蛾事件呢?這就要歸功于檢查時發(fā)現(xiàn)飛蛾的那位科學(xué)家了,她就是大名鼎鼎的格蕾絲·赫柏——計算機科學(xué)的先驅(qū)、程序員的鼻祖,同時也是美國海軍的第一位女將軍。
1947年9月9日,赫柏小心翼翼地將那只略脆的飛蛾貼到了自己的工作日志上,興奮地在飛蛾旁邊寫道:“這是首次發(fā)現(xiàn)的一個真正的‘bug’?!焙髞?,這頁帶有歷史價值的工作日志和頁面上完整保存的飛蛾,被收藏在了美國史密森國家自然歷史博物館中。為了紀(jì)念赫柏以及令“bug”更加流行的飛蛾事件,世界各地都將9月9日定為了“測試員節(jié)”。每到這一天,科學(xué)家都要提醒大家,在使用計算機時,不要忘了還有測試員正不知疲倦地“搜尋”和“殺死”各種bug,他們在計算機科學(xué)中扮演的角色也很重要。
(朱權(quán)利摘自《科學(xué)之謎》/圖 槿喑)