爭議背景
文章《C 語言已經死了:5 個需要忘卻它的理由》引發熱議。作者 20 年 C 經驗(寫過編譯器、調試器、游戲、服務端),仍稱「不會 C++、討厭 C」。核心觀點:
五大痛點
- 手動內存管理:malloc/free 易洩漏、雙重釋放、用後釋放;分配釋放慢;GC 發明者當得諾貝爾獎。
- 多線程無語言級支持:C 無同步關鍵字、無內存模型;調試死鎖極難(Java Ctrl+Break 即可導出線程快照)。
- 指針過度靈活:指針運算、類型轉換、偏移技巧極易出錯;現代語言靜態引用更安全。
- 過早優化誘惑:糾結
*p++ vs p[i]、移位代替乘法;算法才是速度關鍵,微優化多為負擔。
- 單元測試生態缺失:無標準測試框架,測試成本高,導致質量難保證。
作者建議
若學老語言,嘗試 Forth、Lisp、APL——至少能學到優雅的思維模式。C++ 僅比 C 略好。
理性看待
- C 在**系統級、嵌入式、高性能計算、底層庫**仍無可替代
- 痛點真實存在,現代 C++ (RAII、智能指針、標準庫、並發庫) 大幅緩解
- Rust 以所有權機制在編譯期消除內存/線程錯誤,成為強有力繼承者
- 「語言死」≈ 退出主流應用開發,非完全消失