大家有没有感觉有了 AI 编程能力没变菜,反而变强了

184 天前
 pluvet

一开始也有点担心 AI 会让程序员变笨,代码能力下降,但用了一段时间后,尤其是最近几个月,发现完全不是那么回事。感觉自己的代码能力,反而是不降反增了。

其实挺反直觉的。按理有人帮你写代码,动脑子的地方就少了,能力自然就退化了。但实际是想让 AI 写出 能用 的代码得先把需求描述得清清楚楚。你得精确地告诉它上下文是什么,输入输出是什么,不能有任何歧义,尤其是 3.5 的时代。就逼着你把问题想得更透彻,这种表达能力得到了很好锻炼。以前我容易有个思路就闷头就写,不知不觉现在习惯是先细化列点再写。

而且 AI 生成的代码,你敢直接用吗?反正我不敢。你总得去读去理解它的思路去检查有没有坑。有时候 AI 会用一些你没用过的库,或者一些比较刁钻的写法。这个过程中你就被迫去阅读大量的、不同风格的代码,尤其是写一些系统级的程序。有时候还不得不去看上游代码,修 AI 造的 bug ,看多了感觉阅读代码能力飞升。

另外 AI 的上下文能力是真的捉急。稍微复杂一点的项目是没法把代码全放进去的,更遑论有很多小众外部依赖的情况。比如我最近在搞的 mo 编译器 (moinfra/mo),这东西的编译流程复杂,而且没有用 LLVM ,想让 AI 帮我写个复杂点的 Pass 几乎不可能,因为它完全不知道上下文,只会当成基于 LLVM 写。没办法,只能自己硬着头皮去梳理,把接口、依赖关系梳理清楚,整一个专门的知识库给 AI ,才能让 AI 写点局部的辅助函数。换句话说我需要反复梳理相关的上下文,提取给 AI ,代码阅量++。不过有了 gemnini2.5 感觉这个又变了。

就是 AI 写的代码里有多少 bug 真的无花八门,写点前后端还行,如果是比较冷门的(比如写 ZK ) AI 就会乱编,这种情况它自己基本修复不了这些 bug ,在一个错误的逻辑里反复打转。最后得靠人去 debug ,你去调试 AI 写的代码,往往比调试自己写的代码更费劲,因为它的逻辑可能跟你习惯的完全不一样。这个过程,对你理解代码、定位问题的能力,绝对是高强度的训练。

最有意思是,有些以前没完全搞懂的原理,现在反而因为调试 AI 写的烂代码而搞懂了。就说我那个 mo 编译器里的 LSRA 分配。原理大致知道,但实现细节,特别是 spill code 怎么插,还有多个 interval 的处理一直有点模糊。我让 AI 帮我写了个基础框架,结果 bug 一堆,逻辑硬伤也不少,但大方向的原理是对的。我就对着这个半成品,一点点调,一点点改。在这个过程中,反复琢磨寄存器的分配策略、活跃区间、冲突解决、溢出代码的插入时机和位置……最后,硬是把所有分配细节给彻底搞明白了。这个过程,调试 AI 写的 bug ,反而不断强化了我对底层原理的理解。

现在感觉,写代码的心态也变了。以前很多时间都浪费在查 API 、写各种样板代码、纠结一些语法细节上。这些琐碎的事情,现在大部分可以丢给 AI 。感觉编程这件事情变得更有趣了一点。我能把更多精力放在更宏观的层面,比如算法设计、整体架构的权衡。看代码的速度也快了很多,以前可能要一行一行地看,现在一大段代码扫一眼,基本就能瞟出来它的实现思路和核心逻辑。相比起来,面试还要一个白框手搓代码,筛选的到底是什么人?背诵仙人?

我另一个个人项目,一个大模型客户端 ,几乎全是 AI 开发的,UI 审美比我好多了,大家可以看看自己的组能不能一天内设计出这个水平。这种模式下我基本上不写代码,纯读然后修细节,更专注于功能和架构。对我来说,结论就是这样:AI 没让我变菜,反而让我变强了。

说了这么多其实关键就是,以前是读代码占 6 分,写占 4 分,现在感觉是读占 9 分,写占 1 分。而读代码的重要性一直以来被很多人低估了,读代码真的特别提升理解能力。以前一半时间写初版,一半时间修 bug ,现在基本上除了 C/V 就是修 bug ,也是相当锻炼人。以前一个团队干的活,现在一个人就能搞。遇到别人的大项目也敢去看代码提 PR 了。感觉程序员正在朝更牛逼的工种进化,可能以后反而不会失业?但是分化可能会越来越明显。

10609 次点击
所在节点    程序员
89 条回复
yuweiloopy
183 天前
最近用了 gemini 确实感觉不错
tsja
183 天前
同感,而且对业务逻辑能够更掌握
encro
183 天前
我没有感觉,因为我以前就是先伪代码,思维导图,画图先构思,再填代码的。所以到 AI 我是平滑过渡。
zzhirong
183 天前
我的话, 会有个启动困难症, AI 刚好解决了这个问题, 先让它写出一点东西来(无论是否可以运行)再修改, 远比自己从零开始来得简单点。
jonsmith
183 天前
每天的编程像是在写作文,指挥 AI 编程很爽
Felldeadbird
183 天前
肯定是变强的。每天在 AI 加持下,以前真的是闭门造车,现在结合 AI 是站在巨人之上,有一个全球代码库的指导建议。
aikilan
183 天前
我很喜欢 github 对于他们的 AI 命名,copilot 中的 pilot 有领航员的意思,这个 pilot 我感觉更像是对 AI 时代下程序员的称呼。
很早以前的空客和波音的飞机就已经能近乎完美实现“自动驾驶”,从起飞到降落的过程,真正需要机长或者说飞行员参与的部分占比极低,而飞行员这个职业并没有因为“自动驾驶”而消失,我们知道程序是依赖于外部环境的反馈,是会犯错误的,比如空速表依赖于空速管,在我有限的记忆中,存在因为空速管结冰而导致飞机失事的案例。其中最著名的应该是法航的一架空客飞机因为空速管结冰而失事,这个案例中,由于副机师的经验不足,判断失误最终导致了灾难,而当时经验丰富的机长正在休息中,错失了最佳弥补的机会。
而 AI 就像是飞机的“自动驾驶“,程序员就是最终纠错的机长,我们必须依赖于自己丰富的经验与判断力来纠正或调整 AI 的结果,让”飞机“最终安全且平稳的落地。
iMiata
183 天前
同感+1 ,所以一直对论坛里那些说 AI 会取代程序员的论调都不敢苟同,也丝毫没有这种焦虑
macwenbo
183 天前
我感觉 ai 变菜了,也可能是和 ai 一起进步,眼界更高了?
3kkkk
183 天前
前提是你已经掌握了这个语言有一定代码量积累。其实有了 AI 以后做的类似监工的角色。他给出你答案你得能判断对错。
EthanZC
183 天前
我是让 AI 帮我重构一些我的重复代码,我感觉 AI 写出来的代码,比我的代码更好,也让我涨了姿势
hailongchang
183 天前
感觉 AI 就像是个外包程序员,能力是有的,但你得多沟通,全流程细节把控, 整个流程中你要知道他在做什么,做得怎么样,做得好不好,然后不停得向他澄清,细化,纠正。 这中间可能你没有意识到的问题也会暴露出来,反过来推进你对问题的理解。

不过 AI 有一点挺让人头疼, 就是他动不动就把代码推倒重来了,其实有时候是想让他在原来的基础上改的
chiaoyuja
183 天前
其实也可能是因为,你需要给 ai 描述,也锻炼了你的总结表述能力,ai 生成代码需要 review 一遍,也能学习思想/写法吸收为自己的进而提高了
zxjxzj9
183 天前
说来说去人不是为了写代码而写代码的,写代码肯定是要解决什么问题的,ai 直接帮你做好了最难的开头部分,对解决问题的帮助真的是非常大。有 ai 的整理学习新技术也快了,改动简单正反馈来得快,容易进入正循环。
encro
183 天前
@aikilan

copilot === copy + lot


意思是程序员 C+V 。。。
jrtzxh020
183 天前
是的,现在写代码基本没啥压力,包括其他语言,也能在 AI 加持下实现需求。所以说,真香~
aikilan
183 天前
@encro 哈哈哈哈,这个意思啊
Hilyson
183 天前
@yuweiloopy Gemini 需要注册个国外 Google 账号吗?
pluvet
183 天前
@aikilan 很有道理,以前相当于自己又要做图纸又要亲自打灰,现在可以统领各种能力的 AI 一起 build ,浪费在一些 trivial 代码的时间大大降低了
iflint
183 天前
手动挡和自动挡

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1127404

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX