AI 时代,程序员正在失去什么?
> "程序不仅存在为源代码,还存在于程序员的心智中。"
这是计算机科学先驱 Peter Naur 四十年前说的一句话。今天,它比任何时候都更值得深思。
当编程变得"太容易"
Rust 社区最近对 AI 编程工具展开了一场罕见的公开反思。一位核心贡献者直言:AI 写作在句子层面表现出色,但在段落层面糟糕透顶。它能生成一段语法正确的代码,却无法理解代码与代码之间的深层逻辑。
这不是危言耸听。AI 确实让编程变得更容易了——过去需要学习几天的东西,现在几分钟就能完成。但这种"容易"是有代价的。
马太效应:强者愈强,弱者愈弱
AI 编程工具呈现出一个残酷的马太效应:
对于资深工程师,AI 是完美的加速器。他们早已在脑中建立了代码的"地形图",知道哪里是高山,哪里是河流。AI 帮他们绕开繁琐的样板代码,他们则专注于真正需要判断力的架构设计。AI 让强者更强。
对于新人,情况恰恰相反。当 AI 自动生成一段代码时,新人无法判断这段代码是否正确、是否高效、是否适合当前场景。他们看到的只是"它能工作",而不是"它为什么这样工作"。久而久之,新人学会的不是编程,而是"向 AI 提问的技巧"。
这不是编程能力的提升,而是编程能力的转移——从理解代码转移到了理解 prompt。
失去的到底是什么?
当一个人完全依赖 AI 写代码时,他失去的不只是"写代码"这个动作本身,而是与代码之间建立的心智连接。
什么是心智连接?它是你修改一个 bug 时,脑中自动浮现的"这个改动会影响哪些模块"的直觉;是你阅读一段陌生代码时,无需运行就能感受到的"这里有问题"的嗅觉;是你面对一个复杂系统时,能够画出完整数据流的想象力。
这些能力不是天赋,而是长期与代码"搏斗"后沉淀下来的直觉。AI 可以帮你完成工作,但它无法把这种直觉灌输给你。就像计算器可以帮你算出正确答案,但无法帮你建立数学思维。
三个实践建议
这不是一篇"AI 万恶"的文章。AI 是工具,工具本身没有善恶。问题在于如何使用。以下是三条实践建议:
第一,把 AI 当作"助教",而不是"代笔"。 遇到问题时,先自己思考,再用 AI 验证。对 AI 生成的代码,要逐行理解,而不是照单全收。
第二,定期"裸写"。 每周挑一个简单任务,完全不用 AI,从头写到尾。这不是为了向 AI 证明什么,而是为了保持与代码的手感。
第三,重视"无聊"的部分。 重构、测试、样板代码——这些 AI 做起来毫不费力的"琐事",恰恰是建立心智连接的最佳时机。正是在这些地方,你学会了一套代码库的组织方式。
写在最后
Peter Naur 的那句话还有后半段:"编程是一种创造性活动,需要程序员对程序的整体行为负责。"
AI 可以帮我们写代码,但它无法帮我们"负责"。当你把代码的正确性完全交给 AI 时,你也就放弃了理解它的权利。
工具始终是工具,人始终是目的。
在 AI 时代,最稀缺的或许不是会写代码的人,而是真正"懂得"代码的人。