Bjarne Stroustrup(比雅恩·斯特劳斯特鲁普,丹麦,1950 年生)在 C++ 语言设计与通用系统编程 领域的位置,很少有人能给出准确坐标。他证明了一件事:抽象可以不付代价——但这需要你先想清楚抽象到底该不该存在。

一、C++ 的那个坚持:抽象不该牺牲机器效率
他自述选择计算科学的原因是:物理系当时禁止学生使用计算机,而这种「不许用」的禁令反而让他自己写了第一个程序。他把「真实程序必须快」这一条当作出发点,这解释了他后来所有与「抽象成本」有关的争论。他在 Technical University of Denmark 先读物理,因为课程不理想而转向计算机科学,这个「不合规」的经历影响了他后来对语言设计的看法。这段经历让他很早就习惯于「先想清楚约束条件,再动手」的工作方式。
他最初学的是海洋学,因为当时挪威的大学课程里计算机还只是辅修;这段转向本身就说明他不是从科班路径走进来的。他在丹麦技术大学的毕业论文是一篇关于”用计算机做物理实验”的报告,导师建议他改做更实际的方向,他才转向语言与编译器。
二、1950 年的丹麦:在射箭与天文学之间长大的孩子
他参与的「工艺」项目虽未完成,却让他第一次体会到:一门语言的取舍会沿着整个系统的生命周期放大。他少年时喜欢做航模,这种对结构与材料的手感后来体现在他偏爱「能直接表达机器行为」的语言设计上。「工艺」操作系统虽未完成,却是他第一次在大型系统里体会语言选择如何影响全局。这段经历让他后来在语言设计中格外关注「语言是否让错误难以表达」这一命题。他的博士论文做的是一种叫”通信网络”的运行时系统,是他在贝尔实验室期间实际接触到的电话交换系统。他自述喜欢把复杂问题拆成可验证的小块,这个习惯在后来设计 C++ 时以”异常安全”和 RAII 的形式固化下来。
三、1979 年:Bell Labs 与那份给 C 加上「类」的手稿
1983 年《C++ 程序设计语言》第一版出版时,全书只有 100 多页,其中大量篇幅用来解释「什么被刻意留给了用户」。他坚持书里必须同时给出正例与反例,这在当时的技术书写作中是罕见的。第一版《C++ 程序设计语言》把大量篇幅给了「什么被刻意留给用户」,这种取舍说明贯穿全书。他坚持书中出现的每个例子都要能编译运行,这在当时的技术书里并不常见。C++ 最初叫 C with Classes,是他在贝尔实验室为回答”能不能用面向对象的方式写系统级代码”这一具体问题而做的实验。他把多继承、运算符重载与模板都放进了早期版本,这些在当时都极具争议,也直接决定了 C++ 早期用户群的高度分化。
四、1984 年:第一个商业版本与关于「抽象要不要付钱」的争论
C++ 的演进史同时也是一部「复杂度预算」之争的历史:模板、异常、泛型、概念,每一项都伴随长期争论。他坚持认为复杂度是使用者自己的选择,语言的职责是提供选项而不是替用户决定。模板机制曾让编译错误信息变得难以理解,这场持续多年的争论最终催生了 concepts。他始终反对为了语言纯洁性而牺牲使用者的实际处境,这使 C++ 的演化更贴近工程需求。1985 年《C++ 程序设计语言》第一版出版时,全书不足一千页,面向的是自学读者而非课堂。早期 C++ 的商业推动主要靠各硬件厂商的独立实现,这种”多实现”格局也是 ISO 标准化迟迟到 1998 年的原因之一。
五、1998 年:标准委员会与《程序设计语言原理》
C++ 标准从 1998 年的 C++98 到今天的多个版本,每次修订都伴随大量提案的取舍,他长期在其中扮演核心角色。他在 2018 年推出的 C++20 概念(concepts),本质上就是把「模板错误信息可读」这件旧事做成了语言特性。他在 ISO C++ 委员会中承担核心角色,每一次标准修订都体现了他「复杂度应由使用者选择」的主张。他的教学材料被广泛采用,其中对零开销抽象的解释影响了大量程序员的语言观。
他担任过 ISO C++ 委员会主席多年,标准工作的核心争议始终是”要不要为一个特性牺牲向后兼容”。《程序设计语言原理》第三版增加了大量并发章节,但书中的并发模型相对现代 C++ 已经明显过时,这是他反复修订时的实际困难。
六、零开销抽象这条原则,以及他为此付出的二十年
他写过大量面向教学的材料,其中反复出现同一个例子:用零成本抽象写出的代码,应当与手写汇编同样高效。他关于「C++ 应当是用户的工具而非语言学家的实验场」的表述,是这门语言最稳定的设计哲学。他获得 ACM 杰出语言贡献奖时仍强调同一条设计哲学:零开销抽象,用不上的特性就不该付钱。他公开表达过一个立场:语言设计者应当为使用者的心智负担负责,而不是为语言学完整性负责。这条原则贯穿了他在标准委员会与教学两条线上的全部工作。
他反复举的例子是:写一段不用的泛型代码不应比写一段直接代码更慢,否则抽象就是在收税。2021 年他获得 IEEE 冯·诺依曼奖,评语强调了他把”零开销抽象”从口号变成可检验工程约束的贡献。
参考来源
- 比雅恩·斯特劳斯特鲁普 的公开传记、论文与技术档案(可按其所属机构与年代检索)
- 相关领域的学术史与技术史综述文献