当90%代码由AI写完,程序员社区、编程语言、开发工具将何去何从?

当90%代码由AI写完,程序员社区、编程语言、开发工具将何去何从?

💡 原文中文,约6200字,阅读约需15分钟。
📝

内容提要

Elixir之父José Valim探讨AI Agent时代编程语言的演进,认为语法人体工学对Agent意义有限,编译器不会消失,因不同领域需不同抽象。他提出用“程序数据库”取代LSP、用“运行时可观测性”取代调试器。评论区就调试器存废、社区凝聚与初学者成长路径展开争论,未形成统一结论。

🔎

延伸解读

语法人体工学对AI Agent的价值有限

José Valim指出,Agent处理代码时关注的是token而非语法美感,因此为人类设计的语法优化(如可选链)对Agent意义不大。他甚至认为,任何声称“为coding agent而生”却聚焦语法的新语言,都是在围绕当前局限打转。这提示语言设计者需重新权衡表达力、保证与人体工学的优先级。

编译器不会消失,但工具链需重构

Valim认为编译器不会消失,因为不同领域需要不同抽象层次,没有一种底层语言能统一所有场景。然而,围绕人类交互设计的工具——LSP和调试器——可能被取代。他建议用“程序数据库”替代LSP,用“运行时可观测性”替代调试器,以更适配Agent的查询与诊断方式。

社区凝聚与初学者路径面临挑战

评论区担忧,若Agent承担大部分编码,社区原有的价值纽带可能弱化,初学者也可能因错误被Agent悄悄修复而失去学习机会。Valim坦言对初学者问题没有答案,并猜测未来语言演进将更依赖主导团队愿景而非社区呼声。这些开放问题值得持续关注。

❓

Q&A

AI时代,编程语言的语法人体工学优化对AI Agent还有意义吗?

意义有限。Elixir之父José Valim认为,Agent在乎的是token,而不是语法好不好看。Agent不会因为写样板代码而觉得烦,语法上的美感差异对模型来说微不足道。token效率也不应排在优先级前列,因为模型越来越便宜、上下文窗口越来越大。任何声称“为coding agent而生”却把重点放在语法上的新语言,本质上都是在围绕今天的局限性打转。

AI时代编译器会被淘汰吗?为什么?

不会。Valim给出两条理由:第一,做桌面应用时,你不想为每种架构维护一套汇编实现,仍然需要与架构无关的中间表示以及降级到目标机器的能力,这等于重新发明了编译器和高级语言的一部分。第二,人类至今没有找到一种“包打天下”的语言或计算模型,不同领域需要不同的抽象层次和保证,指望一门底层语言统一所有场景并不现实。

Valim提出的“程序数据库”是什么?它如何取代LSP?

Valim建议把语言服务器已有的符号、引用、调用图、类型信息等暴露成一个可查询的“程序数据库”,通过类似Datalog的查询语言或别的接口形式供Agent使用。LSP的很多操作围绕“文件、行、列”设计,Agent不擅长精确追踪这些坐标,且LSP信息呈现方式是为人类消费设计的。程序数据库让Agent能组合出复杂查询,比如“找出所有最终会调用这个函数的公开函数”,甚至可当作linter约束Agent。

为什么说运行时可观测性可以取代调试器?

Valim认为,调试器是“为人类而生”的经典接口,但Agent能对代码插桩、采集执行轨迹、以远超人类的速度关联信息。如果Agent承担大部分代码编写,它们也会在监控和诊断线上系统中承担更多职责。把系统的运行时和状态以可编程查询、可探索的方式暴露出来,能给Agent提供统一接口,让它们实时诊断故障、定位可靠性问题、发现性能瓶颈。Elixir/Erlang的BEAM虚拟机本就内建了检查进程、套接字、ETS表等能力。

评论区对调试器是否会消失有哪些不同观点?

评论区形成两派。一派认为调试器不会死,让Agent能像人一样单步执行、回溯程序状态,反而能带来更快的反馈。Valim回应说双方并不矛盾:目标始终是给Agent提供更好的接口去触达状态、追踪执行路径,不必强迫它们像人类一样一步步来,信息是一样的,接口不一样。另一派则担忧调试器、社区、人体工学统统会被颠覆。整体未形成统一结论。

如果AI Agent写大部分代码,编程语言社区会面临哪些挑战?

Valim提出几个问题:社区还能靠什么粘合?如果人类不再写大部分代码,Python的“唯一明显做法”、Ruby的“程序员幸福感”等共同价值取向带来的归属感还剩下什么?Agent会从两个相反方向影响生态:一方面降低搭建框架的成本,让小生态快速追平大生态;另一方面,如果实现成本足够低,人们可能不再有动力共建同一个方案,而是让Agent量身定做。这形成一种张力。

Valim认为未来编程语言在类型系统和保证机制上应如何调整?

Valim认为,如果Agent写大部分代码,表达力、保证、人体工学之间的权衡值得重新审视。显式写出类型和意图对Agent不是负担,反而能提供更多信息;一味优化“可推断性”会限制表达力和保证上限。保证不必只靠静态手段,可以组合使用静态类型、运行时检查、模型检查、依赖隔离的进程与消息传递等四类机制。未来语言差异化将取决于如何组合这些手段、在表达力与保证之间划出边界。

对于初学者在AI时代如何成长,Valim和评论区有什么看法?

有评论者担忧,如果错误被Agent悄悄修好,初学者可能连自己“卡在哪儿”都不知道,基础问题在被社区看见之前就已消失,对知识传承是隐忧。Valim坦言自己目前没有答案。整体上,评论区未形成统一结论,但有人概括:语言的人体工学重不重要,可能不再取决于“谁在敲代码”,而取决于最终能存活下来的社区教会Agent的到底是“人类的语法品味”,还是别的什么。

🏷️

标签

➡️

继续阅读