原创 南乔River 2024-11-08 00:01 北京
编程最重要的不在于敲代码,而是让大脑构建起对整个系统的理解。
ShowMeAI
专业◎洞察◎清晰◎实用
用知识加速每一次技术进步!
推荐语
我好像
写成了很搞笑的风格 (并非本意 -O-
公众号菜单栏底部有星球入口
添加南乔 (AhaNanQiao) 好友进社群!
¶ 目录
AI编程是有点…被吹上天
我是真搞不定代码审查
AI编程的水平 ≤ 实习生
用AI编程整体其实「不划算」
当然有些AI工具还是很香的
你们是不是在背着我悄悄进化
作为一名开发者,我承认用AI处理「plumbing (底层代码) 」确实挺香。
可是,一旦它开始尝试把各个模块连接起来,就瞬间化身新手实习生模样,横冲直撞,乱七八糟…
于是,我不得不耐着性子反复检查AI生成的每一行代码,生怕漏掉什么致命 bug,惹出什么大麻烦。
Hacker News → https://news.ycombinator.com/item?id=41988665
AI编程是有点…被吹上天
最近开发圈对AI的狂热,有点让人摸不着头脑。
AI确实是个好工具。
但有些人的反应,是不是太夸张了?!
就我的亲身体验来说,AI远没有自媒体吹的那么神通广大。
这篇文章,我尝试剖析一下:把写代码的「生杀大权」交给AI,到底是不是在玩火。
我是真搞不定代码审查
我觉得,问题的关键在于耐心和工作方式。
我完全能像对待同事一样,指出AI工具的错误并与它协同工作。
反正它生成代码的速度甩我们人类好几条街,而我审查代码的速度又特别快,所以整体效率直接起飞。
Hacker News → https://news.ycombinator.com/item?id=41989760
上面👆是我逛 Hacker News 时看到的一条评论。
当时我就恍然大悟!
终于知道自己用不惯AI写代码的原因了:我审核代码的速度太慢。
也就是说,当一段陌生代码摆在眼前让我审核时,我会 totally 手足无措。
(作为一名有着 (比较) 资深的程序员,承认这一点,还有点羞耻。
1.1 数学考试的「低级」失误
最早发现「自己不擅长验证」这个弱点,还得追溯到上学时期。
从小到大,我数学成绩一直还行。
大学甚至修了所有能上的数学课,而且学得还挺轻松的~
但是!我逢考必有失误,而且都是低级失误,比如抄错数字这种…
于是我痛下决心改掉这个毛病,强迫自己考试时反复检查。
结果呢?
完全没用 (。ŏ_ŏ)
最气的是,明明做题时状态超级好:整个人都在心流状态,大脑飞快运转,题目轻松拿下。
可一旦做完检查,大脑就像被人按了暂停键 ⏸️
拼命想集中注意力,却怎么也进入不了状态…
彷佛做完题的瞬间,大脑就自动打卡下班,留下我独自在考场凌乱 💨
如果有上帝视角,那时的我一定像是个面无表情的呆子。
(当然也有可能是我数学水平的确不太行 😂
1.2 改完就不认识的代码
写代码或者做数学题的时候,我们会逐步建立一个心智模型 (mental model) 🧠
用它来理解当前的系统或问题:
变量名代表什么含义,函数调用会产生什么效果,不同信息之间如何关联等等。
这个心智模型至关重要。
一旦丢失,就要重建,而且难度 max。
做完数学题回头检查,就是「重建心智模型」的历程 (的确很难 🤔
代码审查也是同理。
审查熟悉代码的小改动,效率很高,因为完整的心智模型还在。
但是!审查大改动或陌生的代码库,就是噩梦了。因为此时心智模型已经支离破碎…
1.3 充满妥协的代码审查
也许真的是我太菜了 (⊙_⊙)?
我发现,审查别人的代码 (或自己很久之前的代码),比写代码、抓 bug 难太多了。
就是那种熟悉的大脑宕机的感觉,跟检查数学题时一模一样。
真的很好奇其他人是怎么高效审查代码的!!
不运行一下、改一改、测试一下,总感觉没搞这代码在干啥...
但是拜托,代码越来越多的情况下,谁能有这个时间啊 😫
最后也只能选择相信队友了。
不然还能怎么办?¯_(ツ)_/¯
AI编程的水平 ≤ 实习生
最近AI编程被吹得火热。
确实,跟几年前相比,可以说是进步神速了。
但要说像信任同事一样信任AI?
NONONO
实践经验告诉我,AI水平顶多就是个实习生,而且常常还不如实习生呢。
至少人家让我审查代码前,都会自己先测试和运行一遍 😐
用AI编程,其实跟从 Stack Overflow 复制代码很像:
方便实用,但坑也不少。
表面上看起来完美规范得代码,实际上可能「暗藏玄机」。
AI一些错误甚至比 Stack Overflow 上的还要隐蔽。
比如,我经常遇到的,虚构根本不存在的库,或者随手添加莫名其妙的参数…
几行代码还好说,随手测试就能发现问题。
要是用AI生成大段代码,那就麻烦了 (╯°□°)╯
用AI编程整体其实「不划算」
说到底,我纠结的点是:
本来审查代码的效率就就一般,
AI反而让我在审查代码上花更多时间!
写代码倒成了副业。
这不是把重要性给搞反了嘛?( ̄へ ̄)
3.1 编程到底是在编什么
编程的过程,就是大脑逐步建立系统心智模型的过程。
就算把生成代码交给AI,也绕不开「大脑建立心智模型」这个苦活累活 💭
更直白一点说,编程最重要的不在于敲代码,
而在于让大脑构建起对整个系统的理解。
3.2 亏本的投资不长久
我们都懂:与其手把手教新人,不如自己撸起袖子干来得快。
用AI写代码就是这种感受 😮💨
带新人好歹是有收益的「投资」,他们会进步、会成长。
但是AI呢?
跟它互动一万次,它还是原来那个样,一点没长进 (;一_一)
有人说:不是有上下文窗口 (Context Window) 吗?
拜托!它连几个月的上下文都记不住,更别说几年的了 🤦♂️
也许未来会有能自我进化的专属AI助手?
但谁知道要等到猴年马月呢 🙈
现在嘛,这就是个美好的幻想罢了~
当然有些AI工具还是很香的
话说回来,这轮AI浪潮确实带来了一些神器!
特别是在编程这块,我已经离不开 Kagi 的 Quick Answer 功能 和 devv.ai 了,每天都靠它们解决各种技术问题,比如:
Python 中如何进行日期格式化?
在 Elixir 中要如何监听 Postgres 数据表的变更?
在 Neovim 中如何用 Lua 创建新的 Buffer (缓冲区)?
Linux 系统下如何按视频时长对 mp4 文件进行排序?
想要设置每隔一天执行一次脚本,应该用什么 Cron 语法?
Kagi 能基于AI进行搜索并列出所有信息源。编程类内容质量很高 (我认为比 Google 好)。
点击结果列表页的「Quick Answer」按钮,AI能自动生成一份完整回答。
Kagi 官方网站 → https://kagi.com
devv.ai 官方网站 → https://devv.ai
你们是不是在背着我悄悄进化
AI 开发工具有些确实挺好用。
但我真的没感受到别人说的那种「效率爆表」啊 (¬_¬")
不禁开始反思 🤔
难道是因为大家没在一个频道上?
是处理的问题不同,应用的场景不同,或者是对工具的期望不同?
又或者...(叹气)... 可能真是我太菜了?(╥﹏╥)
救救孩子吧~ 😭
¶ RefrenceWhy I don't rely on AI for programming (too much) → https://www.jonashietala.se/blog/2024/10/31/why_i_dont_rely_on_ai_for_programming_too_much/
THE END
转载原创文章请添加微信 AhaNanQiao
↓ 分享·收藏·在看·点赞