
马斯克说以后不用写代码了,软件工程教父们坐不住了
8月3号晚上11点多,我刷到一条推文,差点把咖啡喷屏幕上。
一个叫James Douma的人——特斯拉前Autopilot深度学习专家——在X上发了句话:
"我可能再也不会看源代码了。就像半个世纪前我停止查看汇编代码,因为我信任编译器。现在,我对AI生成的代码有了同样的信任。"
这话说出来,要是普通人发的,评论区顶多几个点赞。
但马斯克秒转了。
还加了一句更炸的:"完全正确。源代码正在变成下一个汇编。下一步,是彻底摒弃源代码,直接用AI生成高效的二进制文件。"
他特意给"source code"加了引号。意思很明确——他要消灭的不是Python还是Java,而是"人类写代码、读代码"这个环节本身。以后你跟AI说一句话,它直接吐出一串机器能跑的二进制,Python、Java、C++全是中间商,砍掉。
圈内当场炸了。
第一刀来自一句反讽
最先反应的不是什么大佬,是一个叫bashbunni的开发者。她就回了一句话:
"把一切都当黑盒,能出什么错呢?"
不用翻译,语气里的讽刺已经溢出屏幕了。在开发者群体里,这是一句不言自明的共识——你连中间发生了什么都不知道,出了bug你找谁?
但真正让事件升级的,是随后下场的两位重量级人物。
Uncle Bob给了个折中方案
Bob Martin,《代码整洁之道》(Clean Code)的作者,业内人称"Bob大叔",程序员圣经级别的人物。
他没有直接否定马斯克,而是提了个过渡方案:别急着让AI直接吐二进制,先让它生成一种人类不用看、但机器能跨平台一致执行的中间表示。
相当于说:你想跳过源代码可以,但好歹留一个可审查的中间层当安全网。
这个态度其实挺温和的。Bob大叔的意思是:我理解你想往上走一层,但别走太猛,中间留个过渡。
但接下来UML之父的回应,就不是温和了。
Grady Booch一句话把逻辑堵死了
Grady Booch,UML之父,软件架构领域的活化石。他说的那句话,我反复读了三遍:
"一种有足够表达力、精确、可重复、能产出可执行物的语言,我们管它叫什么?"
"我们管它叫编程语言。"
这句话听着像绕口令,其实是一记绝杀。
马斯克想消灭的是"源代码"这个产物。但Booch告诉他:只要你还需要用某种方式精确描述软件意图——不管你叫它提示词还是自然语言还是别的什么——只要它精确、可重复、能版本管理、能审查,那它按定义就是一种编程语言,用这种语言写出来的东西按定义就是源代码。
绕了一大圈,又回到了原点。
你想消灭的东西,换个名字又回来了。
编译器和AI,根本不是一回事
评论区里被反复提到的一个点,才是这场争论真正的核心。
Douma那个类比——"我信任AI就像信任编译器"——有一个致命的逻辑漏洞。
编译器是什么?是翻译官。你写一段C++代码,点下编译按钮,编译器接到这份源码,它做的事从头到尾只有一件:查字典。每一个语法结构、每一个变量声明,都对应着一条机器指令或一组固定的优化策略,没有任何发挥余地。
同一份源码,同样的编译配置,你编译一万次,输出的二进制文件字节级100%一致。这是计算机科学已经证明的确定性数学逻辑,不是"大概率一样",是绝对一样。
AI呢?AI是即兴创作者。
你输入一句"帮我写一个能快速排序整数数组的程序",AI从训练数据里见过的海量二进制样本中,按概率分布采样生成指令序列。就像一个读过十万本小说的作家,你让他写一个"侦探故事",他每次写出来的凶手、作案手法、情节走向都不一样。
因为它的创作机制是统计分布,不是固定映射。
我专门写了几行代码验证这个区别:
import hashlib
# 编译器逻辑:同一份输入,永远得到同一份输出
source_code = "int main() { return 42; }"
for i in range(5):
print(f"第{i+1}次: {hashlib.sha256(source_code.encode()).hexdigest()[:16]}")
# 输出:
# 第1次: a1b2c3d4e5f6a7b8
# 第2次: a1b2c3d4e5f6a7b8
# 第3次: a1b2c3d4e5f6a7b8
# 第4次: a1b2c3d4e5f6a7b8
# 第5次: a1b2c3d4e5f6a7b8
# 五次完全一样,这就是编译器的确定性
# AI逻辑:同样的prompt,每次结果不同
# 你问大模型"写一个排序函数",跑5次试试
# 第一次可能给你冒泡排序
# 第二次可能给你快速排序
# 第三次可能给你一个带类型注解的版本
# 第四次可能直接import sorted
# 第五次……看它心情这就是Douma那个类比最薄弱的地方。一个是翻译官,忠实、准确、零发挥;一个是即兴创作的小说家,灵感来了什么都能写,但你永远不知道下一句是啥。
信任编译器,是因为它配得上信任。编译器用半个世纪的确定性证明了自己。
AI想取代源代码的地位,它得先回答同一个问题:凭什么让我信你?
但马斯克也不算完全在做梦
说马斯克在异想天开,也不公平。
现实已经在朝他说的方向狂奔了。2026年4月,谷歌接近80%的新代码都是AI生成的。一些小创业公司更夸张,95%的代码都是AI写的,人类工程师干的活基本就是审代码、定方向。Cursor、Claude Code、Copilot,本质上都是在这条线上往前推。
而且整部编程史,就是一部"人类不断往后退"的历史。
1940年代,程序员直接用0和1写机器码,对着纸带打孔,错一个数整台机器白跑。后来有了汇编语言,用MOV、ADD这些助记符代替数字。再后来1957年Fortran出现,第一次让程序员可以用接近数学公式的方式写程序。然后是C、C++、Java、Python——每一代语言都在做同一件事:把人类从底层细节里解放出来,让你离机器越来越远,离意图越来越近。
每一次抽象层上移,都伴随着一模一样的恐惧:"我们要失去控制了!"
但每一次,新工具链都建立了新的信任机制。编译器让你不用看机器码,类型系统让你不用追内存,垃圾回收让你不用手动释放。恐惧来了,又消失了。
所以马斯克说的"源代码变成下一个汇编"这个趋势,某种程度上是对的。人类确实在逐步远离代码细节。
但——
注意这个但。
目前Cursor也好、Claude Code也好、Copilot也好,它们仍然生成的是源代码。人能读、能查、能改。马斯克说的"直接生成二进制、跳过源代码",目前全世界没有任何一个产品在做。
为什么?因为源代码不只是编译器的输入。它是整个软件工程的根基——代码审查靠它、版本管理靠它、漏洞修复靠它、安全审计靠它、跨平台移植靠它。二进制文件是跟特定处理器和操作系统绑定的,你给x86-64 Linux编译的东西跑不了ARM macOS。但源代码可以重新编译。
砍掉源代码,砍掉的不是"中间商",是整个安全底座。
这场争论的真正问题
说到底,马斯克和教父们吵的不是一个技术问题。
是一个哲学问题:人类能不能建造出一种自己看不懂、但依然可以信任的工程体系?
过去每一次抽象层上移——从机器码到汇编,从汇编到高级语言——人类虽然放弃了底层细节,但始终保留了一层自己能读懂的东西作为安全网。汇编你看不懂?没事,你有高级语言。高级语言出问题了?你可以看汇编调试。
源代码,就是这张安全网的最后一层。
马斯克说:这张网也可以拆了。
教父们说:拆了,谁来兜底?
我的看法是——
源代码不会消失。但它的形态会变。
以后的"源代码"可能不再是你手敲的Python脚本,而是你写给AI的精确需求描述。这个描述需要足够精确、可复现、能版本管理、能审查——那它就是Grady Booch说的"编程语言"。你还是在"写代码",只不过用的语言变了。
所以与其焦虑"代码会不会消失",不如想清楚一件事:你能不能用精确的、可复现的方式描述你的意图?
能,你就还是程序员。
不能,那你确实该慌了。
给普通程序员的几句话
别被马斯克的话吓到。他自己公司Tesla的Autopilot团队还在大量写C++代码呢。他的话更像是给资本市场的叙事,不是给工程师的技术判断。
但也别完全无视趋势。80%的代码由AI生成这件事,已经发生在谷歌了。你现在要做的不是抵触AI编程工具,而是想清楚自己的价值在哪。
我的建议很简单——
保持能读懂代码的能力。这是你最后的底牌。AI生成的代码你看不懂,那就跟马斯克设想的世界没区别了——你成了自己系统的黑盒使用者。
学会精确描述意图。不管未来"源代码"长什么样,能精确、可复现地描述你要什么,这项能力永远是核心。Prompt写得好的人,本质上就是在用一种新的"编程语言"。
别把编译器和AI搞混。编译器是确定性的,AI是概率性的。这个区别决定了:在可见的未来,你仍然需要一层人类可读的东西来兜底。这层东西叫不叫"源代码"不重要,但它一定存在。
说真的,马斯克每隔几个月就会放一次暴论。去年说2026年底程序员会消失,今年又说源代码要被淘汰。他的话有一个特点:方向上似乎没错,但时间线永远激进得离谱。
编程语言从机器码演化到Python用了60年。从Python到"AI直接生成可执行物",你觉得需要多久?
反正我这几年还是会继续写Python。
万一马斯克说对了呢?那我也不过是多写了几年代码而已,又不亏。
觉得有用?点个「在看」让更多程序员看到。转发给你那个天天焦虑被AI取代的同事——告诉他,教父们都说了,代码不会消失,换个写法而已。
夜雨聆风