為什么當(dāng)電腦出問題的時候,我們就說出“bug”了?廣為流傳的一種說法是,因為著名的計算機(jī)科學(xué)家Grace Hopper曾在計算機(jī)中發(fā)現(xiàn)了一只真正的飛蛾,所以我們選擇用“bug”(蟲子)這個詞來代指故障。雖然這是個真實(shí)故事,但這個詞的由來并非完全正確。
Hopper所在的團(tuán)隊制造了世界上第一臺可編程計算機(jī)——哈佛大學(xué)的MarkⅠ。此外,Hopper是第一位在耶魯大學(xué)獲得數(shù)學(xué)博士學(xué)位的女性,她協(xié)助研發(fā)了第一個計算機(jī)語言編譯器,她也是第一位獲得美國國家技術(shù)獎?wù)碌呐?。難怪人們常??渌恰疤熨n恩寵”(Amazing? Grace)。
計算機(jī)術(shù)語“bug”最著名的起源故事是這樣的:1944年,Hopper在為美國海軍工作,當(dāng)時正處于“二戰(zhàn)”最激烈的時期。MarkⅡ計算機(jī)體積龐大,出了個小故障,卻很難找到。但Hopper最終還是發(fā)現(xiàn)了問題所在,因為有一只蛾子卡在了內(nèi)部結(jié)構(gòu)中。她將這只蛾子做成了標(biāo)本,并在旁邊寫了一篇日期為9月9日的文章。根據(jù)海軍網(wǎng)站的說法,這是第一個找到“bug”的真實(shí)案例,也是“bug”一詞的由來。
這是真相嗎?這個故事基本上站得住腳。不管Hopper有沒有發(fā)現(xiàn)蛾子,不管是在MarkⅠ還是MarkⅡ計算機(jī)里面發(fā)現(xiàn)的,她都確實(shí)寫了一篇這樣的文章。1944年這個年份也有待考證。然而,真正的爭議在于,她并沒有創(chuàng)造出“bug”這個雙關(guān)詞,因為這個詞早就被廣泛使用了。
Hopper的論文顯示,在蛾子事件發(fā)生之前,她和其他人幾年來一直在用這個詞代指電腦問題。事實(shí)上,“bug”的出現(xiàn)其實(shí)更早。根據(jù)《牛津英語詞典》顯示,它首次出現(xiàn)在一份報紙上。1889年,《帕爾邁爾公報》的一位作者寫道:“愛迪生先生花了兩個晚上修理留聲機(jī)的故障(fixing a bug),這是一個用來表示解決問題的短語,意思是就好比有只蟲子藏在了留聲機(jī)里,搞出了這些麻煩?!比欢?,“bug”一詞早在1876年就在愛迪生的私人日記和信件中出現(xiàn)過,遠(yuǎn)遠(yuǎn)早于這篇報道。
那么愛迪生是怎么想到這個詞的呢?《計算機(jī)世界》指出,這個詞可以追溯到一個表示怪物的古老單詞,現(xiàn)在仍然存在于一些不常用的單詞中,比如bugaboo(令人煩惱或恐懼的東西)。但愛迪生造詞的來源倒是字面意思上的蟲子。他想象著有些小蟲子困在機(jī)器的漏洞中。在1878年的一封信中,他寫道:“在商業(yè)成功或失敗前,技術(shù)上的漏洞(technical bugs)需要經(jīng)過數(shù)月的觀察、研究和勞動才能自我顯露出來。畢竟,你在看公寓的時候從來不會注意到蟑螂,只有住進(jìn)去后,它們才會暴露出來。”
那為什么我們一說起“bug”,最先想到的是Hopper的蛾子事件呢?這還要?dú)w功于Hopper本人。因為在1944年之后的幾年里,她一遍又一遍地講述著計算機(jī)里有只蛾子的故事,還一度補(bǔ)充道:“自那時起,一旦計算機(jī)出了問題,我們就說是有‘bug了。”