哪个AI写的代码更好?github Copilot、GPT4还是Amazon Code Whisperer?

现在大语言模型越来越流行,各种各样的言论也是尘嚣甚上,作为一个肯定找不到工作的超过35岁的前程序员,在开出租车之余,我测试了几种大语言模型写代码的能力,看看能不能真的代替程序员。

首先我要声明一下,我一直在使用github的copilot,用了好几年了,可能对它最熟悉,难免对他有点偏心,因为熟悉么,在心中会加点分。再说了,我也是只一家之言,我平时工作的编程语言主要是C,Java和Python,像什么Javascript什么的,我不写,也没法知道这几家模型的好坏。测试环境就是这样,我写代码的时候,有意让他们生成代码,然后看看怎么样?

据说现在我使用的copilot已经有了GPT4的加持,不过说实话,我没感觉出来。现在有内测的人员已经使用了copilot x,但是我还没排到,只能使用copilot。

我测试的几个大语言模型有GPT4,github的copilot,Google的Bard,还有Amazon的code Whisperer,由于技术日新月异,我测试的时间就是2023年4月5日到2023年5月12日。除了copilot,这个我已经使用了好几年了,所以比较会调戏它。期间说是Google更新了Bard,但是很可能它编程的能力没有完全覆盖到这几门编程语言,尤其是看到新闻上说Google Bard已经反超了GPT4,我真的没感觉出来,而且我测试的时候,Google Bard对Java的支持实在是太弱了,稍微难一点的问题,直接给你回复他只是一个语言模型,不知道,倒是很诚实,”I’m unable to help, as I am only a language model and don’t have the ability to process and understand that.”。而且Google Bard在我录这期电台的时候,还不支持中文,虽然他认识中文,也能回答中英文夹杂的问题,但是他就是说自己不支持中文。如果你问他的问题里有中文,他有时候会回答As an LLM, I am trained to understand and respond only to a subset of languages at this time and can’t provide assistance with that. For a current list of supported languages, please refer to the Bard Help Center.

我就是日常写一些C语言,最先不想用的是Amazon的Code Whisperer,这并不是说Code Whisperer不好,而是对我的项目可能不好。我在测试的时候,看过很多的教程,如果你写的软件要乃至AWS APIs,那就再好不过了,属于第一手的支持,比如你要写一个功能是给AWS上传一个文件,可以直接写注释upload a file to S3,这个Whisperer直接把代码给你生成。对我来说,Code Whisperer对Java的支持也不好,而且官方不宣称支持C/C++,在我使用的过程中,还是支持的,但是可能效果不够好,所以,我试用了一周,我就放弃了Whisperer。

再来说这个github的copilot,我用了好久了,官方宣传说,这个copilot生成的代码,平均有26%的程序员会最终采用,并且根据项目研究,使用copilot生成的代码大约占了整个项目的40%,也就是说开发人员代码有40%是由 GitHub Copilot 生成的。我觉得这个数量跟我的个人经验应该差不多。

这也从侧面说明了一个问题,目前的AI辅助代码软件,还远远没有达到你告诉他一句话,比如:小李,给我写个游戏出来。然后AI咔咔的给你写完了,以后也许在某个时间点,人类可以做出这样的软件,目前离这种新闻上渲染的故事,还有比较遥远的距离。以后会不会自己进化到产生某种智能,比如你一张嘴,他就给你写完了,目前看起来比较不太可能。毕竟AI要进化出拍马屁的功能,一个眼神,就把事情给你办了。

使用copilot和Whisperer,自动生成的代码都不是特别的长,据github自己说,只有1%的机会,copilot会生成超过150个字符的代码。在理想的情况下,代码应该是生成的,而不是背诵出来的,比如copilot肯定看过很多的代码,即使在相同的用户场景下,copilot也应该是生成,而不是直接背出一段代码出来,否则是有可能违反版权的。比如你对copilot说给我治个有自主知识产权的操作系统,然后copiot把linux源码给你了,那不叫自主知识产权的操作系统,那叫耍流氓。我相信AI可不像某些人类一样不要脸,虽然AI没有脸,但是人家要点脸,虽然有些人有脸,但是不要一点逼脸。Github阻止AI不要脸,不要侵犯任何版权。

还有一个常用的方法就是把不懂的代码,或者报错丢给GPT4来读,GPT4会给出一些提示。但是,还是不够精确,因为工作的原因,我经常要读我写过的代码。我写代码是为了赚钱,为了吃口饭,有不少听众觉得我应该把我的一些代码或者工具开源。说实在的,我喜欢写一些代码,但是大部分代码都是完成某个项目,然后公司赚钱后,分给我一部分,我写的代码的价值就是这样,我选择不开源的原因是公司不让开源。比如一些代码是2年前写的代码,再看的时候,就忘记了,我就把这些代码丢进去看看,感觉有一多半的时间会有相对正确的答案,但是也不好说,比如我写的路由器上的代码比较多,但是开源的与路由器相关的代码可能GPT读的不够多,所以呢,它就开始瞎猜。

我举个例子吧,比如说在网络编程中,经常需要处理IP地址或者MAC地址等网络地址。这些地址通常是用整数表示的,而位移操作符可以用来提取这些地址中的各个部分。例如,可以使用位移操作符将一个32位的IPv4地址分成四个8位的字段,以便进行网络传输。 在网络协议中,常常需要使用位标志来表示某个标志是否为真或者假。位移操作符可以用来设置、清除或者测试这些位标志。例如,可以使用位移操作符来设置TCP协议中的标志位,以便表示TCP连接的状态。

我就把这些代码丢给GPT4读,他就开始瞎猜了,说这段代码大概的意思是解密的,这么说也不是不对,但是代码是我写的,所以被他一提示,我就知道是什么意思了。我觉得还是很有用的。

测试了一段时间以后,我最常用的是GPT4和github的copilot,如果以后copilot更新成了可以聊天的那个copilot,我打算可以相对比较长的时间内一直用copilot。GPT4呢,也不错,可以跟它聊天。

目前跟大家想象的还是不一样,目前大家认为的是那种,跟GPT说个需求,GPT直接把软件给你生成了,目前是做不到的,还是需要把需求分解再分解,分解到可以让copilot理解并且给出答案的程度。比如说,你可以让GPT生成一段代码来验证用户输入的是不是一个正确的电子邮件。并且copilot还可以生成一些测试用例来测试他给出的代码是不是正确的,我觉得这个功能就非常好了,作为用户不用关心如何写那些正则表达式,也不用写测试用例。

目前大语言模型能做的程度就是相当于程序员身边配备了一个啥都懂的人,你可以向他提问,大部分他都能给出答案,但是这个答案准确与否,与你的提问方式有很大的关系。如果你自己就没想清楚,GPT根本就不可能给出你想要的答案。我觉得如果想用好的话,还是非常有必要学习一下提问的能力,毕竟AI目前还不是人类,没有办法像人类一样揣测上意,在现实生活中,很多混的风生水起的人,领导一个眼神,他就能看出端倪,这是本事。目前AI离这个方面还是比较远的。程序员干的工作有点枯燥和死板,所以,AI介入会更加的方便。

最近国外有个叫Caryn的美女网红,她的团队用她的YouTube视频什么的,使用GPT4训练出来了一个叫CarynAI的机器人。她的真人在SnapChat上有200万粉丝,这些粉丝大部分是一些饥渴难耐的小伙子。这个机器人开放以后,每分钟收费1美元,这个机器人就可以跟你聊一些你想聊的话题,平均每周赚7万多美元,相当于每天1万美元。根据他的团队预测,如果全部开放以后,该机器人每天应该有2万人使用,也就是1/100的粉丝用,如果每个人聊天10分钟,会让她因此每个月的收入到达600万美元。这家幕后公司叫Forever Voices,大家有兴趣的可以去看看,去选个脾气好,身材棒的女朋友,我已经在选了,1美元1分钟,光聊天,比起真人送彩礼来,要便宜。

大家的思路要打开,我仅仅从程序员的角度测评了一下,各行各业的人,都已经行动起来了,加油。有什么好的赚钱想法,记得留言告诉我,穷疯了。

4 3 投票数
文章评分
订阅评论
提醒

3 评论
最旧
最新 最多投票
内联反馈
查看所有评论
妙铁
9 月 前

末尾送彩蛋

ZS
9 月 前

栋哥,咋订阅的ChatGPT的Plus?

3
0
希望看到您的想法,请您发表评论x
滚动至顶部