1975年美国国防部数了数自家代码,发现450多种编程语言在同时运行。这不是技术多样性,是后勤噩梦。

他们决定造一种"统一语言"。结果搞出来的东西,让整个行业嫌弃了四十年——直到Rust、Go、C#一个个往它的设计里撞。

打开网易新闻 查看精彩图片

被嫌弃的预言家

Ada没有明星创始人,没有网红框架,GitHub上搜不到什么"AdaConf"。但它1983年就定稿的特性清单,读起来像2024年的语言路线图:

泛型(generics)是一等公民,不是后期补丁。包(package)概念正式化。并发写进语言规范而非外挂库。接口与实现强制分离。范围约束类型、判别式联合、任务通信模型——Go语言2012年才独立"发明"出来的东西,Ada标准文档里躺了三十年。

Rust从系统安全角度往Ada靠拢,Python从易用性角度往Ada靠拢,C#花了二十年逐个feature逼近。而Ada在1983年就已经在那儿了。

当时的评价?"冗长、晦涩、无关紧要。"

为什么它这么"难用"

Ada的编译器说"不"的频率让程序员崩溃。合法性、可见性、类型检查、空指针排除、契约(contracts)——这些现代语言拼命补的安全特性,Ada用户四十年前就被强制要求了。

它把模糊性当错误处理,不是当特性。你必须显式声明意图,没有"差不多就行"。

这在1980年代是缺点。在2024年,这叫"内存安全""供应链安全""形式化验证"。

谁还在用

波音、空客的飞控系统。北约的指挥网络。任何"代码出错会死人"的地方。

Ada的存在是个尴尬提醒:软件工程的很多"进步",其实是重新发现旧约束的价值。国防部当年要解决的是采购混乱,却意外造出了超前四十年的安全范式。

现在每个主流语言都在加borrow checker、加模式匹配、加编译期验证。没人承认自己在抄Ada,但特征重叠度不会说谎。

去翻1983年的标准文档

下次看到Rust的ownership系统、Go的goroutine、C#的nullable reference type被吹成突破,建议找份Ada 83规范对照。不是要你换语言,是让你看清:所谓创新,有多少是遗忘后的重逢。

行业对Ada的沉默,本质是承认自己走了四十年弯路。