“编程终结”会很像编程(2023)

关于 AI 将带来“编程终结”的说法引发了不同反应,许多工程师认为,当前的大语言模型虽然是强大的助手,但远未能取代人类开发者。评论者指出,需求不清、维护、责任归属、安全性以及现实世界的边界情况等问题依然存在,并把今天的热潮类比为过去的 UML、无代码工具和外包开发浪潮——这些都曾承诺消灭程序员,但最终更多只是改变了他们的工作方式。逐渐形成的共识是:AI 会越来越多地处理样板代码和常规编码,而人类则更多专注于规格说明、测试、架构和监督,而不是从流程中消失。

“编程终结”的范围

  • 许多人认为,“不再需要编程”意味着 AI 能端到端地独立处理任务(电子邮件、API、雇佣其他 AI 等),用户只需用自然语言下达请求,比如“告诉我我最好的客户是谁”,无需显式代码或 UI。
  • 也有人认为,“终结”只是把编程转移到一种半自然、半形式化的语言中,或者转而通过指定规则、测试和需求来完成,而不是编写函数。

当前与短期现实

  • 如今的 LLM 被认为是:
    • 对冗长语言的强力自动补全。
    • 比搜索/Stack Overflow 更快的问答工具。
    • 适合样板代码、单行代码和初始测试,但不适合复杂或新颖的系统。
  • 一些人表示,能读写文件、反复迭代并修复简单 bug 的 agents 已经取得成功(例如小型游戏),但它们在陌生或复杂的代码库上仍然吃力。

程序员会被取代吗?

  • 怀疑观点:
    • 编程的难点在于理解需求、权衡取舍以及人的意图,而不是语法。
    • 以往的 CASE 工具、UML、4GL、无代码/低代码:它们改变了工作方式,但没有消灭程序员。
    • LLM 面临“现实 vs 文本”的不匹配(例如硬件 bug、现实世界的约束),因此人类监督被认为会长期存在。
  • 更乐观的观点:
    • 随着模型改进,它们会同时处理编码和维护;人类可能主要负责指定行为并编写测试。
    • 开发者可能演变为架构师、技术负责人,或管理一群 AI agents 的“提示词程序员”。

责任、测试与规格

  • 有强烈观点认为 AI 不能承担法律责任;组织仍然需要人类对结果负责。
  • 很多人预见程序员会变成测试/规格编写者:测试和属性编码了真实的业务逻辑,而 AI 生成实现。
  • 编写好的需求被强调为至少和编码一样困难;纯英文规格仍然需要精确性。

经济与组织层面的担忧

  • 企业会推动 AI 降低成本,即使质量受损,正如外包和一些 AI 辅助工作流中已经出现的情况。
  • 担忧的重点与其说是完全取代,不如说是:
    • 人员缩减以及对较弱开发者的压力。
    • 由 AI 驱动的微观管理和自动化绩效评分。
    • 人类需要维护 AI 生成的“毛球”系统,却几乎无法控制底层设计的混合环境。