C++ 程式語言發展史年表
C++ 是 1979 年由 Bjarne Stroustrup 在貝爾實驗室以 C 為基礎開發的語言, 目標是「在不犧牲 C 效率的前提下,加入資料抽象與物件導向」。 它貫穿一條設計主軸——零成本抽象(zero-overhead abstraction): 你不用你沒用到的功能,用到的功能與手寫程式碼一樣快。 從類別、virtual、樣板、例外,到 C++11 的移動語義與 Lambda, 再到 C++20 的 concepts、coroutines 與 modules,C++ 是史上生命力最長的主流語言之一。
前史:理論根源
| 年份 | 事件 | 意義 |
| 1969 | UNIX 問世 | C++ 誕生的土壤:可攜系統程式設計的先驅 |
| 1972 | C 語言問世 | C++ 的直接前身:貼近硬體的系統語言 |
| 1967 | Simula 67 | 類別與虛擬程序的理論源頭(Stroustrup 親身使用過) |
| 1975 | Goodenough 例外理論 | 例外處理的理論基礎 |
| 1978 | K&R《C 程式語言》 | C 語法的事實規範 |
正式年表
工具鏈發展主軸
- 1985 Cfront → 1991 g++ → 2007 Clang/LLVM —— 編譯器從「轉譯到 C」到「單體式 GCC」,再到「編譯器即函式庫」的 LLVM 時代;Clang 的診斷訊息革命逼得 GCC 也不得不改進。
- 1998 libstdc++ / 2011 libc++ —— 標準庫雙雄,STL 的兩大實作。
- 1999 Boost —— C++11/14/17 的育成中心:regex、thread、smart_ptr、optional、variant 都是先在 Boost 驗證再收編進標準。
- 2010 年代 sanitizers —— Clang 的 ASan/UBSan 讓 C++ 的記憶體安全缺陷可以被動態偵測;2022 年後與 Rust 的競爭共同推動 profiles/contracts 等安全提案。
發展主軸
- 1979–1985:資料抽象 —— 類別、建構子/解構子、virtual:解決「C 無封裝、Simula 效能差」的兩難。
- 1989–1998:泛型與標準化 —— 樣板、例外、命名空間、STL、ISO 標準:C++ 成為跨平台系統語言。
- 1998–2011:漫長等待與現代化 —— 13 年不動標準的教訓之後,C++11 一次補齊移動語義、Lambda、auto、執行緒。
- 2011–至今:三年一版與安全轉型 —— C++14/17/20/23/26 小步快跑;concepts、modules、coroutines 補齊表達力,面對 Rust 競爭,以 profiles、contracts、
std::expected 回應記憶體安全議題。