作為程式設計師最大的敵人,bug是很多程式設計師揮之不去的噩夢,一行小小的程式碼bug,就可能造成致命的問題,造成整個系統的崩盤。今天,菜鳥哥就為大家分享,程式設計史上的最著名的5個bug。
1.歐洲航天局阿麗亞娜5號的爆炸
航天器的設計和執行一直以來都是非常昂貴的。在1996年6月4日,歐洲航天局發射的阿麗亞娜5號火箭發射升空。但是在僅僅發射40秒之後,火箭便在空中發生翻滾,然後解體爆炸。
這次火箭的爆炸帶來的損失是非常嚴重的。不僅造成了3.7億 美元的直接損失,更重要的是,十年的心血在短短几十秒中付之東流。造成這一原因的,僅僅是一行程式碼的失誤。
2.Windows的計算器錯誤
如果大家現在使用的是Windows10以下的版本,例如Windows7版本,那麼大機率會有這樣的問題。大家可以開啟自己的windows計算器,然後輸入4,取平方根。此時的結果顯示為2,然後再減去2。
此時的結果是什麼呢?如果測試之後,可以發現,結果往往不會是0。造成這一錯誤的原因在於Windows下的取平方根的操作,結果儲存的是浮點數,而非整數。而最終減去2之後,得到的結果就是浮點計算得到的精度誤差。
微軟也承認了這個錯誤,並在Windows10 Build 17639 版本中修正了這個錯誤。因此在Windows10中執行上述計算過程,得到的結果就是0。
3.愛國者導彈攔截失敗
”愛國者導彈“是美國著名的地對空防禦攔截導彈。但是愛國者導彈也有失算的時候。1991年的海灣戰爭期間,沙烏地阿拉伯的愛國者導彈未能及時的跟蹤並攔截伊拉克的飛毛腿導彈。
飛毛腿導彈直接打中了美國軍營,造成了28名士兵死亡,並有100人受傷。根據事後的調查,攔截失敗的原因在於導彈系統時鐘內的一個軟體錯誤。
在此之前,愛國者導彈攔截系統已經連續工作了四天有餘。因此導彈的時鐘已經偏差了三分之一秒,根據速度計算,相當於600米的距離誤差。由於這個時間誤差,導致了雷達系統偵察到飛毛腿導彈並且預計了它的彈道。
但是攔截系統卻無法找到打過來的飛毛腿導彈,導致了攔截的失敗。
4.神曲《江南style》的YouTube之殤
2012年,一首來自韓國的神曲《江南style》火遍了全球,神曲一出,誰與爭鋒。
在YouTube上,《江南style》同樣也是異常的火爆,播放量蹭蹭的上漲,直接突破了YouTube最先設定的播放量上限閾值。
YouTube最初的播放量上限設定值為32位整數,也即21,4748,3647。的出現打破了這一數值,造成了YouTube上《江南style》的播放崩潰。針對這一問題,YouTube也及時的做出調整。將播放量的上限由32位整數改為了64位整數。
如今的《江南style》在YouTube上的播放量早已突破40億,但是突破上限也只是理論上的可能了。
5.計算機2000年問題
計算機2000年問題,另一個被大家熟知的名字為“千年蟲”。在上世紀的某些計算機程式系統中,年份雖然是四位數,但是系統只使用的是最後兩位數來表示年份。這就造成了系統在涉及到跨世紀的日期處理運算時,就會出現錯誤的結果。
例如1900和2000,系統無法分辨是1900年還是2000年。進而引發各種各樣的系統功能紊亂甚至崩潰。在一些需要精密計算時間的系統當中,這會造成非常大的問題。
千年蟲問題,影響到了每天計算利率的銀行、核電站、醫院、交通等中心。全世界花費了數十億美元來升級計算機系統並糾正這個錯誤。
6.總結
計算機程式可以幫助我們更好的管理世界,服務人類。但一個小小的bug也能夠造成巨大的損失。因此作為程式設計師的我們,更要明確自己所擔負的責任,認真寫好每一句程式碼,檢查出每一處bug。寫出更好的程式碼。大家在工作中是否寫出過bug導致重大的問題?歡迎在下方留言區,吱一聲~
記得給個三連哦!