導讀:“Bug”一詞,是指“故障”、“缺陷”。瞭解軟體開發的朋友都非常熟悉,程式設計師和測試人員更不用說,在工作中會常遇到。
9月9日下午在微博上看到@新浪科技 發了一條微博訊息:
#歷史上的今天#1945年的今天,一隻小飛蛾鑽進了計算機電路里,導致系統無法工作,一位名叫格蕾絲·赫柏的人把飛蛾拍死在工作日誌上(見圖),寫道:就是這個 bug(蟲子),害我們今天的工作無法完成——於是,bug一詞成了電腦系統程式的專業術語,形容那些系統中的缺陷或問題。
(圖1)
(注1:微博訊息是摘自一位新浪博主的博文,他也是從網路轉載。)
好奇使然,於是在Google查詢資訊,摘錄並編譯了一些英文資訊。
美國海軍網站上的記錄
下面的藍色段落,摘自美國海軍網站(Naval History & Heritage Command)。
The following image shows an organism of great historic significance, reportedly first identified and named by Lieutenant Grace Murray Hopper while she was on Navy active duty in 1947.
下面這張畫展示了一個有偉大歷史意義的生物,由格蕾絲·穆雷·霍波上尉首次確認並命名。1947年,格蕾絲正在海軍服役。
(圖2:美國海軍網站的圖片,注意圖中紅色箭頭指示的“1947”)
The First “Computer Bug” | 首個“計算機Bug”
Moth found trapped between points at Relay # 70, Panel F, of the Mark II Aiken Relay Calculator while it was being tested at Harvard University, 9 September 1947. The operators affixed the moth to the computer log, with the entry: “First actual case of bug being found”. They put out the word that they had “debugged” the machine, thus introducing the term “debugging a computer program”.
1947年9月9日,哈佛大學測試馬克II型艾肯中繼器計算機,操作員在電板編號為70的中繼器觸點旁發現了一隻飛蛾。然後操作員把飛蛾貼在計算機日誌上了,並寫下了“首個發現bug的實際案例”。他們提出了一個詞,“debug(除錯)”了機器,從而引入新術語“debugging a computer program(除錯計算機程式)”。
In 1988, the log, with the moth still taped by the entry, was in the Naval Surface Warfare Center Computer Museum at Dahlgren, Virginia.
1988年,這個仍然貼著飛蛾的日誌,儲存於弗吉尼亞州達爾格倫的海軍水面作戰中心計算機博物館。
維基百科上的詞條
另外,在英文維基百科的 Software bug 詞條中,有比較全面的介紹,摘錄翻譯部分內容:
“bug”術語的發明,因為格蕾絲·霍波她公佈過早期電子計算機的一個故障原因,通常錯誤地歸功於她。這個版本的故事源自下面這段話:“在1946年,當霍波退役後後,她加入哈佛大學的計算機實驗室,繼續研究馬克II型和馬克III型計算機的工作。操作員在追蹤馬克II型的錯誤時發現繼電器中有一隻飛蛾,遂有bug術語。這個bug被仔細移除,並被貼在日誌本上。這帶來的第一個bug,就是我們今日所說的錯誤(error)或程式中的故障(glitch)。”
Grace Hopper 格蕾絲·霍波
格蕾絲·霍波其實並不是那位發現這隻飛蛾的人,只是她欣然承認了而已。雖然日誌本上的日期是1947年9月9日(見圖2),不過有時候被錯誤地報導成1945年。發現飛蛾的操作員,包括威廉姆·比爾·伯克,伯克在弗吉尼亞州達爾格倫的海軍武器實驗室,熟悉工程術語,好逗樂,給飛蛾寫下了“首個發現bug的實際案例”。霍波喜歡講述這個故事。這個日誌本現存於史密森尼國立美國曆史博物館,飛蛾還完整貼在上面。
日誌本的資訊
從 James Huggins 的這篇關於第一個計算機 Bug 的文章中得知:那個日誌本經過一些波折後,海軍水面作戰中心計算機博物館在1991年捐贈給史密森尼國立美國曆史博物館。後因為經費和空間的緣故,美國曆史博物館拖了好些年才把這個日誌本實際展出。
綜述
綜合上述資訊,可以知道新浪科技所發的那條微博訊息時,有不少錯誤,至少有兩處。如下:
- 時間錯誤,並非“1945年的9月9日”,應是“1947年的9月9日”。
- 關於飛蛾的死,並不是格蕾絲·赫柏拍死的。發現飛蛾的時候,飛蛾已經死亡。
關於時間錯誤,因為新浪科技編輯是摘編自一篇個人部落格,要編輯去查證,有點不現實。
關於飛蛾的死,那個人部落格中是說:“哈珀觀察這個出錯的繼電器,發現一隻飛蛾躺在中間,已經被繼電器打死。她小心地用鑷子將蛾子夾出來,計算機又恢復正常。”(且不說個人博主的說法是否正確)編輯硬要說是“格蕾絲·赫柏的人把飛蛾拍死在工作日誌” ,有點讓人無語。“粗心”不是理由吧?
另外,新浪科技的那條微博轉發近3000,並且有不少帶V字的賬號轉發,這條微博,誤導了不少受眾啊。
百度百科中的bug詞條,在介紹bug由來時,寫的也是“1945年”。此外,很多相關的中文文章,也都寫著“1945年”。
更新:關於“1947年9月9日”這個時間
除了維基百科的 Software bug 詞條中有說明。另外,
① 美國海軍網站關於格蕾絲的頁面中有說明:http://www.history.navy.mil/photos/pers-us/uspers-h/g-hoppr.htm ;
② 現儲存那個日誌本的史密森尼國立美國曆史博物館的網頁也是1947年:http://americanhistory.si.edu/collections/object.cfm?key=35&objkey=30
上面這兩個來源,不能否認其權威哦。
結束語
雖說網路資訊很多,判斷真偽不容易,但像這種涉及國外的歷史資訊,其實多動動手,就可以在英文維基百科中找到相應詞條。
對程式設計師來說,英語很重要!這裡就不多解釋,能體會的朋友自然可以體會。
時間匆忙,或許本文有些地方也許有誤,可以在評論中留言,也可以在@程式設計師的那些事 微博中討論。