夜雨聆风学习资料网

ARTICLE · 1159000

软件工程之母去世,AI为什么还写不了登月程序?

软件工程之母去世,AI为什么还写不了登月程序?

2026年10月,当硅谷正沉浸在“Vibe Coding”(氛围编程)带来的AI造物主般的狂热中时,一则讣告悄然传出:为阿波罗11号登月编写核心飞行软件的玛格丽特·汉密尔顿(Margaret Hamilton)逝世,享年90岁。

在汉密尔顿的时代,代码是真正的“硬核”工业:女程序员们将代表0和1的铜线穿过细小的磁芯,像织布一样把程序物理地“缝”进存储器里。而今天,开发者只需要靠在椅背上,用自然语言向大模型(如Claude或GPT)输出自己的直觉和意图,AI就能在几秒钟内吐出成千上万行代码。

在这个只要“动动嘴”就能开发软件的Vibe Coding时代,人们甚至开始畅想AI独立接管关键基础设施的未来。然而,当我们回望汉密尔顿留下的遗产,去剖析阿波罗计划中那些生死攸关的代码细节时,一个冷酷的现实浮出水面:哪怕今天的AI拥有了极其强悍的语法生成能力,它依然写不出一套能够安全登月的程序。

一场由四岁女孩引发的“软件工程”革命

要理解AI在复杂工程面前的无力感,我们需要先回到1960年代的麻省理工学院仪器实验室。

作为当时极少数的女性程序员,汉密尔顿不仅要面对堆积如山的汇编代码,还要面对育儿的压力。她经常在晚上和周末把四岁的女儿劳伦(Lauren)带到实验室。有一次,小劳伦在模拟器上像母亲一样胡乱敲击键盘,结果系统直接崩溃了。汉密尔顿查阅日志后惊出一身冷汗:女儿在模拟器处于“飞行状态”时,按下了启动P01(发射前预备程序)的按钮,导致导航数据被彻底清空。

汉密尔顿立刻意识到,现实中的宇航员也可能犯下同样的致命错误,她要求在代码中加入防止此类误操作的防御性程序。但NASA的管理者们拒绝了,他们骄傲地认为:“宇航员受过极其严格的训练,绝不可能犯这种低级错误,写这种代码纯属浪费内存。”

傲慢很快付出了代价。在随后的阿波罗8号任务中,宇航员吉姆·洛威尔(Jim Lovell)在飞行途中真的不小心触发了P01程序,清空了导航数据。汉密尔顿的团队不得不在地面上熬夜九个小时,在一堆纸质代码中寻找修复方案,并重新上传数据才保住了宇航员的命。

从此之后,NASA的管理者彻底让步。这种对人性的预判和对极端错误场景的兜底,被项目组称为“劳伦漏洞(Lauren bug)”。也是在这个时期,汉密尔顿创造了“软件工程”(Software Engineering)一词。她坚持认为,软件不能只是“能跑通的代码”,它必须像修建桥梁和造飞机一样,拥有一套严苛的、防御性的、容错的工程学标准。

这种防御性思维在阿波罗11号登月时达到了巅峰。当登月舱距离月球表面只剩几分钟时,雷达突然涌入大量无用的冗余数据,导致计算机超载,著名的“1202报警”响起。如果按照普通的线性处理逻辑,计算机此时会死机重启,阿姆斯特朗将不可避免地机毁人亡。但汉密尔顿在架构中设计了“异步优先级调度(Asynchronous Executive)”:在算力枯竭的生死关头,系统无情地抛弃了雷达等低优先级任务,把所有资源全部倾注于控制引擎和导航的最高优先级任务上。

阿波罗11号稳稳降落。拯救人类登月壮举的,不是一行行正确的语法,而是对系统崩溃时刻的悲观预演。

如果汉密尔顿拥有Vibe Coding,AI能算出“劳伦漏洞”吗?

让我们做一个大胆的思想实验:如果1968年的汉密尔顿手中拥有今天最顶尖的Vibe Coding工具,她只需输入当时的物理定律、硬件参数和任务目标,AI能否自行开发出阿波罗登月程序?

答案几乎是肯定的:不能。

Vibe Coding的底层逻辑是概率模型(LLM)。它的天性是“乐观”的——它通过预测下一个Token,寻找人类语料库中最符合常规逻辑的“快乐路径(Happy Path)”。当遇到问题时,AI倾向于假设输入是正确的,环境是理想的,一切都会按照标准流程运转。

如果让AI来写阿波罗程序,它会写出一个极其高效的、顺序执行的任务调度器。在99%的测试中,这个调度器都会完美运行。但在面对“雷达疯狂涌入无用数据”这种极其罕见的硬件级意外时,缺乏“悲观底色”的AI程序极大概率会卡死。

更致命的是,AI没有具身认知,也没有生活经验。它无法想象一个四岁小女孩在模拟器上乱按,从而推导出“极其专业、万里挑一的宇航员,在太空幽闭环境下也可能像个四岁孩子一样按错键”。AI可以生成完美的算法,但它无法生成对人性的洞察。

汉密尔顿的成功,恰恰在于她把“人”(不管是宇航员的失误,还是工程师的疏忽)作为最大的不确定性变量,硬编码到了系统的防御架构中。“发生故障不是问题,问题是如何在故障中优雅地降级并活下来”,这种对复杂物理世界和人性的深度敬畏,是靠“氛围”和“直觉”拼凑代码的AI所无法共情的。

从“看着很美”到生产环境:Vibe Coding的漫长跋涉

这就是为什么在2026年的今天,尽管Vibe Coding让无数开发者周末就能“手搓”出一个SaaS应用、甚至克隆出Adobe的全家桶,但它距离真正融入企业的核心生产环境,依然有着难以逾越的鸿沟。

首先是缺乏“系统性防御”的架构能力。 今天的Vibe Coding极大地降低了实现功能的门槛,但企业级生产环境从来不是为了“实现功能”而存在的,它是为了“应对无尽的异常”而存在的。断网、脏数据、第三方API崩溃、内存泄漏、并发死锁……AI在局部代码上可以写得很漂亮,但一旦涉及到跨越数十个微服务的状态管理和极端错误恢复,AI生成的系统就像一座没有承重墙的华丽宫殿,一推就倒。

其次是“最后一英里”的可靠性陷阱。 用AI把一个系统从0写到90%可能只需要一天,但从90%打磨到99.999%的可靠性,需要投入的人力可能会反向膨胀。因为AI生成代码的速度太快,导致“技术债务”的积累速度远超人类工程师的审计速度。当系统中隐藏着成千上万个AI凭概率生成的、没有经过悲观设计的“隐形炸弹”时,排查问题的成本将高得令人绝望。

最后,是工程学最本质的问题:责任。 汉密尔顿将软件开发定义为“工程”,意味着当阿波罗飞船坠毁时,需要有人知道为什么,并承担责任。Vibe Coding本质上是在模糊人类开发者的意图和机器输出之间的边界。当AI生成的程序在企业的核心支付链路上导致了灾难性故障时,开发者甚至无法解释AI当时的运行逻辑,这就违背了工程学“可追溯、可归因”的底线。

玛格丽特·汉密尔顿的离去,带走了一个必须用笔和纸在庞大的逻辑图中寻找生死攸关的Bug的时代。在这个被大模型充斥的秋天,她的故事像一声遥远的警钟:代码的本质,从来不是人与机器的自圆其说,而是与现实世界残酷物理法则的契约。

1975年,弗雷德里克·布鲁克斯在《人月神话》(The Mythical Man-Month)中提出了软件工程管理的核心困境:向进度落后的软件项目中增加人手,只会让项目更加落后。因为软件的复杂性本质在于沟通、协作、边界情况处理和系统集成。50年过去了,AI的出现极大地提升了单个“人月”的代码产出量,但它依然无法完全消解“复杂性”本身。

Vibe Coding确实推平了软件开发的门槛,淘汰那些仅仅依靠简单代码壁垒生存的平庸SaaS公司,但对于那些深入业务骨髓、掌握复杂工程和生态系统的真正巨头而言,“软件工程”远未到谢幕的时刻。在代码与人性和物理世界交织的隐秘角落里,“软件工程”之“人月神话”依然如同地心引力般,支配着这个数字世界的运转。

只要现实世界依然充满着突如其来的“1202报警”和意想不到的“劳伦漏洞”,人类工程师那份对失败的敬畏、对架构的悲观预演,就永远是无法被AI替代的登月级算力。

相关学习资料