AI Didn’t Make Programming Easier. It Just Made It Differently Difficult
本文是ACM(美国计算机协会)文章 “AI Didn’t Make Programming Easier. It Just Made It Differently Difficult” 的翻译,其中 以💡开头的部分是我个人的理解和补充说明。
人工智能并没有让编程更容易,它只是让编程以另一种方式变得困难
软件开发的未来,将属于这样一类人:他们能够在大规模复杂度下保持清晰思考,在快速变化中维持稳定的系统心智模型,并把机器生成的成果融入人类主导的设计意图之中。
数十年来,实证研究表明:编程是一项高认知负荷的活动。开发者依靠工作记忆、长期记忆调取以及复杂的心智模型,来处理各类相互交织的抽象概念,例如控制流、数据结构以及软件的架构设计。这套传统认知模型一贯认为,记忆与回忆既是软件开发得以开展的核心基础,同时也是主要瓶颈。
如今由 AI 驱动的编程助手正在改变这一局面。这类工具充当外部记忆系统,把语法记忆、样板代码生成、API 使用查询等负担,从人脑转移到机器。随着对人类记忆能力的要求降低,逻辑推理、架构理解、判断力、代码结构把控能力的相对重要性正在不断提升。
💡 逻辑推理、架构理解、判断力,从来就是程序员的核心能力,并非 AI 出现之后才变得重要;
AI 只是消灭了 “记忆语法、样板代码” 这个门槛,为开发者腾出更多时间用于这些核心能力,并让这些高层能力成为区分开发者水平的决定性因素。
因此,“懂得如何编程” 正在被重新定义,但这种改变并没有让编程这件事变得更简单,也没有贬低程序员的价值。本文阐述编程工作正在发生的四大主要转变:
- 该领域向更多新从业者敞开大门。
- 编程工作的难点发生了转移(困难的形式已然不同)。
- 编程教育正在发生变革。
- 程序员的角色,正从知识容器演变为调度统筹的主导者。
综合来看,这些转变表明:AI并没有消解编程的认知内核,只是将其发生了转移。旧的障碍虽然消失,但另一部分技能变得更为重要,同时也催生了新形式的难题。
💡 此处认知内核的原文是cognitive substance,指编程工作中需要深度思考的那部分核心内容。
作为高记忆负荷工作的编程
在软件开发发展的绝大部分时期,研究人员发现:编程需要结合逻辑推理能力、工作记忆容量与长期记忆调取能力。布鲁克斯将编程描述为一种认知过程,该过程要求开发者维护多个相互作用的抽象概念。彭宁顿后续证实,程序员要依靠控制流与数据流的复杂心智模型,完成代码的设计、理解与修改。多项研究表明:这些心智模型以抽象形式存在于人脑中,维持它们需要高昂的认知开销,并且本身相当脆弱。一旦发生上下文切换,心智模型就很容易崩塌;倘若没有文档记录,重新构建这套心智模型会耗费巨大脑力。
然而如今,AI 编程助手正在重塑这份原本负担沉重的认知图景。开发者拥有了外部记忆系统,可以生成代码、检索语法、还原上下文,还能记忆并复现过往心智构想的各类变体。这并不代表不再需要思考,只是改变了对程序员而言最为关键的那部分认知技能。
💡 心智构想的原文为mental constructs,指人脑中构建出来对系统的理解、概念。
💡 这一段想表达的是:思考本身不能被消除,只是需要的能力发生转移,转移到了推理、判断、架构理解。
-
工作记忆与长期记忆调取
巴德利与希奇将工作记忆定义为一种容量有限的认知系统,负责对离散信息单元做临时存储与加工处理。与之相对,长期记忆是固化知识的存储库,既包含语法、架构概念这类陈述性知识,也涵盖代码惯用写法、问题求解图式这类程序性知识
传统意义上,编程高度依赖上述两种记忆(工作记忆、长期记忆)。索洛维、博纳与埃利希的研究发现:程序员会依靠内在的认知偏好来组织循环迭代的实现思路;这类认知偏好源于过往经验,从长期记忆中调取而来。例如,当循环语法结构契合程序员的天然思考范式时,代码正确率会大幅提升。这表明,过去编程活动的指导依据,不只有语法知识;还包括从记忆中调取、在设计决策中以心智模型形式体现的内在认知偏好的构建与执行。
齐格蒙德等人利用功能性磁共振成像(fMRI)实验证实:理解代码会激活大脑中负责工作记忆、注意力与语言处理的神经网络。这从生理层面证明:理解复杂编程任务,在神经机制上属于一项消耗大量认知资源的脑力活动。 -
作为外部记忆资源的 AI 相关理论
AI 编程助手充当外部记忆与认知载体,改变了原有的认知格局。这与哈钦斯提出的分布式认知理论相契合。该理论认为,认知系统并不局限于人个体本身,还可以延伸至外部环境;外部环境能够拓展并增强人的个体认知能力。
若干补充理论完善了分布式认知理论。认知负荷理论(CLT)认为,AI 工具能够降低外在认知负荷—— 也就是回想语法、记忆样板代码带来的内存开销;由此释放工作记忆,使其可以投入到任务固有的高层逻辑推理当中。
延展心智假说(EMH)进一步把视角聚焦到个体开发者身上:倘若 AI 助手稳定可用、被开发者习惯性使用并且获得信任,它就不再仅仅是外部工具,而会成为程序员认知架构中一个一体化组成部分。按照这一观点,AI 本身会融入思考过程,对推理方式、决策以及脑力付出带来的结果产生塑造作用。
巴克、詹姆斯与波利卡尔波娃的研究表明:开发者通常借助 GitHub Copilot 来承接底层琐碎工作,例如编写样板代码、调取 API 细节、查询陌生语法;而开发者自身的精力,则转移到验证与整合 AI 生成代码之上。这些研究结果共同支撑这样一种观点:AI 并不仅仅是速度更快的搜索引擎;至少在一定程度上,它是人类认知架构的一体化延伸。
💡AI并非速度更快的搜索引擎,是因为搜索引擎只是检索已有信息;而 AI 可以生成代码,参与人的认知流程
- AI 所能消除与无法消除的事物
因此,AI 从根本上改变了记忆不完整带来的代价,切实降低了记忆调取出错所要付出的成本。开发者无需在脑中精准回忆,就可以向 AI 获取常用 API 使用范式;也不必依靠消耗大量工作记忆去推导重构,就能拿到复杂语法。这种能力直接降低了对从长期记忆中快速调取具体底层知识的依赖,缓解了前文所述的认知瓶颈。
然而,尽管 AI 辅助编程工具能够加快常规开发任务的进度,却无法免除人为监督审查的必要性;尤其当工作需要概念层面的逻辑推理,而非表层代码修改操作时,人为审查就更为关键。所有程序员都清楚:AI 生成的代码可以做到语法完全正确,但在语义逻辑与设计取舍上依然存在缺陷。这意味着开发者仍必须充分理解程序结构,以此识别错误、批判性地评估 AI 给出的代码建议,并针对代码的因果行为,提出必要的 “为什么这么做” 与 “为什么不这么做” 的追问。
希哈布等人研究发现:使用 GitHub Copilot 的学生完成存量代码场景任务时,速度大幅提升,解题推进进度也更高。但在结题访谈中,许多学生表达了顾虑:自己并不能完全理解 Copilot 给出的方案是如何运作、为何要如此实现。因此作者呼吁采用对应的教学方法,既要发挥 Copilot 带来的优势,同时也要培养学生对代码的理解能力。阿拉纳齐等人针对 ChatGPT、Copilot 这类工具在编程教育中的多项对照实验开展元分析。研究表明:尽管 AI 辅助能够提升任务完成度与工作效率,但在学习成效与理解深度方面,AI 带来的提升幅度很小,并且统计结果并不稳定。
这标志着一次重大的认知重构:记忆成为跨越人与机器的共享资源。编程不再那么取决于开发者能够在脑海中容纳、处理多少信息,而更多取决于:在构建与组织一套复杂逻辑系统时,开发者能否在多个抽象层级下保持清晰思考。多项研究证实,针对代码库的稳固心智模型,是代码浏览理解与逻辑推理的必要基础。因此,倘若开发者把过多思考工作外包给 AI,自身内在的心智模型就会弱化。由此可见,AI 只是转移认知负荷,而非消除认知负荷;它加快了编写代码的速度,却增加了校验与验证代码的时间开销。
换言之,难点从记忆调取(“这段代码该怎么写?”)转移到了判断评估(“这样做真的合理吗?”)。这场从 “依赖记忆调取” 到 “依赖判断评估” 的编程范式转变,正是 AI 辅助开发最核心的认知变革。传统编程要求开发者在脑中储备庞大的知识库,囊括语法、设计模式与代码惯用范式;而 AI 赋能下的编程,则转而要求开发者建立一套完备的评估框架,用以评判代码的正确性、一致性与方案适配性。认知负担并未消失,它只是从信息调取转移到了逻辑推理。
💡 AI 可以编译通过,但解决不了语义错误、设计缺陷。开发者的核心工作变为:读懂结构、找问题、质疑 AI 方案,追问因果逻辑。
💡 brownfield tasks:存量代码任务(棕地任务),指在已有现存代码库之上做修改、迭代、修复;区别于从零写全新代码的 greenfield(绿地)任务。
💡 这里提到了存量代码任务,强调的是使用者理解缺失。不要混淆的是,相对于存量代码任务,AI工具用于全新代码任务的效果更好,因为无需理解存量代码、评估改动风险。简单来说,就是没有历史包袱。
作为混合认知系统工作的编程
正在显现的现实并非 AI 取代程序员,而是 AI 成为并行运行的第二套认知引擎。机器挖掘呈现模式、拼接调用 API、调取被遗忘的语法,快速生成初步方案;这消解了底层记忆调取的瓶颈,但同时也会加重评估校验的负担。相应地,人的角色不再主要是敲击代码的执行者,而更多成为意图塑造者:对 AI 输出进行检查、解读、整合、综合、验证、重构、舍弃、修改,并最终为工具产出的内容赋予架构与业务目标。这一变化与医疗领域已经发生的变革十分相似:诊断工具减轻了记忆晦涩临床细节的负担,但同时提高了解读、判断与错误识别的风险权重。专业能力的重心,也从记忆调取转向逻辑推理。
理解这种人机混合协作模式,有助于解释:为什么 AI 只是改变了编程困难的形式,而非单纯让编程变得简单。困难并没有被消除,只是在这套跨越人与机器的全新认知架构中被重新分配。旧的难题虽得以消解,但这套重新分配也催生了新的挑战。在 AI 仍主要充当外部记忆载体与代码转换处理层的当下,四大主要转变已然显现:
-
编程领域门槛将放开
过去,不少人会因为记忆各类库、语法变体、错误处理范式带来的巨大认知负担而望而却步;如今他们找到了可行的入门路径。记忆调取这一瓶颈被削弱,让那些曾经在语法、库细节、陌生代码范式上举步维艰的人更容易接触编程。但与此同时,问题拆解、系统推理以及评估生成代码的能力变得更加重要。
然而这种低门槛伴随一个悖论:产出代码的门槛降低了,但写出高质量代码的门槛反而可能抬升。因为判断评估能力变得至关重要,而它远比记忆调取能力更难培养。 -
开发工作并未变得更简单,只是困难发生了转移。
概念梳理、问题拆解、调试排错与架构预判依旧需要投入脑力,甚至需要付出更多。挑战上升到了更高的层级。
过去新手程序员主要受困于语法错误与 API 使用;如今他们的难点变成评判 AI 生成方案是否适配场景、是否具备可维护性,以及是否契合更宏观的系统约束。这是一种层次更高的困难,它要求开发者深度理解软件工程原理,而非仅仅掌握表层的语言语法特性。 -
编程教育将会转型。
教学会减少对语法记忆的要求,转而更多培养面向复杂系统的思维能力。课程重心向架构、接口设计、状态管理、失效模式、约束权衡、测试构建、安全以及长期可维护性倾斜。代码仅仅成为思想的众多表达载体之一。开发者依旧必须具备分析、适配、修改 AI 产出代码的能力,甚至相比以往要求更高。 -
也是最重要的一点:程序员依旧不可或缺。
程序员不再充当知识的容器,而是作为统筹主导者:理解各个组件以及组件之间如何配合,维护系统的完整性,并判断什么才是至关重要的。这一转变,对于我们如何理解编程专业能力有着深远意义。
新时代能力最强的开发者,不再是打字速度最快、记忆知识最多的人;而是能够维持完备深层心智模型,同时把一切会干扰心智模型构建的事务交给 AI 处理的人。他们将强大的系统推理能力与 AI 增强的记忆调取能力相结合,并把大模型视作一种认知义肢:工具高效好用,但无法最终判定方案在语义逻辑与设计取舍层面是否正确、是否具备一致性。
结论
综合以上四大转变可以看出:AI 并没有消解编程内在的认知内核,而只是对认知负荷进行了重新安置。随着外部记忆资源变得充裕、代码生成成本大幅降低,程序员的价值重心转向解读分析、结构化推理与判断评估。软件开发的未来,将属于这样一类人:他们能够在多尺度下保持清晰思考,在快速迭代变化中维持稳固的心智模型,并能够把机器生成的产物,融入由人主导的业务意图之中。
因此,AI 并没有削弱软件开发这门技艺;它拓展了技艺的边界,深化了其内涵,让更多工作显露出纯粹的智力属性。开发工作的困难形式发生改变,是因为它要求层次更高的专业能力:判断评估优先于记忆调取,架构统筹优先于语法细节,全局协调优先于具体实现。这些能力并非更容易习得、更容易展现,它们只是不一样的能力,并且从长远看,要求或许会更高。
参考
- Alanazi, M., Soh, B., Samra, H., and Li, A. The influence of artificial intelligence tools on learning outcomes in computer programming: A systematic review and meta-analysis. Computers 14, 5 (2025), 185.
- Baddeley, A.D. and Hitch, G. Working memory. In The Psychology of Learning and Motivation 8, Academic Press. G.H. Bower (Ed.) (1974), 47–89.
- Barke, S., James, M.B., and Polikarpova, N. Grounded Copilot: How programmers interact with code-generating models. In Proceedings of the ACM on Programming Languages 7, Article 78 (2023), 85–111.
- Brooks, R.E. Towards a theory of the cognitive processes in computer programming. Intern. J. Man-Machine Studies 9, 6 (1977), 737-751.
- Hutchins, E. Cognition in the Wild. MIT Press (1995).
- Pennington, N. Stimulus structures and mental representations in expert comprehension of computer programs. Cognitive Psychology 19, 3 (1987), 295–341.
- Shihab, M.I.H. et al. The effects of GitHub Copilot on computing students’ programming effectiveness, efficiency, and processes in brownfield programming tasks. In Proceedings of the ACM Conf. Inter. Computing Education Research (2025), 407–420.
- Siegmund, J. et al. Understanding source code with functional magnetic resonance imaging. In Proceedings of the 36th Annual Intern. Conf. Software Engineering, ACM (2014), 378–389.
- Soloway, E., Bonar, J., and Ehrlich, K. Cognitive strategies and looping constructs: An empirical study. Commun. ACM 26, 11 (1983), 853–860.
关于作者
Jeremy Osborn(jeremy.osborn@gmail.com)是一位技术领袖,他的工作涵盖了软件、治理、可持续发展和战略。
更多推荐
所有评论(0)