BUG的由來
Bug一詞的原意是“臭蟲”或“蟲子”。但是現在,在電腦系統或程式中,如果隱藏著的一些未被發現的缺陷或問題,人們也叫它“Bug”,這是怎么回事呢?
原來,第一代的計算機是由許多龐大且昂貴的真空管組成,並利用大量的電力來使真空管發光。可能正是由於計算機運行產生的光和熱,引得一隻小蟲子鑽進了一支真空管內,導致整個計算機無法工作。研究人員費了半天時間,總算發現原因所在,把這隻小蟲子從真空管中取出後,計算機又恢復正常。後來,Bug這個名詞就沿用下來,表示電腦系統或程式中隱藏的錯誤、缺陷、漏洞或問題。
與Bug相對應,人們將發現Bug並加以糾正的過程叫做“Debug”,意即“捉蟲子”或“殺蟲子”。遺憾的是,在中文裡面,至今仍沒有與“Bug”準確對應的辭彙,於是只能直接引用“Bug”一詞。雖然也有人使用“臭蟲”一詞替代“Bug”,但容易產生歧義,所以推廣不開。
BUG的含義
所謂“(Bug)”,是指電腦系統的硬體、系統軟體(如作業系統)或套用軟體(如文字處理軟體)出錯。硬體的出錯有兩個原因:一是設計錯誤;一是硬體部件老化失效等。軟體的錯誤全是廠家設計錯誤,那種說用戶執行了非法操作的提示,是軟體廠商不負責的胡說八道。用戶可能會執行不正確的操作,比如本來是做加法但按了減法鍵。這樣用戶會得到一個不正確的結果,但不會引起bug發作。軟體廠商在設計產品時的一個基本要求,就是不允許用戶做非法的操作。只要允許用戶做的,都是合法的。用戶根本就沒有辦法知道廠家心裡是怎么想的,哪些操作序列是非法的。
BUG的歷史
從電腦誕生之日起,就有了電腦BUG。第一個有記載的bug是美國海軍的編程員,編譯器的發明者格蕾斯·哈珀(GraceHopper)發現的。哈珀後來成了美國海軍的一個將軍,領導了著名計算機語言Cobol的開發。
1945年9月9日,下午三點,哈珀中尉正領著她的小組構造一個稱為“馬克二型”的計算機。這還不是一個完全的電子計算機,它使用了大量的繼電器,一種電子機械裝置。第二次世界大戰還沒有結束,哈珀的小組日以繼夜地工作,機房是一間第一次世界大戰時建造的老建築。那是一個炎熱的夏天,房間沒有空調,所有窗戶都敞開散熱。
突然,馬克二型當機了。技術人員試了很多辦法,最後定位到第70號繼電器出錯。哈珀觀察這個出錯的繼電器,發現一隻飛蛾躺在中間,已經被繼電器打死。她小心地用攝子將蛾子夾出來,用透明膠布帖到“事件記錄本”中,並註明“第一個發現蟲子的實例。”
從此以後,人們將計算機錯誤戲稱為蟲子(bug),而把找尋錯誤的工作稱為(debug)。
程式中隱藏的功能缺陷或錯誤。由於現在的軟體複雜程度早已超出了一般人能控制的範圍,如Win95、Win98這樣的較成熟的作業系統也會不定期地公布其中的Bug。如何減少以至消滅程式中的Bug,一直是程式設計師所極為重視的課題。