編譯 | 核子可樂、凌敏
GitHub Copilot、ChatGPT 等 AI 產品的火爆出圈,讓更多人看到 AI 在程式設計上展現出的極強能力。近來,「AI 取代程式設計師」、「AI 坐上程式寶座」等言論頻繁出現。
前段時間,前哈佛大學電腦科學教授、Google工程主管 Matt Welsh 在芝加哥電腦協會的一個虛擬會議上表示,ChatGPT 和 GitHub Copilot 預示著程式設計終結的開始。 Welsh 斷言,生成式 AI 將在 3 年內終結程式設計。
但也有一些人對此持反對意見。近日,Constructor Institute 教授、Eiffel Software 首席技術官 Bertrand Meyer 在 ACM 上發表文章公開“唱反調”,他認真研究了一番 ChatGPT 到底是怎麼編程的,最終得出結論:AI 還幫不了程式設計師。
ChatGPT 程式設計實驗
前段時間,Meyer 透過一系列文章討論過如何解決虛構出來的二進制搜尋問題,雖然內容看起來都不錯,每篇文章也都提出了自己的解答版本,但其實大部分都是錯的。 ( 延伸閱讀:https://bertrandmeyer.com/2020/03/26/getting-program-right-nine-episodes/)
以此為素材,Meyer 把這些文章交給了 ChatGPT(版本 4)。
AI 選手先是對問題做了描述:
這個問題實際上可以出現在任意數量的元素上,而不僅僅是兩個。但想要證明一個程式不正確,舉出一個反例就足夠了(但要證明它是正確的,則需要證明其適用於所有範例)。 Meyer 只問了程序是否正確,並沒提具體要怎麼修復,但 ChatGPT 還是熱心給以下建議:
這裡的評論部分確實很有幫助:
ChatGPT 說得沒錯,邏輯很通。在仔細研究了建議的替換程式碼後, Meyer 發現了某些可疑的部分。於是,Meyer 進一步提問:
在嘗試修復 Meyer 的錯誤時,ChatGPT 輸出了另一個同樣有錯的版本,只不過錯得跟 Meyer 不一樣。值得一提的是,ChatGPT 每次都試著給出新的版本——在糾正之前錯誤的同時,卻又帶來了新問題。
Meyer 也發現,ChatGPT 特別擅長道歉:
ChatGPT 一直在自說自話,積極向 Meyer 推薦它認為經過修正的解決方案:
到這裡,Meyer 甚至不打算嘗試最新版本正不正確。有經驗的程式設計師朋友都知道,揪住一個案例不斷添加特定修復,絕不是產生正確程式的最佳途徑。
所以 Meyer 也選擇繼續保持禮貌:
精彩的來了:ChatGPT 決定要向 Meyer 介紹循環不變量的概念!
Meyer 從未明示或暗示稱“需要一種更有系統的方法來驗證演算法的正確性”,他只是想知道ChatGPT 要如何證明它推薦的答案是對的,但絕對沒有使用“系統的”或「驗證」這類字眼。之所以出現這一幕,可能是基於大型語料庫的統計推理給了 ChatGPT 信心,讓它認定使用者肯定會質疑輸出程式碼的正確性,然後要求以系統方法給予驗證。
Meyer 繼續追問了下去:
ChatGPT 隨後給出了很好的答案,甚至包括 ACM 計算調查當中收錄的循環不變量調查內容。而且它仍然是先誇一句再解釋問題,非常客氣:
到這裡,Meyer 不打算再繼續追問了。
Meyer知道如何解決問題,但和大多數程式設計師一樣,他也常犯錯。他希望 AI 編程助理可以監督自己,提醒他注意陷阱並在犯錯時給予糾正。換言之,他希望 AI 能成為高效有用的配對程式設計夥伴。然而,實驗結果表明,AI 程式設計工具類似於高端的研究生,不僅聰明而且博覽群書,還有著一貫的禮貌並願意道歉。即使回顧過去,它依然顯得粗糙不精準,所謂的幫助對 Meyer 沒有什麼用。
現代 AI 成果並不能產生正確的程式
Meyer 認為,目前生成式AI 工具確實能夠在某些領域出色地完成工作,甚至勝過大部分人類的水平:相關結果來得很快、令人信服,乍看之下甚至不亞於頂級專家,原則上也沒什麼大問題。該翻譯工具除了能夠產生行銷手冊和進行網站內容的粗略翻譯外,還展現出卓越的醫學影像分析能力。
但程式設計的要求完全不同,它對產出程序的正確性有著嚴格要求。開發者可以容忍一定的錯誤,但其核心功能必須正確。如果客戶下達的指令是買進 100 股微軟股票,同時賣出 50 股亞馬遜股票,那麼程式絕對不該執行相反的操作。專業程式設計師有時候會犯錯,這時候就看 AI 助理能不能幫上一把了。
然而,現代 AI 成果並不能產生正確的程序:它產出的程序實際上是從之前見過的大量原有程序中推理而成。這些程序看似可靠,卻無法完全保障正確性。 (這裡所說的現代AI,是將其與早期AI 區分開來——後者試圖透過專家系統等方法重現人類的邏輯思維,但在很大程度上已經失敗。如今的AI 完全透過統計推理實現基本功能。)
Meyer指出,雖然AI助理在某些方面表現非常出色,但它們不是邏輯性的產物,而是善於操作文字的高手。大型語言模型能夠自如地表達和產生看起來沒有太大錯誤的文字。雖然這樣的表現對於許多應用場景已經足夠,但仍然不適合程式需求。
現階段的人工智慧可以協助使用者產生基本框架,並給出相對可靠的答案。但也就止步於此了。以目前的技術水準來看,它還完全輸出不了能夠正常運作的程式。
但這對軟體工程產業來說並不是壞事。 Meyer 認為,面對種種「編程已死」的宣傳,這次實驗提醒我們不管人類程式設計師還是自動程式設計助手,都需要規範的約束,並且任何產出的備選程序都有待驗證。在最初的驚艷過後,人們終將意識到這個一鍵式生成程式的能力並沒有太大作用。考慮到它往往無法正確實現使用者想要的效果,草草上線的自動化功能也許反而有害。
寫在最後
Meyer 並不是唱衰 AI 編程,他認為,審慎的態度或許能幫助我們建構出具備可靠能力的終極 AI 系統。
AI 技術目前仍處於早期發展階段,但這些限制並非永久不可克服的障礙。也許在未來的某一天,生成式 AI 程式設計工具能夠克服這些障礙。要讓它真正具備程式設計能力,就需要深入探討和研究規格和驗證方面。
那麼問題來了:你是否使用過 AI 程式設計工具?使用的是哪款工具?準確度如何?這些工具是否真的幫助了你?歡迎在留言區寫下你的使用體驗。
原文連結:
#抗拒使用 GPT-4 和 Copilot 寫程式碼,擁有 19 年程式設計經驗的老程式設計師「面試」被淘汰
馬化騰稱“收緊隊形”,騰訊回應;微軟發布自己的Linux發行版;OpenAI回應GPT-4 變笨 | Q資訊
向量資料庫?不要投資!不要投資!不要投資!
年薪60萬的資料分析師工作保不住了? !阿里達摩院研究發現,改用GPT-4成本只需幾千元
報告推薦
包含ChatGPT、Claude、Sage、天工3.5、文心一言、通義千問、訊飛星火、Moss、ChatGLM、vicuna-13B 等大語言模型產品,四大維度12個細分維度展現其綜合能力,透過技術視角探索大模型產品的程式設計能力,提升AGI 創業方向選擇、工作實際應用等的最新認知。掃碼新增InfoQ 小助手,解鎖全部資料。
直播預告
AI 大模型時代,架構師面臨哪些機會與挑戰?今晚 20:00,Mobvista 技術 VP 蔡超,直播連線科大訊飛 AI 研究院副院長李鑫,為你揭曉答案!更有 ArchSummit 深圳站精彩專題提前劇透,知識豪禮送不停!抓緊預約!
以上是程式設計已死,AI 當立?教授公開「唱反調」:AI 還幫不了程式設計師的詳細內容。更多資訊請關注PHP中文網其他相關文章!