計算機的程序錯誤,爲什麼叫"Bug"?

"Bug"一詞,相信大部分朋友,尤其是程序員們,都不會陌生。除去其表示“昆蟲”的詞義以外,其在現代另一個廣爲人知的用法就是來表示計算機程序中的錯誤,成爲一個可能陪伴每個程序員(包括筆者自己)一生的詞語。那麼,在座各位在邊Debug邊發出哀嚎之餘,是否有曾好奇過這個詞的起源呢?

如果在搜索引擎上用中文搜索這個問題,我們可以在排名靠前的CSDN等中文論壇裏發現對於這個問題的解答:

1945年,一隻小飛蛾鑽進了計算機電路里,導致系統無法工作,一位名叫葛麗絲·霍普的人把飛蛾拍死在工作日誌上並寫道,就是這個Bug(蟲子)害我們今天的工作無法完成。由於飛蛾的英文是"Bug",自此"Bug"一詞成了電腦系統程序的專業術語,形容那些系統中的缺陷或問題。

順帶一提,CSDN中連這種故事都是從別的地方轉載的——CSDN從來沒讓我失望。

如果各位曾經嘗試瞭解過這個問題,那麼很多人都應該看到過這個有意思的故事。然而,如果認爲這個故事就是"Bug"這個詞義最初的起源,恐怕是不完全準確的。且不論這個故事中存在的不少細節錯誤,在這個故事之前,其實工程術語中早就出現了"Bug"一詞的身影。

接下來,就請大家蓋好被子,聽我講講"Bug"是如何發展成今天的含義的。

"Bug"的早期使用

如果我們在維基百科搜索"Bug",我們會發現其最初來源於中古英語中用來形容妖怪、鬼怪的"Bugge"一詞,而現代版本"Bug"最早於1620年左右以此形式出現。彼時,其詞義也只是單純的“昆蟲”,並無故障等相關意思。

隨着時間推移,自從19世紀70年代開始,"Bug"一詞逐漸開始作爲一個工程術語被使用。此時計算機尚未問世,而該詞主要被用於描述一些機械性的故障。在托馬斯·愛迪生的一封信中,他這樣寫道:

我所有的發明都是如此。第一步是直覺,然後靈光一閃,然後出現困難——這事發生了,然後“Bug”——我們這樣稱呼那些微小的錯誤和困難——就出現了。在明確到達商業成功或失敗前必需數個月的密切關注、研究和勞動。

除了愛迪生的信之外,我們還能從19世紀的遊戲、電影、書籍等資料中找到很多使用"Bug"代表類似意義的早期用法。由此可見,彼時的"Bug"一詞,已經出現了故障、錯誤的含義,並被廣泛地使用了。第一個想到用"Bug"來指代故障的人,也許是覺得它們就像小蟲子一樣煩吧。

飛進計算機的蛾子

那麼,"Bug"一詞是怎麼從一個工程術語,變成專屬於計算機程序的術語的呢?這就要提到文章開頭的那隻飛蛾了。

葛麗絲·霍普是美國海軍准將及計算機科學家,世界最早一批的程序員之一,也是最早的女性程序員之一。她是Mark I計算機上第一個專職程序員,創造了現代第一個編譯器A-0系統,以及第一個高級商用計算機程序語言COBOL,被譽爲“COBOL之母”。1946年,葛麗絲·霍普從軍隊退役,回到了Mark II和Mark III計算機的研究工作中,而這也是故事的開始。

葛麗絲·霍普(右二)

1947年的9月9日,Mark II計算機突然發生了故障沒法正常運作,開擺了。在半天找不到原因之後,焦頭爛額的團隊對計算機進行了深度檢查,最終發現有一隻飛蛾飛入了繼電器中導致了短路。團隊仔細地將這隻飛蛾的屍體移除,並用膠帶粘在了筆記本上,附言”第一個在現實意義上被發現的Bug(First actual case of bug being found)“。造成Bug的原因,居然真的是個蟲子——當時寫這句話的人對於這個雙關梗顯然特別滿意。

用膠帶粘着飛蛾的筆記本

事實上,發現這隻飛蛾並做出將其粘在筆記本上的幽默操作的人並非葛麗絲·霍普本人,而是其同事威廉·伯克。不過,葛麗絲·霍普非常鍾愛這個故事,並時不時地向別人複述,以至於這個故事廣爲流傳,直到今天。雖然這個故事並不是"Bug"這個詞義的起源,但是這個既有趣又巧合的故事成功地將"Bug"一詞在計算機科學界廣爲傳播,逐漸從一個工程術語演化爲了計算機程序中一個標誌性的術語,讓折磨千千萬萬程序員的”蟲子“有了專屬的名字。

如今,那本記錄下當時情況的筆記本依舊被保存在美國國家歷史博物館中——當然,也包括了筆記本上粘着的那隻可憐蛾子。在浩瀚宇宙中,能比這隻蛾子還要倒黴的,也只有深夜還在Debug的程序員們了吧。

更多遊戲資訊請關註:電玩幫遊戲資訊專區

電玩幫圖文攻略 www.vgover.com