找回密码
 立即注册
查看: 817|回复: 5

为什么我感觉 AI 写代码纯属添乱?

[复制链接]

1

主题

0

回帖

9

积分

新手上路

积分
9
发表于 2023-8-20 20:37:33 | 显示全部楼层 |阅读模式
此刻 AI 技术很火,写代码也有了新的 AI 东西,可是为什么我感觉让 AI 写代码纯属添乱?
回复

使用道具 举报

0

主题

2

回帖

11

积分

新手上路

积分
11
发表于 2023-8-20 20:38:03 | 显示全部楼层
现在付费使用copilot也几个月了,感觉已经摸清楚了copilot的套路了。大概能知道它会补全什么样的代码。
因为它的提示总会慢一点,我每次觉得它应该能写对的时候,都会心里默念一句:“该你表现了,宝贝儿。”然后,等它补全代码。一些套路性的代码它完全可以胜任,比如想专门针对3x3矩阵定义一些操作,不想用第三方库了。这时候你把函数名字写详细一点,它就可以帮你写好。
那些我觉得它肯定不行的代码,它写出来我也不看,直接自己写。
AI写代码最大的问题还是事实检测的问题,它不考虑当前的代码对不对,尤其是变量名,函数名补全,它可以非常肆意妄为。而这个是传统IDE补全代码的强项,因为它们只会检索你声明过的东西。
不过一个月十几刀嘛,还要啥自行车。
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2023-8-20 20:38:37 | 显示全部楼层
首先我是Copilot重度用户,有Copilot的白嫖使用资格,在仅支持VSCode时使用的比较少,在Visual Studio 2022有copilot插件后,基本是每次代码必用,我日常基本使用C语言,总结一下copilot写C代码的一些特点:
第一、如果说Copilot的代码能用,当且仅当Copilot写的代码刚好是你想写,想这么写,你写出来和Copilot的生成的代码基本一样的情况,你必须审计并清楚的知道生成代码每一行的所有细节及意义,这个代码才能够使用,简单来说,与其说Copilot帮你写代码,不如说Copilot是一个很聪明的秘书,帮你打完了你接下来想打的字,如果靠给注释直接生成稍微长一点点的功能代码,翻车几率极高。
第二、Copilot非常擅长生成类比代码,比如你写了一个NodeRotateLeft(树节点左旋),那么之后你写一个一样的函数NodeRotateRight(树节点右旋),那么Copilot帮你补全的概率极高,并且工作的很好,但需要注意的是,每一个这样的函数你必须对功能参数有明确的定义再生成,否则它很可能会开始胡说八道生成有逻辑漏洞的代码。
第三、如果你自己写的代码有逻辑漏洞或bug,那么Copilot生成出来的代码极大可能也带有同样的逻辑漏洞与bug,所以说如果水平过关的人使用Copilot那是能够提高效率的屠龙刀,水平不过关的人使用那就是对牛弹琴纯属添乱,它是效率放大器,用的是平方而不是加法,水平不到1,自然是越用越乱。
第四、那种非常常见的代码和逻辑功能代码,copilot的补全成功率很高,但一些高度定制化的功能代码,一般需要前面已经写过类似代码提供给copilot“联想”,否者生成的基本不太靠谱。
第五、用的久了你几乎猜得到哪些代码Copilot是能够补全的,哪些代码是可以比较放心让Copilot帮你补全的,这个时候Ctrl+alt+\这个快捷键就很好用了。
总结:是个不错的辅助工具,不是银弹,配合之前的intellicode的提示算是锦上添花,如果你长期将它用在实际项目工作会比较有体会,至于那些写了两个demo代码就得出替代码农然后开始卖课的营销号可以早点洗洗睡了。
回复

使用道具 举报

0

主题

1

回帖

0

积分

新手上路

积分
0
发表于 2023-8-20 20:39:09 | 显示全部楼层
因为维护开源项目被送了 Copilot,也用过一段时间。对我而言这玩意作用最大的时候大概就是相当于一个相当智能化的 codegen 工具。
有些时候我需要重复写一些很相似但不完全一样的代码,大概这个意思:


这些工作理论上来说写一个模板来生成代码就好,但实际重复量也不是特别大,做代码生成花的功夫比复制粘贴后再手工改改花的功夫还多,不上不下的就很难受。
对于这样情况,Copilot 可以说完美地满足了我的想象,把重复度高的地方变成了一路按 TAB。
虽然 Copilot 有些时候还是挺碍事,我平常一般还是会关掉它的补全提示,但光是它解决了我大部分的机械性工作这一点,它就算不上纯属添乱了。
再见识过 Copilot 的智能水平后,我对 JetBrians 正在测试 AI 自动生成文档、变量名等功能也很期待,相信它能够替我解决更多需要纠结的难题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

0

主题

3

回帖

4

积分

新手上路

积分
4
发表于 2023-8-20 20:39:43 | 显示全部楼层
我用python写,然后让gpt对着翻译写出rust,除了python特有的库和某些科学计算无法转,原生python基本可以过去,结果肯定不理想,但是对照可控aigc
我理解gpt也应该提出可控gpt,以及和llvm结合的gpt
未来llm应该强调这类程序语言的翻译能力,让大家学了python就能100%写出高效率c艹,java,rust之类的
而不是停留在产品经理无脑prompt上
回复

使用道具 举报

0

主题

2

回帖

0

积分

新手上路

积分
0
发表于 2023-8-20 20:40:18 | 显示全部楼层
是,写代码纯属添乱。或者说,让 AI 做那些有原创性的事情纯属添乱。最核心的事情目前 AI 一样都做不好。
但如果是用来帮助程序员解决一些简单的常见的问题,还是可以的。——如果类似的问题有很多人遇到过的话。那么你用 AI 能找到答案的概率比较高。
如果只是用来让 AI 替代搜索引擎,解决一些「原本依赖搜索引擎能完成」的事,就可以一用。
有些事你原本就不太可能依赖搜索引擎完成,那么有了 AI 之后,AI 只是一个跟自然语言整合得更好的搜索引擎而已,以前搜索引擎做不到的事,现在大概率也做不到。
<hr/>以我现在的经验来说,直接让AI完成项目代码,那纯属扯淡。但如果我清楚,目前用到的某个功能,其中可能会用到某个非常通用的算法,我把这一小段通用的,可能别人也写过的东西,独立出来精确描述给AI,只要我抽象得足够精细,它就能写个大概(正确率70%吧)。
但这相当于什么呢?只是相当于省掉了我去查找开源代码实现的精力。因为能通用的玩意一定是别人写过类似代码的,别人写过了,AI才知道怎么做。在没 AI 的时代,我也可以通过搜索引擎实现。
如果你想要的功能,全世界没人写过类似的代码并开源出来,那么AI也只能抓瞎。——但凡你确信这段代码一定有别人写过,并且开源出来过,那么你让AI去写,问题就不大。
所以简要结论是:AI只是替代了你以前能通过搜索引擎的查找来实现的东西。而并不能替代你自己写代码。如果你以前写的所有东西都是从搜索引擎查找来的玩意,那确实你做的事情 AI 都能做。但如果你经常有原创的代码需要写,开源找不到替代代码,那么你做的这事情 AI 做不到。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|T9AI - 深度人工智能平台 ( 沪ICP备2023010006号 )

GMT+8, 2024-11-21 18:43 , Processed in 0.062604 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表