摘要:《C++:纪录片》把 C++ 从贝尔实验室时期的 C with Classes 讲到现代 C++,也把标准化、STL、产业应用、复杂性与内存安全争论重新放回四十多年语言演进的长时间线中。

2026 年 6 月 4 日,Herb Sutter 在个人博客上宣布《C++:纪录片》在 YouTube 首映,并提到当时 Bjarne Stroustrup 以及多位参与 C++ 历史的人物出现在直播聊天中。
这部片子以一小时多的篇幅,把 C++ 从贝尔实验室时期的“C with Classes”讲到现代 C++,并通过多位亲历者的采访串起语言、标准、产业应用和社区争论的长期脉络。
Sutter 列出的受访者包括 Bjarne Stroustrup、Alexander Stepanov、Andrei Alexandrescu、Andrew Koenig、Barbara Moo、Brian Kernighan、Chris Lattner、Herb Sutter、John Romero 等人,覆盖了语言设计、标准委员会、STL、编译器、游戏、金融、科研等不同方向。(Sutter’s Mill)
纪录片的开端回到 20 世纪 70 年代末。Bjarne Stroustrup 在自己的 FAQ 中回忆,他从 1979 年开始做后来成为 C++ 的工作,最初名称是“C with Classes”;1983 年 8 月,第一版 C++ 在 AT&T 内部使用,同年晚些时候采用“C++”这个名字;1985 年 10 月,第一套商业实现伴随《The C++ Programming Language》第一版发布。
这个时间线构成了纪录片前半部分的基础:C++ 并不是突然出现的独立语言,而是在 C 的系统编程传统上,逐步加入类型检查、数据抽象和面向对象能力。(斯特勃鲁普主页)
在早期阶段,C++ 的故事与 AT&T 贝尔实验室密不可分。纪录片章节从“AT&T Bell Labs 的发明”进入“C with Classes”,随后讲到早期采用、Cfront、C++ 名称来源,以及 AT&T 开始销售软件时语言发展所遇到的组织与产品化问题。
按照 Sutter 博客列出的章节,片中还专门安排了“它曾是一个有缺陷的产品 / 2.0.0 版本”“C++ 走出 AT&T”“太多版本的 C++”“标准化需求”等段落,显示 C++ 早期扩散并不是单纯的技术推进,也伴随实现差异、工具链成熟度和用户迁移问题。(Sutter’s Mill)
从“C with Classes”到 C++,纪录片所呈现的是一条渐进式路线。C++ 选择保持与 C 的密切关系,使它能够接触既有代码、既有编译环境和系统程序员群体;同时,类、构造析构、重载、引用、模板、异常等机制又持续改变着 C 程序员组织大型程序的方式。
Stroustrup 对发明动机的表述是,他希望以 Simula67 鼓励的风格编写高效系统程序,于是在 C 中加入更好的类型检查、数据抽象和面向对象编程设施;更广泛的目标是写出既高效又优雅的程序。(斯特勃鲁普主页)
纪录片中段把视角转向标准化与库设计。Alexander Stepanov 与标准模板库是这一阶段的重要线索。按照章节安排,影片在“需要标准化”之后进入“Alexander Stepanov 的 STL”,再接到“第一个标准:C++98”。
C++98 的形成,把早期分散实现、行业实践和库设计纳入一个共同文本之中,也使 C++ 从一种被多家公司实现和扩展的语言,进入 ISO 标准持续演进的阶段。cppreference 的资源页列出了 C++98、C++11、C++14、C++17、C++20、C++23 等工作草案链接,也显示标准文档本身已经成为 C++ 历史的一部分。(Sutter’s Mill)(cppreference.com)
进入 90 年代后,纪录片把 C++ 放进更广泛的产业背景中。章节中出现了“90 年代 CERN 的 C++”“C++ 扩散到游戏与交易”等内容。
C++ 在科学计算、图形、游戏引擎、交易系统、基础设施等场景中被反复采用,原因通常与性能、资源控制、可移植性和抽象能力有关。影片并没有只把 C++ 放在语言史内部,而是通过 CERN、游戏、金融等场景展示它如何进入不同专业领域,并在这些领域中形成各自的代码传统、库生态和工程习惯。(Sutter’s Mill)
随后,纪录片回顾了 2000 年代初的“C++ winter”。这一阶段,Java、C# 等语言在企业软件、托管运行时和开发效率叙事中占据显著位置,C++ 面临来自安全性、复杂性、生产率和工具体验的多重压力。
片中安排“编程语言战争(C#)”一章,接着进入“重新需要一种高效编程语言”,显示 C++ 的叙事从早期扩张转向在新语言环境中的再定位。这个阶段的回顾,也为后来 C++11 被称为“现代 C++”铺垫了背景。(Sutter’s Mill)
C++11 是纪录片后半段的重要节点。章节中明确列出“Modern C++(C++11)”,随后是“标准委员会是否让 C++ 变得过于复杂”“C++ 无处不在”“C++ 的未来与挑战”。
C++11 引入了移动语义、lambda、auto、并发库、智能指针等现代工程常用能力,改变了很多项目的写法。C++ Core Guidelines 对现代 C++ 的目标表述为帮助开发者写出更简单、更高效、更可维护的代码,并强调很多规则可以逐步引入旧代码库。(Sutter’s Mill)(isocpp.github.io)
纪录片发布后,Hacker News 上的讨论很快聚集起来。该讨论由用户 ingve 提交,在页面抓取时显示已有数百积分和数百条评论。讨论内容围绕纪录片本身、C++ 的历史地位、复杂性、内存安全、C++23 Modules、CPP2/cppfront、Rust 与其他替代语言等主题展开。
有人表示片长适合在编译等待时观看,并称视频令人愉快;也有人说自己长期阅读 C++ 历史,因此期待这部片子。(黑客新闻)
围绕复杂性的讨论尤其集中。有评论者引用 Ken Thompson 对 C++“不连贯、复杂、想法堆积”的批评,认为这种说法仍有共鸣,并把 C++ 与 Cfront、C 生态、静态分析工具和后续书籍产业联系起来。
另一些评论则从现实采用角度回看 C++,认为 C、Unix、工具链、分发路径和“足够好”的工程方案共同影响了语言传播。还有评论提到,在熟悉惯用法、限制和工具的前提下,C++ 可以不难,但进入新代码库时需要适应不同模式;同一串讨论也把 C++23 Modules、工具链支持和实际采用情况纳入视野。(黑客新闻)
内存安全与未来方向也成为社区回顾的一部分。有 Hacker News 评论指出,纪录片更像一部致敬式作品,关键批评声音主要在最后十分钟出现,包括复杂性增长和内存安全问题。
另一些讨论则把 AI、性能每瓦、C++ 在底层库中的位置、C++ 与 Rust 的替换关系等放在一起谈。由此可见,这部纪录片触发的并不只是对一门老语言的怀旧,也把 C++ 过去四十多年的设计选择带回到今天的软件安全、工具自动化和系统性能议题之中。(黑客新闻)

回看整部纪录片的结构,它采用的是按时间推进的语言史写法:从贝尔实验室发明,到“C with Classes”;从 Cfront 和早期推广,到标准化;从 STL 和 C++98,到 90 年代的科研、游戏、交易应用;从 2000 年代初的低潮,到 C++11 之后的现代化;最后落到未来挑战和 Bjarne Stroustrup 的影响。
与其说它只是在介绍语法,不如说它在整理一种工程传统:在性能、抽象、兼容、标准化和历史包袱之间不断调整。
《C++:纪录片》的发布,给 C++ 社区提供了一个集中回顾的节点。它把语言发明者、标准参与者、库设计者、编译器作者和产业使用者放在同一条时间线上,也把争议留在这条时间线之内。
C++ 的故事因此呈现为一种持续演进的历史:它从 C 的世界中长出,在标准化中稳定,在现代化中更新,又在复杂性和安全性的讨论中继续面对新的问题。对于这门已经走过四十余年的系统编程语言而言,这样的回顾本身也成为社区记忆的一部分。