蘇凱米
“Its not a bug,its a feature”——中文意思:“這不是一個(gè)故障,而是一種功能”。
沒人知道是哪位計(jì)算機(jī)專家首次說出了上面的這句話,但每個(gè)人都知道這句漫不經(jīng)心的調(diào)侃已經(jīng)成為了計(jì)算機(jī)領(lǐng)域中最流行的格言。每當(dāng)工程師和科學(xué)家遇到硬件或軟件的故障時(shí),都不免用這句格言自嘲一下。
不過,這句格言中有一個(gè)詞語顯得非常奇怪,那就是“bug”。這個(gè)詞的本意是指“昆蟲”,如今在計(jì)算機(jī)科學(xué)中卻專指“故障”,而且相應(yīng)地,修復(fù)故障的工作——“調(diào)試”,也被稱為“debug”——“bug”的衍生詞。
那么,形容昆蟲的名詞——“bug”,如何成為了計(jì)算機(jī)科學(xué)的術(shù)語?一個(gè)流傳最廣的說法是,1947年9月9日,美國哈佛大學(xué)的科學(xué)家在使用艾肯繼電器式計(jì)算機(jī)(由美國海軍制造的早期計(jì)算機(jī),體型龐大)時(shí)遇到了電氣故障。當(dāng)科學(xué)家打開機(jī)器檢查時(shí),發(fā)現(xiàn)有一只飛蛾飛進(jìn)了計(jì)算機(jī),并導(dǎo)致計(jì)算機(jī)的一個(gè)繼電器短路了。因此,這次計(jì)算機(jī)故障的確是一個(gè)“bug”,然后,“bug”也就成了“故障”的代名詞。
雖然上述事情確實(shí)發(fā)生過,但歷史的真相告訴我們,這個(gè)故事并不是科學(xué)中“bug”的起源。實(shí)際上,在此之前,“bug”用于表示“故障”已有70多年的時(shí)間了。
早在1878年3月3日,美國發(fā)明家托馬斯·愛迪生在給美國西部聯(lián)盟電話公司的一封信件中寫道:“你在一定程度上是對(duì)的,我確實(shí)在我的儀器中發(fā)現(xiàn)了一種新型昆蟲(bug),但我不能叫它‘電話蟲,而應(yīng)該叫它‘callbellum,這種昆蟲在所有電話呼叫裝置中都能見到?!?/p>
愛迪生信中提到的這個(gè)“callbellum”并不是真正的昆蟲,而是一種帶有拉丁風(fēng)格的幽默比喻?!癱all”指的是電話,“bellum”在拉丁語中是“戰(zhàn)爭(zhēng)”的意思。所以,愛迪生的意思是,自己正在和電話裝置的故障問題做斗爭(zhēng)。
到了晚年,愛迪生更加明確地將“故障”比作“bug”。在給好友西奧多·普斯卡斯的信中,愛迪生寫道:“我所有的發(fā)明都是如此,第一步是直覺,伴隨著靈感一起爆發(fā),然后困難就出現(xiàn)了——這玩意產(chǎn)生了各種昆蟲(bug),也就是五花八門的故障和小毛病。在一項(xiàng)發(fā)明取得商業(yè)成功或被定義為失敗之前,都需要經(jīng)歷幾個(gè)月的觀察、測(cè)試和實(shí)踐來尋找這些故障。畢竟,你在找房子的時(shí)候從來不會(huì)注意到蟑螂,只有真正住進(jìn)去之后,它們才會(huì)暴露出來?!?h3>靈感竟與電報(bào)有關(guān)
那么,愛迪生為何偏偏會(huì)想到“bug”這個(gè)詞呢?愛迪生本人并沒有解釋這一點(diǎn)。但很多科學(xué)家猜想,這或許和電報(bào)技術(shù)的發(fā)展有關(guān)。
在電報(bào)問世以來的40多年時(shí)間里,有一個(gè)問題一直困擾著這項(xiàng)通信技術(shù),那就是一條電線一次只能發(fā)送一條電報(bào)信息。19世紀(jì)中葉,隨著電報(bào)通信在歐美的普及,上述問題變得越來越讓人頭痛,因?yàn)槲ㄒ辉试S發(fā)送更多電報(bào)信息的方法就是安裝更多的電線。這樣做不僅昂貴,也使電報(bào)裝置顯得極為臃腫復(fù)雜。
所以,世界各地的發(fā)明家希望找到一種可以通過一條電線傳送多條信息的方法,這種方法如今被稱為“多路復(fù)用”技術(shù)。到了19世紀(jì)70年代,多位發(fā)明家成功開發(fā)出了最早的“多路復(fù)用”技術(shù)——“聲學(xué)”電報(bào)。這種電報(bào)通常用特定的聲波頻率來編碼每一條單獨(dú)的電報(bào)信息,可以允許多條信息沿著同一條電線發(fā)送。只要用一個(gè)設(shè)定好聲波頻率的接收器,就可以將電線中對(duì)應(yīng)頻率的信息提取出來。在“聲學(xué)”電報(bào)的眾多發(fā)明者之中,有一個(gè)人就是亞歷山大·格拉漢姆·貝爾——他也是電話的發(fā)明者。
但電報(bào)的不足之處仍然存在,搭載各種聲波頻率的電報(bào)信息不停地產(chǎn)生響亮的咔噠聲,這讓許多電報(bào)操作員仿佛時(shí)刻在聽一群昆蟲的吵鬧聲,工作體驗(yàn)感非常差。1873年,愛迪生花了點(diǎn)力氣,發(fā)明了一種電子設(shè)備,可以解決電報(bào)的噪音問題。他將自己的發(fā)明稱為“bug catcher”或“bug trap”(兩個(gè)詞的意思都是“捕蟲器”)。科學(xué)家猜想,這可能就是愛迪生習(xí)慣使用“bug”這個(gè)詞的最初由來。
愛迪生越來越頻繁地使用“bug”,導(dǎo)致這個(gè)詞開始頻繁地出現(xiàn)在科技報(bào)刊中。1892年,“bug”正式收錄進(jìn)了美國工程師所編著的《標(biāo)準(zhǔn)電氣詞典》中,它首次成為了電氣領(lǐng)域中的標(biāo)準(zhǔn)術(shù)語,被釋義為:電器在工作或連接過程中出現(xiàn)的任何故障和麻煩。
到了20世紀(jì),“bug”這個(gè)詞逐漸在科學(xué)界得到了更多的認(rèn)可,而且這種用法也開始進(jìn)入到日常生活中??茖W(xué)家注意到,1931年的一則“Baffle Ball”(世界上第一臺(tái)商用彈球機(jī))廣告中,它自豪地宣稱“在這個(gè)游戲中沒有‘bug”。1944年,科幻作家艾薩克·阿西莫夫也在短篇小說《抓兔子》中寫道:“美國機(jī)器人必須從高級(jí)機(jī)器人中取出bug,而且那里的bug實(shí)在太多了,只要稍微測(cè)試一下就至少能找到六個(gè)”。
既然“bug”最初由愛迪生引入,而且在70多年里由許多出色的推廣者來推廣,那么為何人們一說起“bug”,總會(huì)最先想到1947年的飛蛾事件呢?這就要?dú)w功于檢查時(shí)發(fā)現(xiàn)飛蛾的那位科學(xué)家了,她就是大名鼎鼎的格蕾絲·赫柏——計(jì)算機(jī)科學(xué)的先驅(qū)、程序員的鼻祖、同時(shí)也是美國海軍的第一位女將軍。
1947年9月9日下午3:45,赫柏小心翼翼地將那只略脆的飛蛾貼到了自己的工作日志上,興奮地在飛蛾旁邊寫道:“這是首次發(fā)現(xiàn)的一個(gè)真正的‘bug”。后來,這頁帶有歷史價(jià)值的工作日志和頁面上完整保存的飛蛾,被收藏在了美國史密森國家自然歷史博物館中。為了紀(jì)念赫柏以及令“bug”更加流行的飛蛾事件,世界各地都將9月9日定為了“測(cè)試員節(jié)”。每到這一天,科學(xué)家都要提醒大家,在使用計(jì)算機(jī)時(shí),不要忘了還有測(cè)試員正不知疲倦地“搜尋”和“殺死”各種bug,他們?cè)谟?jì)算機(jī)科學(xué)中扮演的角色也很重要。
bug本來是蟲子的意思