比雅尼·斯特劳斯特鲁普:将优雅与速度结合
比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup)想要实现一种在纸面上听起来像是矛盾的东西:一种他可以编写“像Simula程序一样优雅,但像C程序一样高效”的程序的语言。Simula缓慢且学术化;C语言快速但无情。斯特劳斯特鲁普花了接下来的四十年时间证明这种矛盾只是表象,并在此过程中构建了至今仍在运行世界操作系统、浏览器、游戏引擎和交易平台的语言。
在奥胡斯的工人阶级起点
斯特劳斯特鲁普于1950年12月30日出生在丹麦奥胡斯的一个工人阶级家庭,1969年至1975年在奥胡斯大学学习数学,主修计算机科学。随后,他前往剑桥大学攻读计算机科学博士学位,于1979年在戴维·惠勒(David Wheeler)的指导下完成,专注于分布式计算。正是在剑桥,通过克里斯汀·尼加德(Kristen Nygaard,Simula和面向对象编程本身的两位发明者之一)的影响,斯特劳斯特鲁普吸收了关于类、继承和抽象的思想,这些思想将定义他一生的工作。他说,他对Simula表现力的接触,加上对其运行速度极其缓慢的挫败感,埋下了C++旨在解决的具体问题的种子。
贝尔实验室与“C with Classes”的诞生
1979年,斯特劳斯特鲁普加入了位于新泽西州默里山的AT&T贝尔实验室计算机科学研究中心——正是那个产生Unix和C语言本身的同一研究文化。在那里,他开始用Simula风格的类扩展C语言,最初将结果称为“C with Classes”。后来被重命名为C++的内部参考手册于1984年出现,该语言于1985年实现商业发布,同年斯特劳斯特鲁普出版了《C++程序设计语言》(The C++ Programming Language)的第一版,这本书后来出了四版并被翻译成二十一种语言。他故意将C++构建为C的扩展,而不是从零开始的语言,这一决定使他牺牲了一些理论上的纯粹性,但换取了与现有庞大代码库和工具链的即时兼容性——这是一种务实的权衡,它比任何其他因素都更能决定该语言传播的速度。他随后领导了AT&T贝尔实验室的大规模编程研究部门,从其创建一直到2002年底,并于1993年被任命为贝尔实验室研究员,1996年被任命为AT&T研究员。
C++实际上增加了什么
C++在C之上增加了一个静态类型系统,该系统以与内置类型相同的严肃性对待用户定义类型;基于Simula类和继承的面向对象编程;以及——在后来且可以说更具影响力的举措中——通过模板实现的泛型编程,使得代码可以编写一次并针对多种类型进行专门化,而无需牺牲速度。它的资源管理惯用法RAII(资源获取即初始化)通过构造函数和析构函数将资源的生命周期与对象的生命周期联系起来,这种模式解决了一类困扰C程序员多年的内存和资源泄漏错误,并后来影响了具有垃圾回收功能的语言自身的资源处理设计。至关重要的是,这一切都没有以牺牲C对硬件和操作系统资源的直接访问为代价——斯特劳斯特鲁普最初野心中“效率”的一半从未为了“优雅”的一半而妥协。
引导语言通过标准化
斯特劳斯特鲁普并没有仅仅发明了C++就走开。他是1989年ANSI标准化工作和随后1991年ISO委员会的创始成员,并担任委员会进化工作组(审查对语言的每一项提议增加的机构)主席长达二十四年。对于任何编程语言的创造者来说,这是一个异常长的管理任期,这意味着斯特劳斯特鲁普亲自塑造了C++如何吸收数十年的新需求,从并发支持到编译时元编程,而没有破坏已经在生产中运行的庞大现有C++代码库。
贝尔实验室后的学术和工业生涯
离开贝尔实验室后,斯特劳斯特鲁普于2002年加入德克萨斯农工大学担任工程学院讲座教授,并于2011年成为大学杰出教授。2014年,他加入摩根士丹利担任技术研究员和董事总经理,同时在哥伦比亚大学担任客座教授,自2022年起,他是哥伦比亚大学计算机科学的正教授——这是一个不寻常的职业生涯后期轨迹,将一位系统语言的发明者置于华尔街交易公司技术的核心。
奖项与认可
斯特劳斯特鲁普获得的荣誉追踪的是他巨大的影响力,而不是任何单一的著名突破:1993年的ACM格蕾丝·穆雷·霍珀奖,1994年当选为ACM研究员和IEEE研究员,2005年的威廉·普罗克特科学成就奖(第一位获得该奖的计算机科学家),2017年的IET法拉第奖章,以及2018年的查尔斯·斯塔克·德雷珀奖(“因概念化和开发C++编程语言”)。计算机历史博物馆在2015年认可他为研究员,称赞他“将面向对象编程和泛型编程带入了主流”。他没有获得ACM图灵奖。
为什么比雅尼被称为天才
称斯特劳斯特鲁普为天才的理由并不在于单一的理论原创性——面向对象来自尼加德和达尔,泛型编程有先例,C语言已经存在。相反,它在于一种更罕见的工程判断力:将领域内被认为处于紧张状态的思想融合在一起,而不破坏其中任何一个,并且在四分之一个世纪的标准化决策中正确地进行这种权衡,同时计算本身在语言之下发生了变化。德雷珀奖的引文称赞他“概念化和开发”了C++,这是一种承认综合而非纯粹发明的语言。诚实的反对意见是实质性的:C++在领域内受到广泛批评,包括其积累的复杂性,它将程序员暴露在内存安全陷阱中(Rust等较新的语言明确设计旨在消除这些陷阱),以及直接追溯到斯特劳斯特鲁普保持与C向后兼容的创始决定的设计妥协。他的天才,如果这个词适用的话,更接近于大师级的工艺和管理——构建了一些极其有用但不完美的东西,然后将其维持了四十年——而不是纯粹抽象洞察力的闪现。
遗产
C++仍然是操作系统、浏览器、游戏引擎和金融交易系统的基础,其影响在Java、C#和Rust中清晰可见。斯特劳斯特鲁普对自己一生工作的评价一直具有典型的非感伤性:他构建了一个旨在被使用的工具,按照这个标准——几十年来纯粹的无处不在——C++的成功超过了历史上几乎任何其他编程语言。

