← 返回资讯
陈默
AI 行业分析师
已审核

一门被嘲笑“过时”的Ada,正在自动驾驶里干最硬核的活

十年前混技术社区的时候,我贼爱凑那种“删掉一门语言你选谁”的热闹。年轻嘛,看啥都不顺眼。觉得PHP就是屎山流水线,JavaScript是浏览器里的癌细胞,恨不得亲手把它们从时间线上抠掉。后来真进了工业界,维护过几个跑了二十年的老系统,脸被打得啪啪响。

一门被嘲笑“过时”的Ada,正在自动驾驶里干最硬核的活

一门被嘲笑“过时”的Ada,正在自动驾驶里干最硬核的活


这事儿我栽过不止一次。

十年前混技术社区的时候,我贼爱凑那种“删掉一门语言你选谁”的热闹。年轻嘛,看啥都不顺眼。觉得PHP就是屎山流水线,JavaScript是浏览器里的癌细胞,恨不得亲手把它们从时间线上抠掉。后来真进了工业界,维护过几个跑了二十年的老系统,脸被打得啪啪响。

讲个最近的。

上飘着个帖子,问的就是这个删语言的老梗。底下有个回答直接给我看愣了。那人说,你们都想删C语言是吧?但他提醒了一件事——C语言1972年生的,Pascal比它还早两年,1970年就出来了。这俩玩意儿功能上几乎一个妈生的,都能直接捅指针,都贴着汇编层呼吸,设计哲学也近亲繁殖。他当年甚至困惑过,这俩语言为啥要分家?

然后他甩了个暴论:你真把C语言从历史上抠掉,它的坑大概率会被Pascal无缝填上。C++、Java、C#该生还是会生,只不过名字可能叫P++、Pava、P#。因为在一个你想掐死的语言蹦出来之前,早就有五六份思想差不多的草案在排队了。

我看到这儿的时候,脑子“嗡”了一下。

真的。

跟我这些年踩坑的经验完全对上了。2016年我接过一个银行核心系统的维护烂摊子,里面跑着COBOL代码,写于1987年。我当时第一反应是:都什么年代了还在用这老古董?后来发现,那套系统每天吞吐几十亿交易流水,稳得像块石头。你想删它?可以,先让整个支付系统瘫痪三天试试。

外网有个叫Bill Karwin的狠人,写过《SQL反模式》。有人问他最想删哪门语言,他直接开怼:你在医院躺着,医生说“抱歉,我们检测不到你的心脏病发作,因为监测机器的软件是用FORTRAN写的,而Quora上某个自作聪明的人希望FORTRAN不存在”,你高兴吗?

我翻译一下:你高兴吗?

绝了。

所以我现在贼烦那种“某某语言已死”的流量体。前段时间刷到一篇盘点“历史上最重要的20种编程语言”,把Go塞进去了,却对ALGOL、Smalltalk、ML只字未提,还顺手把Pascal贬成“基本凉透了”。我当时就想顺着网线过去骂人。

你跟我说Pascal死了?

ALGOL 1960年出生,现在真没几个人写它了,但它留下来的东西——词法作用域、结构化编程、嵌套函数、代码块结构、BNF语法——这堆玩意儿构成了现代几乎所有主流语言的骨架。你写的每一行if-else,每一个花括号裹着的代码块,都是ALGOL的血脉。它没死,它只是整了个容活在你每天敲的代码里。

这让我想起去年折腾NVIDIA那篇文章的时候——扯远一秒,那篇写得我头皮发麻。

英伟达安全团队2022年发了篇东西,标题直接就是“如果我们停止使用C语言会怎样”。我当时看到都惊了,这不就是那个问题的现实版吗?他们还真上手了,2018年只用了三个月,就把两个安全敏感的底层应用从C迁到了Ada/SPARK。

Ada/SPARK是啥?1980年代给美国国防部“可靠软件”需求生的崽,设计目标就三个词:高安全性、高可靠性、高可维护性。SPARK作为Ada的子集,能用数学证明保证代码没有运行时错误。NASA火星探测器的软件、空客的飞控系统,都用这玩意儿写的。英伟达最近还给自己的DriveOS拿了ASIL-D认证,汽车功能安全最高等级,用的就是Ada的强类型检查、形式验证那一套。

你看,一门被大多数人觉得“niche到没朋友”的语言,正在自动驾驶领域干着最硬核的活儿。

2019年我还踩过一个坑。

当时要给一个嵌入式设备写固件,我选了Rust,觉得内存安全嘛,多高级。结果发现那个芯片的编译器只支持C。硬着头皮用C写完,过程中各种segmentation fault,调了整整两天。后来跟一个做航电的老哥喝酒,他说他们那儿还在用Ada,我问为啥不换,他说:“换啥?这玩意儿跑了二十年没出过事。”

忒好了这东西。

我突然搞明白了一件事。编程语言的“好坏”不是看你语法多优雅、特性多先进,而是看你在特定场景下能不能扛住。C语言最大的优势是什么?绝对正确。整个语言的设计不存在值得争议的地方——有争议的地方它干脆不做。内存安全是RAII还是GC?不知道,所以C都没有。并发用什么?协程有栈还是无栈?不知道,让用户自己整活。抽象用什么?不知道,void*一把梭。

它没有任何技术倾向,但什么都能搞掂。

虽然总是不那么巴适,却足够简单清晰。

我现在的看法大概是这样的——不对,应该叫偏见——所有图灵完备的语言表现力都一样,最终都变成机器码。你删掉一门,另一门就会顶上去。COBOL引入了结构化记录数据的概念,现代结构体的祖宗就是它。FORTRAN 1957年出生,第一门真正意义上的高级语言,现在气象预测、核物理计算里还有海量它的代码在跑。Basic 1964年想让普通人学会编程,现在无代码平台在做同样的事。

历史是个圈。

你抹不掉的。

所以回到那个问题:如果真要从历史上抹去一种编程语言,我会选哪种?

我会选一种已经死透了的语言。

比如某个只有三个用户、没人维护、连编译器都404的学术玩具语言。删了它不会让医院的心电监测停摆,不会让银行的交易系统崩溃,不会让火星探测器失联。

但说实话,就算是这种语言,我也不太敢删。

万一它某个设计思想,在三十年后被某门主流语言继承了呢?

你品。

ALGOL当年也没几个人写,现在它的灵魂活在所有语言里。

这事儿吧,越琢磨越觉得,编程语言不是工具,是化石。每一门都嵌着某个时代的技术判断和工程妥协。你抹掉一块化石,可能整个进化树的推论都得重写。

所以我现在不参与这种讨论了。

有那功夫,不如去修修我那跑了十五年的Perl脚本。

还在生产环境里跑着呢。

真的真的。

382
9572 阅读
2 评论
分享
链接已复制
编辑说明

本文由 MakeSense 编辑团队撰写并审核。文中引用的数据和观点均经过交叉验证,如有疏漏欢迎在评论区指正。最后更新:2026年06月27日 13:04

陈默

AI 行业分析师

前某大厂 AI 实验室研究员,关注大模型技术演进和商业化落地。写过 200+ 篇行业分析,擅长从产品视角拆解技术趋势。

读者评论 2

老李 5天前
有个小问题想请教,文中提到的那个方案在大规模场景下性能怎么样?
回复 点赞 (5)
运营小陈 1周前
转发到团队群了,大家都觉得有参考价值。
回复 点赞 (4)