經與 Bjarne 郵件交流總結,C++ 複雜性來自三個維度:
「C++ 是反緊湊的」「為了讓程序員遠離 C++,我也要用 C」。
回應:Linux 內核選 C 是工程取捨(編譯器支持、運行時零依賴、團隊認知統一),非否定 C++ 價值。C++ 在用戶態高性能系統(瀏覽器、數據庫、遊戲、AI 引擎)統治地位未動搖。
(T)expr)、auto_ptr、bind1st/bind2nd、std::unary_function 等 C++11 前棄用特性。enable_if、void_t、標籤分發),現代 C++ 用 concepts/requires 替代。throw()、noexcept 細節),掌握核心 RAII + noexcept 原則即可。| 場景 | 推薦語言 | 理由 |
|---|---|---|
| 操作系統內核/裸機嵌入式 | C / Rust | 零運行時、確定性、編譯器成熟度 |
| 高性能用戶態系統(DB/瀏覽器/遊戲/AI) | C++ | 零開銷抽象、豐富生態、人才供給 |
| 業務邏輯/微服務/原型驗證 | Go / Java / C# / Python | 開發效率、運行時服務、生態豐富 |
| 安全關鍵/形式化驗證 | Rust / SPARK Ada | 所有權類型系統、無數據競爭保證 |
C++ 複雜性真實存在,但非不可駕馭。辨別本質與非本質,聚焦核心子集,實踐驅動學習,工程場景選型,方能在複雜性海洋中乘風破浪。