首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ 語言開源史探索:從 C with Classes 到 ISO 標準化的演進軌跡

     編輯:C++ 入門

誕生背景:C 的缺憾與物件導向的引入

C 語言簡潔高效,但類型檢查弱、缺乏抽象機制。1980 年代,貝爾實驗室 Bjarne Stroustrup 博士在 C 基礎上引入類別概念,誕生最早原型「C with Classes」。

關鍵里程碑演進時間軸

階段關鍵事件核心特性引入
早期 (80 年代初)Stroustrup 發明 "C with Classes"類別、封裝
80 年代中期更名為 C++ (++ 象徵進步)虛函數、運算符重載、多重繼承
90 年代初模板、異常、RTTI、命名空間陸續加入泛型程式設計基石確立
1998ISO/IEC 14882:1998 首個國際標準 (C++98)標準化穩定基線
2003C++03 技術修正修正缺陷、細節完善
2011C++11 重大更新 (原 C++0x)自動型別、Lambda、智慧指標、移動語意、執行緒、regex...
2014C++14 微調泛型 Lambda、回傳型別推導、變數模板
2017C++17 大更新結構化綁定、if constexpr、檔案系統、平行演算法、std::optional/variant/any
2020C++20 里程碑Concepts、模組、協程、Ranges、格式化庫、三向比較
2023C++23 最新標準std::expected、std::mdspan、多維陣列、編譯期字串處理增強

命名趣聞:為什麼叫 C++?

  • C 語言源於 B 語言(Ken Thompson 為紀念妻子 Bonnie 命名)
  • C with Classes 時期有許多「帶類別的 C」變體
  • 標準委員會徵集命名,最終採納:用 C 的 `++` 運算符象徵「C 的下一步/進步」
  • 同時成立 C++ 標準委員會

標準化節奏與編譯器支援現狀

  • 委員會成立後每 3 年視需求更新(早期 5 年)
  • 遺憾:C++ 複雜度高、演變長,直到 2010 年左右(VC++ 2010 CTP)才有編譯器完整支援 C++98
  • 現代編譯器(MSVC、GCC、Clang)對 C++17/20/23 支援已極佳,建議新專案鎖定 C++17/20 基線

C++ 與 C 的關係:獨立語言,非單純超集

  • 《C++ 編程思想》評述:C++ 與 C 效能差異在 ±5% 內
  • 大多數場合 C++ 可取代 C,但單片機、直接操作硬體、極度空間敏感場景仍需 C
  • 學習建議:完全可不學 C 直接學 C++,把 C++ 當獨立新語言學習(Stroustrup 語)

結語

從「C with Classes」到 C++23,四十年演進見證了程式語言理論與工程實踐的深度融合。模板引入是影響最深遠的決策,奠定泛型程式設計基石。理解歷史演進,有助於把握語言設計哲學,在現代 C++ 浪潮中做出更好的架構決策。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved