程序員們都是怎樣被BUG虐殺的?
微信公眾號: 我們都愛黑科技
在現今數字年代,計算機 bug 大到影響國家經濟,小到影響每個人的衣食住行,每次 bug 出現時程序員們也是生不如死。互聯網半個多世紀的發展中經歷過哪些著名的 bug,一起回顧一下。
1、萬“蟲”之母,史上留名
(軟件史上第一蟲)
1947 年 9 月 9 日下午 3 點 45 分,Grace Murray Hopper 在她的記錄本上記下了史上第一個計算機 Bug——在 Harvard Mark II 計算機里找到的一只飛蛾,她把飛蛾貼在日記本上,并寫道”First actual case of bug being found”。這個發現奠定了 Bug 這個詞在計算機世界的地位,變成無數苦逼程序員的噩夢。 從那以后,Bug 這個詞在計算機世界表示計算機程序中的錯誤或者疏漏,它們會使程序計算出莫名其妙的結果,甚至引起程序的崩潰。Grace Murray Hopper 是歷史上最早一批程序員,而且還是個女程序員,服役于美國海軍,官至準將。
這是流傳最廣的關于計算機 Bug 的故事,可是歷史的真相是,Bug 這個詞早在發明家托馬斯·愛迪生的年代就被廣泛用于指機器的故障,這在愛迪生本人的 1870 年左右的筆記里面也能看得到。而電氣電子工程師學會 IEEE 也將 Bug 這一詞的引入歸功于愛迪生。
2、千年蟲,炒作的狂歡
(1999 年給了嘩眾取寵的雜志小報極好的題材)
在上個世紀,軟件業者從來沒想過他們的代碼和產品會跨入新千年。因此,很多軟件業者為了節省內存省略掉代表年份的前兩位數字”19”,或者默認前兩位為”19”。
而當日歷越來越接近 1999 年 12 月 31 日時,人們越來越擔心在千禧年的新年夜大家的電腦系統都會崩潰,因為系統日期會更新為 1900 年 1 月 1 日而不是 2000 年 1 月 1 日,這樣可能意味著無數的災難事件,甚至是世界末日。
到今天,我們可以調侃這個滑稽的故事,因為核導彈并沒有自動發射,飛機也沒有失控從天上掉下來,銀行也沒有把國家和用戶的大筆存款弄丟。
千年蟲 Bug 是真實的,全球花了上億的美金用來升級系統。而且,也發生了一些小的事故:
在西班牙,停車場計費表壞了;法國氣象局公布了 19100 年 1 月 1 日的天氣預報;在澳洲,公共汽車驗票系統崩潰。就這樣而已。最后盤點的結果是軟件公司賺了大錢,八卦小報銷量大增,很多程序員的千禧年夜 party 泡湯了,幾個中國文盲老太太被人騙了養老金,不可謂不嚴重。
3、宰赫蘭導彈事件,毫秒的誤差
在 1991 年 2 月的第一次海灣戰爭中,一枚伊拉克發射的飛毛腿導彈準確擊中美國在沙地阿拉伯的宰赫蘭基地,當場炸死 28 個美國士兵,炸傷 100 多人,造成美軍海灣戰爭中唯一一次傷亡超過百人的損失。
在后來的調查中發現,由于一個簡單的計算機 bug,使基地的愛國者反導彈系統失效,未能在空中攔截飛毛腿導彈。當時,負責防衛該基地的愛國者反導彈系統已經連續工作了 100 個小時,每工作一個小時,系統內的時鐘會有一個微小的毫秒級延遲,這就是這個失效悲劇的根源。愛國者反導彈系統的時鐘寄存器設計為 24 位,因而時間的精度也只限于 24 位的精度。在長時間的工作后,這個微小的精度誤差被漸漸放大。在工作了 100 小時后,系統時間的延遲是三分之一秒。
對一般人人來說,0.33 秒是微不足道的。但是對一個需要跟蹤并摧毀一枚空中飛彈的雷達系統來說,這是災難性的——侯賽因飛毛腿導彈空速達 4.2 馬赫(每秒 1.5 公里),這個”微不足道的”0.33 秒相當于大約 600 米的誤差。在宰赫蘭導彈事件中,雷達在空中發現了導彈,但是由于時鐘誤差沒有能夠準確地跟蹤它,因此基地的反導彈并沒有發射。
(宰赫蘭導彈事件圖解)
4、公尺還是英尺?火星氣候探測者號的星際迷航
火星氣候探測者號在 1997 年發射,目的為研究火星氣候,但是它沒有能夠達成這項花費 3 億多美元的使命。
探測者號在太空中飛行幾個月以后,由于導航錯誤,最終在火星大氣層解體。探測器的控制團隊使用英制單位來發送導航指令,而探測器的軟件系統使用公制來讀取指令。這一錯誤大大改變了導航控制的路徑。最后探測器進入過低的火星軌道(大約 100 公里誤差),在過大的火星大氣壓力和摩擦下解體。
(公尺還是英尺?偏離 100 公里!)
嗯哼,所以不要惹怒程序員噢,不然被 BUG 虐掉的他們,也可以攢 BUG 分分鐘滅了你……
來自: 我們都愛黑科技