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