46%的代码都是AI写的,我们是在进化还是在把脑子外包出去
你敢信吗,我用自然语言写了一个电商后台,没写一行 SQL,没调一个 API——就靠聊了 20 分钟天。结果上线第一天就崩了,因为 AI 帮我生成的权限校验逻辑里,把“管理员”和“游客”的判断条件写反了。
等等,这里我要更正一下——不是“写反了”,是它把 role === 'admin' 写成了 role !== 'admin'。一个感叹号的差别,让所有游客都能看后台订单数据。我当时在屏幕前血压直接拉满。
这狗血经历让我开始认真思考一个问题:我们从声明式走到对话式编程,到底是在进化,还是在把脑子外包出去?
别装了,你早就不写代码了
说实话,你有多久没手写 CSS 的 flex 布局了?有多久没从头撸过一个表单验证逻辑了?
我们早就活在声明式的世界里。你要一个按钮,就告诉框架“我要一个按钮”,而不是去操作 DOM。你要一个数据库查询,就写 SELECT * FROM users WHERE status = 'active',而不是告诉数据库怎么遍历索引。这种“告诉计算机做什么,别管怎么做”的范式,已经统治了前端十年、后端十五年、甚至 DevOps 都在用 Terraform 搞声明式基础设施。
但问题是——
声明式编程有个隐藏前提:你得知道这玩意儿叫“按钮”,你得知道 SQL 语法,你得知道 YAML 的缩进不能混用 tab 和空格。这个坑我踩过三次。第一次是 2018 年在配置 K8s deployment 的时候,第二次是去年写 GitHub Actions workflow,第三次...算了不提了,反正每次都想掀桌子。
这就是那道无形的墙。
我 2019 年在 FAANG 带新人的时候发现一个诡异的现象:产品经理完全理解业务逻辑,但就是没法把需求翻译成代码。而工程师花 40% 的时间不是在解决技术问题,是在猜产品经理到底想要什么。中间那个翻译层,消耗的能量比真正写代码还多。
然后 ChatGPT 来了。2022 年 11 月 30 号,一切都变了。
从“怎么说”到“想要什么”
2022 年 12 月初,我记得特别清楚,我试着让 ChatGPT 写一个 Python 爬虫。我就敲了一行字:“帮我抓一下这个网站的文章标题和发布时间,存成 CSV。”
它吐出来的代码直接能跑。
我当时在屏幕前愣了大概 30 秒。不是因为震惊它能做到——我震惊的是交互方式彻底变了。我不需要知道 BeautifulSoup 的 API,不需要理解 HTTP 请求头怎么设置,甚至不需要知道 Python 的 csv.DictWriter 怎么用。我就直接用自然语言说我要什么,然后它给我了。
这就是对话式编程的本质:不再是你告诉计算机怎么做,甚至不是你告诉计算机做什么,而是你告诉计算机你想要什么结果。
仔细想想这个演进路径:
- 命令式时代(汇编、C):你指挥 CPU 每一步怎么走
- 声明式时代(SQL、React):你描述最终状态,引擎负责实现
- 对话式时代(Copilot、Cursor):你描述意图,AI 负责推理、补全、甚至质疑你的需求
每一步都在把抽象层级往上拔,每一步都在缩小“想要什么”和“怎么做到”之间的距离。
Github 2024 年的数据很说明问题:Copilot 用户中有 46% 的代码是由 AI 生成的。JetBrains 的调查显示,开发者平均每天节省 2-3 小时在样板代码和文档查询上。这些数字背后不是效率提升那么简单——它意味着我们跟计算机对话的语言正在发生基因级别的突变。
三个“卧槽”时刻
第一件事:用自然语言重构遗留代码
去年 3 月我接手了一个 Node.js 项目,大概 5 年前的代码,写得一言难尽——回调地狱、全局变量满天飞、注释是日文写的(前任是东京办公室的)。按照传统流程,光读懂业务逻辑就得两周。
我干了件很野的事:把整个 src/ 目录喂给 Claude 3.5 Sonnet,然后说:“解释这个文件在干什么,然后用现代 async/await 重写,加上错误处理,再写 5 个测试用例。”
大概 10 分钟后,代码重写完,测试覆盖率 87%,还贴心地标注了三处潜在的内存泄漏。其中一处是 EventEmitter 没 removeListener,这玩意儿在生产环境跑了五年居然没炸,只能说运气好。
这不是工具,这是一个会说人话的编译器。
第二件事:产品经理直接“写”出了一个后台系统
我们团队 2024 年 8 月试了个极端实验:让一个完全不会编程的产品经理用 Cursor 加 natural language prompt 搭一个内部数据看板。她花了 3 天,真的搞出来了——能展示实时数据、能筛选日期范围、能导出 Excel。
虽然安全性一塌糊涂。她把数据库密码硬编码在前端了,就是 const dbPassword = 'admin123' 那种。但功能完全可用。这件事彻底摧毁了我对“程序员护城河”的认知。
嗯...这个比较复杂。我觉得护城河还在,只是位置变了。
第三件事:AI 教会我一种我根本不知道的算法
有次我在优化一个日志解析器,性能瓶颈在字符串匹配上。大概每秒要处理 2GB 的日志流,现有的实现用的是正则,慢得离谱。我跟 GPT-4 吐槽说这玩意儿太慢了,它建议我用 Aho-Corasick 算法。
我压根没听过这个算法。它不光给了我实现,还解释了为什么在我的场景下比 KMP 快 3 倍,顺带画了 ASCII 图示解释状态机结构。我后来查了才知道,这算法 1975 年就有了,在入侵检测系统里用得很多。
那一刻我感觉自己像个学徒,AI 是那个见多识广的老师傅。
但说实话,问题比答案多
我开头那个电商后台崩掉的例子不是编的。对话式编程有个致命问题:你无法验证你不理解的东西。
当你手写 SQL 的时候,你知道每个 JOIN 的含义,你清楚索引怎么走。当 AI 帮你生成查询的时候,你拿到结果觉得“嗯,数据看着挺对的”,但你怎么知道它没漏掉边界条件?我上周就遇到一个,AI 生成的 SQL 在 LEFT JOIN 的时候没处理 NULL,导致 SUM 结果全是错的,偏差了大概 30%。我在 Code Review 的时候差点就过了,因为语法太漂亮了。
这就引出了三个我正在踩的大坑:
坑 1:幻觉穿上代码的外衣特别像正确答案
AI 生成的代码语法完美、变量命名规范、注释详尽——但逻辑可能是错的。传统 bug 是“你写错了你知道的东西”,AI bug 是“你根本不知道这里有个错误”。这个差异很致命。我现在的习惯是,AI 生成的代码我一律当 PR 来 review,不管多简单的函数。
坑 2:调试成本从写代码转移到了读代码
以前是花 1 小时写,花 15 分钟调。现在是花 10 分钟 prompt,花 2 小时理解 AI 生成的逻辑为什么这么写,再花 1 小时调整 prompt 让它改。总时间可能更长。据我了解,很多团队已经在量化这个 trade-off 了,但还没有好的解决方案。
坑 3:技能退化的滑坡效应
真事。上周我关了 Copilot 想手写一个 React 自定义 Hook,卡了将近一分钟才想起 useEffect 的依赖数组语法。我当时脑子里一片空白,就记得有个方括号,但放什么参数完全想不起来。这很恐怖——就像一直用导航的人突然被扔在没有 GPS 的城市里。
所以到底改变了什么?
我觉得最根本的改变不是技术层面的,是权力结构的改变。
在声明式时代,权力还在程序员手里——你知道怎么声明,你掌握那套语法。对话式时代,权力开始向“能清晰描述意图的人”倾斜。这个人可能是产品经理、可能是设计师、甚至可能是 CEO 本人。
这意味着什么?意味着以后最值钱的技能不是写代码,而是:
- 精确描述问题的能力(prompt engineering 只是冰山一角)
- 判断 AI 输出质量的能力(需要比你不用 AI 时更强的技术底子)
- 拆解复杂需求的系统思维(这个永远无法外包给 AI)
我最近面试候选人的时候已经不看算法题了。我就让他带一个真实项目,用任何 AI 工具都行,然后问他:“你让 AI 做了什么?你为什么相信它的输出是对的?你验证了哪些边界条件?”
能回答好的,大概年薪 80 万起。答不出来的,就算手写红黑树再熟练也没用。
未来两年
我现在看到的趋势是:我们正在从对话式走向意图驱动的自主代理。
Devin 这类 AI 程序员已经能自己写代码、自己测试、自己修 bug 了。你给它一个 GitHub issue,它自己读代码库、自己定位问题、自己提交 PR。2024 年 3 月 Devin 刚出来的时候我觉得是 demo 花瓶,结果 12 月再看,已经能处理中等复杂度的真实项目了。这个演进速度比我预期的快至少一年半。
我猜未来大概是这样的:
- 2025-2026:AI 能独立完成 80% 的标准 CRUD 开发
- 2027-2028:AI 开始参与架构决策,人类负责审批
- 2029+:大部分软件不再由人编写,而是由人描述需求,AI 自主设计、实现、运维
别觉得我在贩卖焦虑。马车夫在 1900 年也觉得汽车是玩具。技术革命从不等人准备好。
但这里有个悖论:越高级的抽象,对使用者的判断力要求越高。声明式没淘汰程序员,它淘汰的是不会抽象思考的程序员。对话式也不会淘汰程序员,它淘汰的是只会翻译需求、不会挑战需求的程序员。
你现在要做的不是恐慌。
是立刻开始用这些工具。
然后问自己一个问题:如果 AI 能写出我写的代码,那我的价值到底在哪?
这个问题我每天都在问自己。目前我的答案是:价值在于知道该让 AI 写什么代码,以及判断它写没写对。
你的答案是什么?评论区聊聊,我真的很想知道。
#自然语言编程 #对话式AI #开发者工具 #编程范式演进 #AICoding #技术趋势
读者评论 5