當前位置:
首頁 > 知識 > Linus 又開懟:有時候標準就是一坨屎!

Linus 又開懟:有時候標準就是一坨屎!

來自:開源中國


www.oschina.net/news/96906/linus-was-angry-about-standard-saying



在一個 Linux 內核 4.18-rc1 的 Pull Request 中,開發者 Andy Shevchenko 表示其在對設備屬性框架進行更新時,

移除了 union 別名

,這引發了 Linus 的暴怒。




這一次 Linus Torvalds 發怒的原因在於 Andy 給出的移除 union 別名的原因是「根據標準行事」。Linus 回復郵件認為 Andy 這樣的解釋簡直就是垃圾,並且還很危險,他解釋使用 union 別名本身其實就是一種在 gcc 中開發的傳統和標準,甚至它實際上已經是一種成文規定,並大罵對方白痴,同時大罵 C 標準是垃圾,言辭激烈。






「你為什麼做出這樣的解釋呢,不要跟我說什麼 C 標準描述得不清楚,C 標準有時就是一坨屎」,Linus 接著解釋:「你所謂的這個標準,它對於別名規則的指導完全就是錯誤的!它需要被完全地無視,並且每個編譯器都要為這樣腦殘的標準給出相應的解決方案,這就是我們使用 -fwrapv 和 -fno-strict-aliasing 的原因。而你現在竟然說根據這樣一個標準來行事,你這樣的理由真的沒有任何意義。」




Linus 全程圍繞 Andy 給出的理由「根據標準行事」進行抨擊,他的意思是

當標準與現實和代碼的可靠性相衝突時,那麼標準就是不重要的

,「我一再強調:當標準與現實相衝突時,那標準文檔就是衛生紙,它就完全沒意義。事實上,在我面前衛生紙比標準文檔還有用,至少它可以讓我的屎不蘸到屁股上」,郵件最後他又平靜地指出:「標準也需要質疑。」






隨後在追加的第二封郵件中,Linus 表示他已經將 Andy 的 PR 合併,並且特別說明自己不是不喜歡他的代碼,但是他還是「語重心長」(語氣已經緩和了很多)地解釋到:「我只是真的完全無法接受那種不顧現實的單方面的解釋。」




同時他也解釋了為什麼說 Andy 給出這樣的理由是很危險的,他認為這理由聽起來就像是正確的,對於很多人來說,白紙黑字上的所謂標準是需要敬畏的,但是如果一些人不了解更多細節,比如在這件事情中,他不知道其實 union 別名就是 gcc 的標準做法,那他就被誤導了!」標準有它發揮作用的地方,但是它也有局限「,Linus 最後寫道。




Andy 回復郵件表示贊同 Linus 的說法,同時他也解釋其實在設備屬性框架中 union 別名確實是不合適的,所以才將它移除,而原因也不只是他之前說的「根據標準行事」,他在多個原因中可能選擇了不太說得過去的一個。



最後 Andy 還補充了 Linus 關於「呼喚標準「(Appeal to Standards)在編程上應該被認為是一種邏輯謬誤的看法,他認為這不僅僅只局限於編程領域。







此次 Linus 的發飆,懟出了一番大道理,標準有它的約束作用,但也是有作用條件的,道理其實很簡單,不用過多分析。不去像 Andy 那樣談論到寬泛的領域,作為日常依據各種標準編程文檔行事的程序員,

歡迎你留言吐槽/讚美/...標準的那些事



●編號518,輸入編號直達本文



●輸入m獲取文章

目錄

推薦↓↓↓



大數據與人工智慧


更多推薦

18個技術類公眾微信


涵蓋:程序人生、演算法與數據結構、黑客技術與網路安全、大數據技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux學習 的精彩文章:

如何在Windows 10上安裝Ubuntu或openSUSE
Ubuntu 18.10 代號被吐槽,或引入新一代圖形安裝器

TAG:Linux學習 |