Skip to content

1.1 C++ 的历史与发展

C++ 由丹麦计算机科学家 Bjarne Stroustrup(比雅尼·斯特劳斯特鲁普)于 1979 年在贝尔实验室(Bell Labs)开始设计。当时他在博士研究中使用过 Simula 语言,欣赏其面向对象的特性,但不满其运行效率;同时他也大量使用 C 语言,认可其高效和灵活。于是他决定在 C 语言的基础上加入面向对象的能力,最初将这门新语言称为「C with Classes」(带类的 C)。

1983 年,这门语言正式更名为 C++。名称中的 ++ 取自 C 语言的自增运算符,寓意是「C 的进化」。

C++ 的发展经历了多次重要的标准化:

版本年份关键特性
C++981998第一个 ISO 标准;STL、异常、模板
C++032003对 C++98 的小幅修正
C++112011重大更新;auto、Lambda、智能指针、移动语义、范围 for
C++142014对 C++11 的补充完善
C++172017结构化绑定、std::optional、std::filesystem、if constexpr
C++202020概念(Concepts)、范围(Ranges)、协程(Coroutines)、模块(Modules)
C++232023std::print、std::expected、更多范围适配器

其中,C++11 被广泛认为是 C++ 的一次「重生」,它引入了大量现代语言特性,极大地改善了开发体验。本书以 C++17 为主要参考标准。

理解 C++ 的设计哲学有助于理解许多语言特性背后的决策:

  • 零开销抽象(Zero-overhead Abstraction) — 你不使用的特性不应该产生额外开销;你使用的特性,手写代码也不会比它更高效。
  • 与 C 的兼容性 — C++ 几乎完全兼容 C 语言,既有的大量 C 代码可以在 C++ 中直接使用。
  • 多范式支持 — C++ 同时支持过程式编程、面向对象编程和泛型编程,开发者可以根据场景选择最合适的方式。
  • 信任程序员 — C++ 给予程序员极大的自由度和控制能力,同时也要求程序员为自己的代码负责。

C++ 至今仍是许多关键领域的首选语言:

  • 系统软件 — 操作系统(Windows、Linux 内核模块)、编译器、数据库引擎
  • 游戏开发 — 主流游戏引擎(Unreal Engine、Unity 底层)几乎全部使用 C++
  • 嵌入式系统 — 对性能和资源控制要求极高的硬件驱动、实时系统
  • 高性能计算 — 科学模拟、金融量化交易、图形渲染
  • 基础设施 — 浏览器引擎(Chromium)、数据库(MySQL、MongoDB)、通信协议栈