詹士 发自 凹非寺量子位 | 公众号 QbitAI
ChatGPT写代码,水平究竟如何?
不到5分钟,做出一个WordPress(一款内容管理系统软件)插件,且代码很干净。
1702124161661.jpg
测试者名叫David Gewirtz,是一位1982年进入IT行业的老炮,供职过的公司包括:赛门铁克、苹果、Pyramid Technology。
即使拥有40年从业经验,他在见识ChatGPT能力之后,还是不禁发出感慨:
本以为不会有太多惊喜,没成想,还是吓了一跳
在评测文章中,他还表示这一切既令人着迷,又令人惊讶,同时还令他恐惧
1702124162616.jpg
所以,他具体是怎么做的测试?
我们一同来看下。
精力不够,ChatGPT来凑
此番David老哥之所以要用ChatGPT写代码,源于他妻子在运营电商网站,每月,她需要根据客户群组名单随机选出一部分名字,生成轮播动画。
过去,David老哥的妻子用一个网站生成随机名单,不过,该服务要收费,且不便宜。于是,老哥决定发挥“技术功力”,自己写一个WordPress插件,帮助妻子“降本增效”。
那么问题来了——即便是小小WordPress插件,也需要好几天去完成,这当中需添加用户界面元素,也要编写逻辑代码,鉴于自己实在太忙,于是,David想到——
最近ChatGPT不是很火么?要不试试?
1702124163043.jpg
说干就干,他先写了第一个提示,描述想要的文字(代码)到底是什么。
具体如下:
编写一个PHP 8兼容的WordPress插件,它提供一个文字输入区域,可将列表粘贴进去,还带有一个按钮,按下可将输入条目随机排列再显示出来。
不到一分钟,代码就生成出来了:
1702124164224.jpg
图源:David Gewirtz/ZDNET
测试者将上述代码复制到一个.php文件中,压缩并上传服务器。
唔,亲测有效。
1702124165005.jpg
当他将该插件拿给妻子看,对方一脸惊讶,不过,她马上加了新需求:重复的名字不能挨着。
于是,码农ChatGPT有了新任务。
需要保证相同条目不会挨着(除非没有其他选项)…此外,输入条目数与结果条目数得相同。
30s后,结果来了。
老样子,上传服务器并测试——有效,但输出包含了空行。
那提示它一下。
…不能有空行…
A Few Moments Later……
结果又来了,测试结果没问题。
1702124165301.jpg
继续加大力度,测试者希望该插件能统计一下处理了多少行数据。
结果ChatGPT照样能完成。
让我们一起看看,这款插件的最终形态,功能还挺完善:
1702124165953.jpg
能生成相应UI并处理一行行数据 图源:David Gewirtz/ZDNET
总结一下。
老哥认为,ChatGPT生成代码亲测有效,满足了需求,其中编写了UI界面及处理逻辑,从代码本身看也很干净。
不过,问题也不是没有。
其中一个瑕疵是——代码里面并未包含WordPress的全部最优/最标准的实现方法,如未进行清理用户输入,此项处理意味着,黑客无法在字段中填充或破坏数据,在WordPress社区也有严格要求。
为此,作者尝试让ChatGPT调整下。结果它调了,但又没完全调……代码只清理了PHP函数输入端,但并未清理用HTML调用PHP时的输入,这会让黑客仍能钻空子。
另一个问题是,作者要求AI编程同时为插件命名,它却生成了一个完全不同的插件。
且后续测试者试图添加更多功能,也无法实现,说明代码维护方面ChatGPT也不是很擅长。
1702124166923.jpg
最后,测试的老哥谈了谈自己的感想。
目前,ChatGPT编写一个简单插件倒是没问题,整个过程还是让他眼前一亮的。
不过这仍是个简单任务,相当于一次大学生作业,与之对比下,维护50000个用户的开源插件肯定更为复杂。
网友:可能插入恶意代码
值得一提的是,这位老哥还问过网友——对用ChatGPT生成代码担心什么,并自己给出看法
有人担心,AI会冷不丁在程序中加入恶意代码或促销信息,对此,测试者补充道,至少在上述编程中,ChatGPT生成代码是干净的。
也有人认为,它无法给出最佳代码,测试者针对该问题认为功能性能满足即可,足够好就足够了。
还有人担心它会替代人类程序员的工作,此番测试的David也有同感。
最后问问,你让ChatGPT敲过代码么?效果如何?
参考链接:[1]https://www.zdnet.com/article/i-asked-chatgpt-to-write-a-wordpress-plugin-i-needed-it-did-in-less-than-5-minutes/[2]http://davidgewirtz.com/[3]https://twitter.com/DavidGewirtz
举报/反馈

Leave a Reply

Your email address will not be published. Required fields are marked *