垃圾進,垃圾出
垃圾進,垃圾出(英語:Garbage in, garbage out,縮寫:GIGO),或譯為廢料進,廢品出,是電腦科學與資訊通訊技術領域的一句習語,說明了如果將錯誤的、無意義的數據輸入電腦系統,電腦自然也一定會輸出錯誤、無意義的結果。同樣的原則在電腦外的其他領域也有體現。
歷史
[編輯]本習語產生於電腦的早期時代,1957年11月10日,一篇報紙文章介紹了美國陸軍的數學家所做的電腦工作,[1]其中一名軍隊專家威廉·D·梅林解釋說,電腦自己不能思考,因此輸入粗劣的數據將不可避免地產生錯誤的輸出。甚至早在十九世紀,電腦的先驅查爾斯·巴貝奇就已經意識到了這條編程的基本原則:
“ | 我曾兩度被問到:「請問巴貝奇先生,如果給機器輸入錯誤的數字,它能得出正確的結果嗎?」我完全想不透,思維何等混亂的人才問得出這種問題。 | ” |
——查爾斯·巴貝奇,《哲學家的生命旅程》(Passages from the Life of a Philosopher)[2] |
之後,英國海上事故調查局也得到了相似的結論:
“ | 艦載電腦實用而有效地保證輪船安全航行。然而,電腦的輸出資訊是否準確,取決於輸入資訊是否準確。 | ” |
——英國海上事故調查局(Marine Accident Investigation Branch),《霍伊格·大阪貨輪事故簡報》(SAFETY FLYER Hoegh Osaka)[3] |
本習語可能是從先進先出和後進先出這兩個術語中衍生出來的。[4][5]
例子
[編輯]數碼化
[編輯]將低質素的老舊模擬錄音或影片數碼化,是清理訊號、改善質素的第一步,然而數碼化的過程本身並不能改善質素。原始模擬訊號中錄製的瑕疵會原封不動地保留下來。 [6]
統計學
[編輯]在統計學中,如果分析的原始數據是錯誤的、不準確的,那麼統計的結論也就是不可信的。[7][8]
程式語言
[編輯]有些程式語言,主要是動態型別的程式語言,對待呼叫函數時參數的類型和數值的正確性採取無所謂的態度。比如JavaScript函數parseInt。當輸入無意參數時,比如parseInt("4個人去喝酒", "哈哈哈~"),會得到返回值「4」,其邏輯是儘量從垃圾輸入中提取看上去說得過去的資訊,哪怕輸出的是無意義資訊,也不願報錯。這種設計理念,就被稱作「垃圾進,垃圾出」。
通常而言,垃圾進垃圾出的語言設計理念被認為是貶義的,因為不報錯就等於悄悄出錯,這導致計算錯誤或者被忽視,或者在其後的計算中引起連鎖反應,前者使得錯誤本身難以發現,後者使得錯誤根源難以定位。[9]及時報錯的處理方式是受到學術和工業界廣泛認可的設計思路。[10]現代語言設計者和委員會,包含維護Javascript的委員會TC39本身都在儘可能的消除這種設計。
參見
[編輯]參考文獻
[編輯]- ^ Work With New Electronic ‘Brains’ Opens Field For Army Math Experts. The Hammond Times. : 65 [March 20, 2016]. (原始內容存檔於2016-08-09) –透過Newspapers.com.
- ^ Babbage, Charles. Passages from the Life of a Philosopher. Longman and Co. 1864: 67. OCLC 258982.
- ^ MAIB. SAFETY FLYER (PDF). 英國海上事故調查局. 2016-03-17 [2016-06-01]. (原始內容存檔 (PDF)於2017-01-16).
- ^ Quinion, Michael. Garbage in, garbage out. World Wide Words. 5 November 2005 [2012-02-26]. (原始內容存檔於2012-02-29).
- ^ Rubbish Clearance Finsbury Park N4. Big Ben. [2024-04-16]. (原始內容存檔於2024-06-29).
- ^ Junk Removal. [2022-06-30]. (原始內容存檔於2024-02-27).
- ^ 存档副本. [2016-06-02]. (原始內容存檔於2016-06-13).
- ^ 存档副本. [2016-06-02]. (原始內容存檔於2016-08-04).
- ^ Cantrill, Bryan. Debugging Under Fire: Keep your Head when Systems have Lost their Mind. GOTO Conference 2017. 10 May 2017 [2022-11-20]. (原始內容存檔於2023-03-14).
- ^ Cantrill, Bryan. Zebras all the way down: The engineering challenges of the data path. Uptime Conference 2017. 24 October 2017 [2022-11-20]. (原始內容存檔於2022-11-01).