bug - cccnqu/se107a GitHub Wiki
Bug
由來
在1947年9月9日,葛麗絲·霍普(Grace Hopper)發現了第一個電腦上的bug。當在Mark II電腦上工作時,整個團隊都搞不清楚為什麼電腦不能正常運作了。經過大家的深度挖掘,發現原來是一隻飛蛾意外飛入了一臺電腦內部而引起的故障(如圖所示)。這個團隊把錯誤解除了,並在日誌本中記錄下了這一事件。也因此,人們逐漸開始用「Bug」(原意為「蟲子」)來稱呼電腦中的隱錯。現在在華盛頓的美國國家歷史博物館中還可以看到這個遺稿。
類型
- Bug 的類型
- 波爾型 : 完全可確定,每次只要輸入相同都會發生。 (沒有邊際效應)
- 海森堡型 : 重啟之後不再發生,你也完全無法預知何時會發生。
- 曼德博型 : 過於複雜導致 bug 無規律出現。
- 薛定谔型 : 程式處在又死又活的疊加態,只有在測試之後才知道到底是死的還是活的。(但每次結果不一樣)
- https://en.wikipedia.org/wiki/Software_bug#Types
浮點數 Bug
- 冼鏡光:使用浮點數最最基本的觀念
- 特別推薦:幾個「無心」但後果嚴重的浮點數過失 (快到最後部分)
蝴蝶效應
問題:假如牛頓定律是完全正確的,那麼在某個時刻,有個惡魔得知了所有粒子的狀態,這樣他就可以完全預測 100 年後的世界會發生哪些事情嗎?
Bug 範例
JavaScript
- https://www.dummies.com/web-design-development/javascript/10-common-javascript-bugs-and-how-to-avoid-them/
- https://www.w3schools.com/js/js_mistakes.asp
- https://gist.github.com/lsloan/f8c5ab552545ee968cca
- https://rollbar.com/blog/top-10-javascript-errors/