当前时间: 2026-06-06 15:21:03
分类:办公文件
评论(0)
AI 写代码那些事 (上)我是从 YouTube 上知道这个东西的。作为一个常年泡在油管上的重度用户,刷科技区已经是我的日常了。那天刷到一个视频,标题大概是「OpenAI 发布了 ChatGPT」,点进去一看,卧槽,这玩意能跟你对话,还能写代码? 那个年代做开发的人应该都有印象,碰到问题的第一反应是什么?Google,然后翻 Stack Overflow。十几年了,这个习惯刻在每一个开发者的骨子里。搜索引擎和 Stack Overflow,就是程序员的左右手。 所以当我打开 ChatGPT,试着让它写一个 Java 的快速排序,几秒钟之后一段完整的代码就出来了的时候,我的第一反应不是兴奋。 因为你知道这段代码是从哪来的。它是从互联网上无数个快速排序的代码片段里「拼」出来的,语法没问题,逻辑也对,但它不了解你的项目,不了解你的代码规范,不了解你团队的习惯。你把这段代码直接粘到项目里,code review 的时候组长会问你,这变量命名怎么回事,异常处理呢,日志呢? 所以当时包括我在内,绝大多数开发者对 ChatGPT 的定位就是,一个高级搜索引擎。以前你 Google「Java 快速排序实现」,现在你让 ChatGPT 帮你写,区别就是少翻了几页搜索结果。 后来 ChatGPT 出了付费会员,20 美金一个月。当时国内想充值可没那么容易,各种支付渠道都不好使,我便注册了张海外的信用卡,方法总比困难多。就为了能用上那个响应更快的 GPT-4,你说至于吗?但当时就是那个心态,新东西出来了,我得第一时间摸到。 2022,会写语法但不懂上下文 2022 年的 AI 写代码,核心矛盾就一个,它会写语法,但它不懂上下文。 你给它一个孤立的问题,它能给你一个不错的答案。但真实世界的代码不是孤立的,一个函数要跟十个函数配合,一个模块要跟五个模块交互,一个接口要兼容三年前留下的历史包袱。 2023,Copilot 把肌肉记忆外包了 2023 年夏天,GitHub Copilot 开始大规模铺开。我身边做开发的朋友,十个里面有七个在用。 为啥?因为 Copilot 做了一件跟 ChatGPT 完全不同的事。 ChatGPT 是你问它答,你得主动把问题描述清楚,它才给你答案。Copilot 不一样,它直接嵌在你的 IDE 里,你写一行注释,它帮你补全下面的代码。你写一个函数名,它帮你把整个函数体写出来。你甚至什么都不用写,它根据你前面的代码,直接预测你下一行要写什么。 我写一个 Spring Boot 的 Controller,刚敲完 @RestController 这几个字母,它已经把 @RequestMapping、@GetMapping 这些注解全给我补上了,连路径都猜对了。我写一个 MyBatis 的 XML 映射文件,刚写了 SELECT 标签和表名,它就把所有的字段映射、条件判断、分页逻辑全给我生成了。 不是说它生成的代码有多牛,而是那个「它怎么知道我要写这个」的感觉,太特么赤鸡了。 这块需要注意一下,Copilot 跟 ChatGPT 的区别不是技术上的,是交互模式上的。ChatGPT 你得去主动找它,Copilot 它就在你手边,像一个时刻盯着你屏幕的结对编程伙伴。你敲一行,它补一行。你写个注释说「这里需要一个分页查询」,它哗哗哗就给你写出来了。 开发者第一次接受了这样一个事实,AI 比我更熟悉 API 签名。 你知道 Spring 那堆注解怎么配吗?你知道 MyBatis 那个 XML 文件里 if test 怎么写吗?说实话很多时候我也记不住,每次都要去翻文档。但 Copilot 记住了,它把几百万个代码仓库里的写法全学了,你敲个开头它就知道后面该怎么写。 这不是什么了不起的智能,但它确实省了你大量的时间。 那些你知道该怎么做、但懒得查文档的时间。那些你闭着眼睛都能写、但写起来就是烦的时间。那些纯粹的、重复的、肌肉记忆式的编码工作,就这么被外包出去了。 但有一点没变,架构还是你在设计,意图还是你在表达,业务逻辑还是你在理解。AI 只是帮你把脑子里已经想好的东西,更快地变成屏幕上的代码。 对了,还有个事我印象特别深。Copilot 刚出来那会儿,GitHub 搞过一波 education 活动,可以白嫖一年的 Copilot 试用权益。当时我看到这个消息,二话没说就去申请了。作为第一波吃螃蟹的人,拿到手之后用了一周,我跟你说,那个编程体验真的是巨大式的飞跃。 以前你写代码,碰到不熟的 API 得停下来去翻文档,翻完回来继续写,思路断了。有了 Copilot 之后,你根本不用停,它就在那等着你,你敲个开头它就续上了。那种「代码在你的手指下自己流出来」的感觉,以前从来没有过。 2023 年的时候,我在公司内部做了一期专题培训,题目叫「AI 辅助编程,未来编程的新浪潮」。当时 Copilot 刚火起来没多久,很多同事听说过但没真正用过,对这玩意到底能干嘛心里没底。我就想着,干脆我来给大家演示一下,这东西到底是怎么回事。 培训那天来了不少人,有做开发的,有做测试的,还有几个产品经理凑热闹。我现场用 Copilot 写了一段代码,从一个空的 Spring Boot 项目开始,边敲边给大家讲,你看它怎么补全注解、怎么生成 SQL、怎么帮我写单元测试。 台下的反应我记得很清楚,前半段是「哦,还行」,后半段是「卧槽,这也行???」。 那个「???」的表情,就是很多人第一次认真看待 AI 编程工具的瞬间。 说实话那次培训对我自己的触动也挺大的。不是说我演示了什么了不起的东西,而是在准备培训的过程中,我第一次系统性地去梳理 AI 到底能帮开发者做什么、不能做什么。以前我只是自己用着爽,但没认真想过这件事对整个开发流程到底有多大影响。 那次培训之后,有好几个同事开始用 Copilot 了。后来他们跟我说,早该用了。 2024,从补全到对话 Cursor 出来了。GitHub Copilot Chat 也出来了。交互方式从「补全」变成了「对话」。 这个变化听起来好像不大,不就是加了个聊天窗口嘛。但实际上它改变了开发者跟 AI 协作的底层逻辑。 以前在 Copilot 的模式下,你还是在写代码,AI 在猜你下一步要写什么。说到底还是你主导,AI 辅助。 你打开 Cursor,直接用自然语言跟它说,我要一个用户注册的接口,支持手机号和邮箱,密码用 bcrypt 加密,需要做参数校验,异常统一处理。它听完之后,直接给你生成一个完整的代码框架,Controller、Service、Mapper、异常处理,全套的。 说实话我也不确定这算不算好事,但从效率的角度讲,确实是质的飞跃。以前你写一个接口可能要半小时,现在你花五分钟描述需求,AI 花两分钟生成代码,你花十分钟 review 和修改,十五分钟搞定。 以前碰到不会的东西,你去 Stack Overflow 搜,搜到了复制粘贴过来改改。现在你直接跟 AI 说我要干嘛干嘛,它给你一个量身定制的方案,连复制粘贴都省了。 说到这个,有个数据挺有意思的。Stack Overflow 的访问量从 2024 年开始断崖式下跌。 这个变化太离谱了。Stack Overflow 可是程序员的圣经啊,十几年来,全球开发者碰到问题的第一反应就是去 Stack Overflow 搜。这个习惯根深蒂固到什么程度呢,你随便问一个程序员,他说他没用过 Stack Overflow,你大概率会觉得他在撒谎。 但现在呢?我身边很多同事已经几个月没打开过 Stack Overflow 了。不是 Stack Overflow 变差了,是获取知识的方式变了。以前是「搜索→筛选→复制→修改」,现在是「描述→获取→应用」。流程被压缩了,中间商被干掉了。 这块还有一个有意思的事,prompt engineering 突然变成了一个正经的技能。 以前写代码,你需要掌握编程语言的语法。现在写代码,你需要掌握怎么用自然语言精准地表达你的意图。听起来门槛降低了对吧?其实不是。把一个模糊的需求翻译成一段精确的自然语言描述,这个能力一点都不简单。 你跟 AI 说「帮我优化一下这个接口」,它给你一个平庸的结果。你跟它说「这个接口的瓶颈在数据库查询,当前 QPS 是 500,目标 2000,MySQL 8.0,数据量 500 万行,从索引和查询重构两个方向给方案」,结果完全不一样。 输入的质量决定输出的质量, 这个道理我们做开发的人秒懂。但真正把它用在跟 AI 的协作上,需要一个思维转换。2025,从工具到同事 Claude Code 出来了。Devin 出来了。OpenCode 出来了。这些产品做了一件以前的 AI 编程工具做不到的事,它们让 AI 获得了文件系统访问权和终端执行权。 以前不管是 ChatGPT 还是 Copilot 还是 Cursor,AI 的活动范围都在那个聊天窗口或者编辑器里。你给它一段代码,它给你一段代码。交互是封闭的。 Claude Code 可以自己打开终端,自己浏览文件系统,自己读代码,自己改代码,自己跑测试,自己提交 PR。你给它一个任务,它自己去干了,中间碰到问题还会自己去翻代码、查文档、做调试。 一方面觉得太牛逼了,另一方面又觉得不太对。以前 AI 是工具,你用它。现在 AI 像同事,你给它派活。 这个心理上的转变,比技术上的转变更难适应。 我跟你说一个我自己正在搞的事情。我最近在用 Claude Code 做代码重构,就是那种你知道该做但一直懒得做的技术债清理。我跟它说,帮我把这个模块的代码整理一下,把重复的逻辑抽成公共方法,把过长的函数拆开,顺便把注释补上。 回来一看,它已经改了十几个文件,跑了测试,全过了,commit message 都写好了,就等我 review。 当然,现在还远没到可以完全信任它的程度。它经常会改错东西,有时候改了不该改的地方,有时候跑了测试但没注意到某个边界 case 覆盖不了。你还是得认真 review,还是得有自己的判断。 上下文窗口,新时代的内存条 我有时候觉得,Agent 的上下文窗口就是新时代的内存条。 你想想看,计算机刚出来的时候内存只有几 KB,能跑的程序就那么点大。后来内存从 KB 到 MB 到 GB,能跑的程序也越来越复杂,从计算器到文字处理到浏览器到操作系统。 Agent 也是一样。上下文窗口越大,它能同时「看到」的工程状态就越多,能理解的项目就越复杂。最早 GPT-3.5 只有 4k token,你给它一个稍微大点的文件它就装不下。现在 Claude 的上下文窗口到了 200k token,一个中型项目的代码基本能全塞进去。 你想想看,对于很多项目来说,AI 已经可以像一个「真的了解整个项目的人」一样来帮你干活了。当然这个「了解」的深度还远不如一个在这个项目上干了三年的老员工,但在广度上,它可能已经超过了大多数新人。 我寻思了一下,这个变化的影响可能比前两次加起来都大。因为前两次改变的是「写代码」的方式,这次改变的是「谁在写代码」。 历史的韵脚 从 2022 年到 2025 年,五年不到,三次跃迁。 ChatGPT 让 AI 能写代码。Copilot 让 AI 能预测代码。Cursor 让 AI 能对话式生成代码。Claude Code 让 AI 能自己去改代码。 80 年代,程序员用汇编语言写代码,每一行都在跟硬件打交道。后来 C 语言出来了,再后来 Java、Python 这些高级语言出来了。每一次语言的升级,都是让机器多干了一点,让程序员少操心一点底层的破事。汇编程序员没失业,他们变成了系统程序员,关注更上层的东西。 2000 年代,开发者手写 SQL 跟数据库交互,每个数据库的方言都不一样,换个数据库就得重写一遍。后来 Hibernate、MyBatis 这些 ORM 框架出来了,机器帮你处理数据库方言,你只需要关注业务逻辑。DBA 没失业,他们变成了数据架构师,关注更上层的东西。 每次有人说「这次 XXX 要失业了」,历史都会打他的脸。 AI 编程工具不是来取代程序员的,它是来重新定义程序员的。 就像高级语言没有消灭程序员,而是让程序员从「跟硬件打交道」变成了「跟业务逻辑打交道」。AI 编程工具也不会消灭程序员,而是让程序员从「跟代码打交道」变成「跟意图和系统打交道」。以前你需要花大量时间在写代码这件事上。以后你需要花更多时间在想清楚「到底要写什么」这件事上。 举个最直接的例子,以前你招一个后端开发,你看的是他 Java 写得熟不熟、Spring 用得溜不溜、SQL 写得好不好。以后呢?这些能力 AI 都能帮你兜底。你看的应该是他能不能把一个模糊的业务需求翻译成清晰的技术方案,能不能在 AI 给出的十个方案里选出最优的那个,能不能在 AI 犯错的时候及时发现并纠正。 因为前一种能力是可以靠背文档、刷题来速成的。后一种能力需要真正的工程经验和判断力,没有捷径。 我现在还是那个答案。不会。但 AI 会让你现在会的那些东西变得不值钱。你花三年学会的 Spring 全家桶配置、MyBatis XML 写法、各种框架的整合技巧,这些「手艺活」,AI 已经能做得比你快比你好了。但你花三年培养的系统思维、业务理解、问题拆解能力,AI 暂时还替代不了。 所以你不是要跟 AI 竞争写代码的速度,你是要跟 AI 竞争思考的深度。 历史的韵脚总是相似的。每一次「让机器多干一点」,都会淘汰一批只会做机器也能做的事情的人,同时给那些愿意往上走的人打开更大的空间。 上集完。中集我们聊聊 2026 年这个时间节点上,开发者的真实工作流到底发生了哪些变化。 以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~ 谢谢你看我的文章,我们,下次再见。
上一篇本周前三应该是稳了,近期的app更新后,完成每日特别任务后,不是默认奖励时间,而是随机奖励金币或时间,导致三倍经验差点衔接不上,差
下一篇2026年AI副业实战:如何用AI工具把内容产出效率提升5倍
基本
文件
流程
错误
SQL
调试
请求信息 : 2026-06-17 15:20:46 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/598084.html 运行时间 : 0.125948s [ 吞吐率:7.94req/s ] 内存消耗:4,687.58kb 文件加载:145 缓存信息 : 0 reads,0 writes 会话信息 : SESSION_ID=8da32b03c81d15a051914e4889103f99
CONNECT:[ UseTime:0.000711s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4 SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000882s ] SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.003707s ] SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000279s ] SHOW FULL COLUMNS FROM `set` [ RunTime:0.000563s ] SELECT * FROM `set` [ RunTime:0.000225s ] SHOW FULL COLUMNS FROM `article` [ RunTime:0.000669s ] SELECT * FROM `article` WHERE `id` = 598084 LIMIT 1 [ RunTime:0.000812s ] UPDATE `article` SET `lasttime` = 1781680846 WHERE `id` = 598084 [ RunTime:0.019687s ] SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000313s ] SELECT * FROM `article` WHERE `id` < 598084 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000581s ] SELECT * FROM `article` WHERE `id` > 598084 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000507s ] SELECT * FROM `article` WHERE `id` < 598084 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000762s ] SELECT * FROM `article` WHERE `id` < 598084 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000585s ] SELECT * FROM `article` WHERE `id` < 598084 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001481s ]
0.127623s