2025年底,Bjarne Stroustrup接受了《码农翻身》杂志的一次专访。

按理说,这本该是一场“标准的纪念式访谈”,回顾下过去,评述下现在,展望一下未来,但采访结束时,记者沉默了。

回去之后,记者犹豫再三,最终在稿件上写下了一行备注:“此稿不宜发表。”

当然,大家也都知道,越是“不宜发表”的内容,往往传播得越快。

以下,是那场未公开的专访记录。

记者:Bjarne Stroustrup先生,首先恭喜您,C++已经40岁了!一门编程语言能活这么久,历经无数风雨,真的不多见。

Stroustrup:谢谢,不过我得纠正你一个小错误,1979年我就开始做C++了,那时候它还不叫C++。

记者:那叫什么?

Stroustrup:叫“带类的C”。

记者:这名字听起来有点儿随意,您为什么突然想起来给C加上“类”呢?

Stroustrup:嗯,说来话长,起因是我在丹麦奥胡斯大学读书的时候,受到了一个人深刻的影响。

记者:是谁啊?

Stroustrup:克里斯汀·尼加德,图灵奖得主,面向对象的“祖师爷”,他发明了世界上第一个面向对象编程语言Simula。

记者:他来学校做什么?

Stroustrup:他每月来我们学校一次,待一周,每次来都和我们几个好学生一起喝啤酒,一喝就是几个小时。

记者:……

Stroustrup:一边喝酒,一边讲面向对象。

记者:听起来像一种古老的编程培训方式。

Stroustrup(笑):效果还挺好,就是第二天不一定能编译自己。

记者:既然Simula那么先进,您为什么不直接用它?

Stroustrup:Simula确实很优雅,非常适合描述复杂的软件结构,对于大型项目非常有效,但有个致命缺点:太慢了。

记者:所以您开始找替代方案?

Stroustrup:对,我熟悉十几种编程语言,比如Algol 68,我很喜欢它的类型系统,但是在工业界它没有拥护者。

记者:最后您选了C?

Stroustrup:是的。C很棒。

记者:哪里棒?

Stroustrup:离硬件很近,速度很快,而且——贝尔实验室的气氛很好,我1979年去了那里。

记者:怎么个好法?

Stroustrup:C语言之父Dennis Ritchie 就在隔壁!基本就是“走两步就能改变计算机历史”的距离。

记者:哇,那你们是不是经常讨论?

Stroustrup:是啊,还经常一起吃晚餐。

记者:C语言很简洁,您为什么把C++设计得这么复杂?

Stroustrup(叹气):这个问题我听了40年,今天我决定把秘密告诉你:其实我是在保护程序员。

记者:保护?我没听错吧,C++这么复杂,门槛这么高,很多程序员都学不会.....

Stroustrup:你知道COBOL吗?

记者:知道,老古董了,不过COBOL依然支撑着43%的银行系统,处理着每天3万亿美元的交易,毫不夸张地说,我们的世界就运行在COBOL屎山上。

Stroustrup:那你知道COBOL程序员以前有多赚钱吗?

记者:听说很夸张。

Stroustrup:是的,属于“写代码写到财务自由”,后来IBM觉得不太对劲,人太少了,太贵了,就开始砸钱培训,批量生产程序员。

记者:结果就是程序员数量上去了,工资就下来了?

Stroustrup:是的。我从COBOL学到了一个教训,一门语言如果太容易学,会发生两件事。第一,人人都会写。第二,没人值钱了。同样的事情,还发生在Java身上,Python身上,JavaScript身上..... 你说说,这些语言都有什么特点?

记者:简单?

Stroustrup:对喽,它们跑在虚拟机里,隐藏了指针,隐藏了硬件访问,一个初中生经过半年培训,都可以开发Web系统,用这样的语言,程序员们还有什么前途?!

记者:所以您是故意把C++设计复杂的?

Stroustrup(笑):我更愿意说——我没让它变“过于简单”。

记者:这有什么区别?

Stroustrup:一个是主动复杂,一个是拒绝变成玩具。我决不允许COBOL的悲剧发生在C++程序员的身上。首先C++要能干大事儿,做系统级编程,其次它的门槛一定要高,写出的代码难以理解,只能由作者来维护,这样我的C++程序员们就不用担心失业了。

记者:真是良苦用心啊,我看到网上对C++有个评价,我跟您读一下,您别生气啊。

C++是一门垃圾语言,就像一栋从上世纪70年代开始修、一直没停过的楼: 地基是 C 语言:裸指针满地跑,“楼梯没扶手”,掉下去没人管 一楼加了类和面向对象:开始有房间了,但门锁经常坏(构造/析构一不小心就炸) 二楼是模板:看起来优雅,实际上像“可变形迷宫”,编译器报错能写一屏小说 三楼是 STL:终于像个现代住宅了,但你得先学会一套“奇怪的家具摆放规则” 屋顶是各种新特性(auto、lambda、智能指针):像是后来补的精装修,但电线还是老的 你写一行代码,可能同时涉及三代标准、五种语法风格、两种内存模型。

Stroustrup(笑):哈哈,这位网友是有点儿创意在身上的。不过说正经的,C++这门语言,如果你真的耐心学下去,会发现它其实是个“重武器级别”的工具。很多你天天用的东西,像操作系统、浏览器、高性能库、游戏引擎、多媒体软件,本质上很多都是C++在底层撑着的。

记者:这么一想,好像确实也是,用C++的程序员,听起来确实不太容易失业。

Stroustrup(笑):至少“被AI一键替代”的焦虑,会稍微晚一点。

记者:说到AI,我发现一个现象:AI写出来的代码,好像大多数都是Python、JavaScript、Java,C++反而很少见。

Stroustrup:你终于注意到了。

记者:为什么会这样呢?

Stroustrup(笑):还是那个原因——我设计的C++很复杂。指针、内存管理、模板、元编程、宏……这些东西叠在一起,就像工具箱里塞满了电锯、焊枪、炸药包,每个工具都写着“专业级操作,误触概不负责”。

记者:听起来 AI 光是拎起工具箱就手抖了。

Stroustrup(笑):所以 AI 通常选择另一个工具箱——Python,里面就三样东西:一把小锤子、一卷胶带、一张写着“别怕,怎么敲都不会坏”的说明书。

记者 :哈哈哈

Stroustrup:Python的代码满互联网都是,AI 闭着眼睛都能写。C++?GitHub上虽然也不少,但每段代码的写法都像是同一个人在不同精神状态下的产物,AI 学起来容易精神分裂。

记者:这么说来,C++ 程序员短期内确实不用担心被 AI 取代……

Stroustrup(意味深长地笑): 我说什么来着?四十年了,我一直在替你们操心。

记者:好吧,按惯例,在采访结束的时候,我会请嘉宾给读者说一句话,您想说些什么呢?

Stroustrup :“我没有让 C++ 变简单,因为我不想让你们变得廉价。”

记者:您的良苦用心,程序员们会理解的。

Stroustrup:答应我,一定要发表。

记者:发表了我会通知您的。

Stroustrup:对了,你能把录音给我拷一份吗?

记者:行吧。

——采访结束,录音从此下落不明。

当然,这个采访是假的,愚人节快乐!