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