What every compiler writer should know about programmers (2015) [pdf]
Hacker News
This article, originating from Hacker News, discusses essential knowledge that compiler writers need to possess regarding programmers. It delves into the intricacies of understanding programmer behavior and needs to inform compiler design.
然而,另一派觀點則站在編譯器作者的立場,認為這種批評近乎「主權公民」式的無理取鬧。他們主張 C 語言並非直接操作裸機,而是針對「抽象機器」進行編程,編譯器只是忠實執行標準賦予的優化權力。若不允許編譯器假設 UB 不會發生,許多關鍵優化(如別名分析、循環展開)將難以實施,導致程式執行效率大幅下降。支持者強調,程式設計師不能既想要現代編譯器帶來的效能紅利,又拒絕承擔遵循標準規範的責任。
討論中也觸及了實務上的困境。有開發者指出,在大型遺留系統中完全消除 UB 幾乎是不可能的任務,即使是像 Linux 核心這樣的高度專業專案,也難以完全避免。這引發了關於「友善 C 語言方言」的討論,有人提議應該存在一種更具預測性的編譯模式,讓舊程式碼能安全運行。但反駁者認為,技術債終究需要償還,若開發者不願使用靜態分析工具或開啟警告標籤,卻反過來指責編譯器太過聰明,這在邏輯上是自相矛盾的。
最後,社群對於 C 語言的未來展現出分歧。一部分人認為 C 語言的複雜性與陷阱已使其不再適合現代開發,轉而推薦 Rust 或 Zig 等更安全的替代方案。但資深開發者如 Walter Bright 則提醒,語言的成功往往取決於生態系與工具鏈的成熟度,而非單純的語義定義。儘管爭議不斷,C 語言作為基礎建設的地位短期內仍難以撼動,這場關於編譯器與開發者之間信任關係的辯論,恐怕還會持續下去。