这是我看到 [转载]- 我为什么停止使用 AI 代码编辑器 - 搞七捻三 - LINUX DO 后的一点思考,欢迎佬友们一起讨论!
AI工具辅助编程业界的常见方案大致有:
- tab complete & next edit:在编辑器中实时显示AI的补全建议
- edit:ai根据你的指令去修改你的代码,或者是添加新的代码
- agent:ai通过与你的多轮沟通来进行自主操作,编写代码
从我个人角度来看,从上到下的自动化程度在不断增大。
关于“能力退化”
什么是能力退化?我的定义是:本来能快速做到的东西现在做不到了
重点是 快速 和 本来
那什么时候会出现呢?
我认为,当你过度使用edit与agent的时候,就很容易出现能力退化。
例如:你本来知道怎么定义Vue3的组件props,但你现在无论如何都想不起来怎么做,只能让AI帮你写这个Props。也就是说,你在此时丧失了原有的能力
“能力退化”就一定是不好的吗?
尽管退化这个词看起来很负面,但我并不觉得“能力退化”就一定是一键坏事。
在我的定义下,能力退化是暂时的,虽然你暂时没想起来,但是AI帮你补全了也就是相当于帮你复习了一遍这个知识,说不定下次就想起来了呢?
如果这个知识你真的很常用,那多用几次你自然就记得了,对吧
什么时候应该避免使用edit/agent
在我的观念中,新的框架/语言,如果你确定你以后肯定还会用到,不是只是为了完成代码而完成,那么一定不能用agent,至于edit也要谨慎使用,我个人的最佳实践是:利用带有上下文的AI Chat来学习新的框架或语言,从而避免写出来的代码能跑但看不懂。
我认为,当你利用AI写出了能跑,但看不懂的代码时,你只是完成了写代码的任务,而脑子里面是没进任何东西的。
当然,上面也说了,如果你的目的仅仅只是写一个能跑的代码,那自然agent/edit的效率是极高的。
那你是怎么使用AI工具的?
对我个人来说,对于我以后还需要维护的代码,我一定不会使用agent模式,因为我认为这会让我降低对代码的熟悉度,甚至会出现“啊?我什么时候写的这个代码?”的这种尴尬情况。如果我没有印象的代码能正常工作自然最好,但是如果出bug可就完辣(
同样,我也会对我以后还需要维护的代码尽量少的使用edit模式,即使使用,也要逐行review,确保我明白AI修改了什么。
对于tab complete模式和next edit模式,我完全不排斥,因为修改直接展示,你完全可以自行决定。
另:学习新语言/框架的时候该不该启用tab complete/next edit?
这点我还是有点纠结的,启用可以发现一些自己不知道的东西,但可能会出现AI补全并非最佳实践的情况,欢迎佬友们一起讨论