ChatGPT五分钟写完插件,功能完善,还可加需求改BUG

  詹士发自凹非寺

  量子位公众号 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 敲过代码么?效果如何?

  参考链接:

  [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