編程已死?AI還代替不了程序員
本文來自微信公眾號:InfoQ (ID:infoqchina),編譯:核子可樂、凌敏,原文標(biāo)題:《編程已死,AI 當(dāng)立?教授公開“唱反調(diào)”:AI 還幫不了程序員》,頭圖來自:unsplash
GitHub Copilot、ChatGPT 等 AI 產(chǎn)品的火爆出圈,讓更多人看到 AI 在編程方面展現(xiàn)出的極強(qiáng)能力。一時(shí)間,關(guān)于“AI 取代程序員”“AI 當(dāng)立、編程已死”的言論不絕于耳。
(資料圖)
前段時(shí)間,前哈佛大學(xué)計(jì)算機(jī)科學(xué)教授、谷歌工程主管 Matt Welsh 在芝加哥計(jì)算機(jī)協(xié)會(huì)的一個(gè)虛擬會(huì)議上表示,ChatGPT 和 GitHub Copilot 預(yù)示著編程終結(jié)的開始。Welsh 斷言,生成式 AI 將在 3 年內(nèi)終結(jié)編程。
但也有一些人對此持反對意見。近日,Constructor Institute 教授、Eiffel Software 首席技術(shù)官 Bertrand Meyer 在 ACM 上發(fā)表文章公開“唱反調(diào)”,他認(rèn)真研究了一番 ChatGPT 到底是怎么編程的,最終得出結(jié)論:AI 還幫不了程序員。
ChatGPT 編程實(shí)驗(yàn)
前段時(shí)間,Meyer 通過一系列文章討論過如何解決虛構(gòu)出來的二進(jìn)制搜索問題,雖然內(nèi)容看起來都不錯(cuò),每篇文章也都提出了自己的解答版本,但其實(shí)大部分都是錯(cuò)的。
以此為素材,Meyer 把這些文章提交給了 ChatGPT(版本 4)。
AI 選手先是對問題做出了描述:
這個(gè)問題實(shí)際可以出現(xiàn)在任意數(shù)量的元素上,而不僅僅是兩個(gè)。但想要證明一個(gè)程序不正確,舉出一個(gè)反例就足夠了(但要證明它是正確的,則需要證明其適用于所有示例)。Meyer 只問了程序是否正確,并沒提具體要怎么修復(fù),但 ChatGPT 還是熱心給出了如下建議:
這里的評論部分確實(shí)很有幫助:
ChatGPT 說得沒錯(cuò),邏輯很通。但在認(rèn)真查看建議的替換代碼之后,Meyer 發(fā)現(xiàn)了某些可疑的部分。于是,Meyer 進(jìn)一步提問:
在嘗試修復(fù) Meyer 的錯(cuò)誤時(shí),ChatGPT 輸出了另一個(gè)同樣有錯(cuò)的版本,只不過錯(cuò)得跟 Meyer 不一樣。值得一提的是,ChatGPT 每次都試著給出新的版本——在糾正之前錯(cuò)誤的同時(shí),卻又帶來了新問題。
Meyer 還發(fā)現(xiàn),ChatGPT 特別擅長道歉:
ChatGPT 一直在自說自話,積極向 Meyer 推薦它認(rèn)為經(jīng)過修正的解決方案:
到這里,Meyer 甚至不打算嘗試最新版本正不正確。有經(jīng)驗(yàn)的程序員朋友都知道,揪住一個(gè)案例不斷添加特定修復(fù),絕不是生成正確程序的最佳途徑。
于是 Meyer 也選擇繼續(xù)保持禮貌:
精彩的來了:ChatGPT 決定向 Meyer 介紹循環(huán)不變量的概念!
Meyer 從未明示或暗示稱“需要一種更系統(tǒng)的方法來驗(yàn)證算法的正確性”,他只是想知道 ChatGPT 要如何證明它推薦的答案是對的,但絕對沒有使用“系統(tǒng)的”或者“驗(yàn)證”這類字眼。之所以出現(xiàn)這一幕,可能是基于大型語料庫的統(tǒng)計(jì)推理給了 ChatGPT 信心,讓它認(rèn)定用戶肯定會(huì)質(zhì)疑輸出代碼的正確性,然后要求以系統(tǒng)方法給出驗(yàn)證。
Meyer 繼續(xù)追問了下去:
ChatGPT 隨后給出了很好的答案,甚至包括 ACM 計(jì)算調(diào)查當(dāng)中收錄的循環(huán)不變量調(diào)查內(nèi)容。而且它仍然是先夸一句再解釋問題,非常客氣:
到這里,Meyer 不打算再繼續(xù)追問了。
作為一名程序員,Meyer 知道如何解決問題,但和大多數(shù)程序員一樣,他自己也會(huì)經(jīng)常犯錯(cuò)誤。他希望 AI 編程助手可以監(jiān)督自己,提醒他注意陷阱并在犯錯(cuò)時(shí)給予糾正。換言之,他希望 AI 能成為高效有用的結(jié)對編程伙伴。但實(shí)驗(yàn)結(jié)果并非如此:AI 編程工具就像個(gè)自大的研究生,聰明且博覽群書,也始終保持著禮貌并愿意道歉。可回頭來看,它仍然草率且不夠可靠,所謂的幫助對 Meyer 來說毫無用處。
現(xiàn)代 AI 成果并不能生成正確的程序
Meyer 認(rèn)為,當(dāng)前生成式 AI 工具確實(shí)能夠在某些領(lǐng)域出色地完成工作,甚至勝過大部分人類的水平:相關(guān)結(jié)果來得很快、令人信服,乍看之下甚至不亞于頂級專家,原則上也沒什么大問題。比如生成營銷手冊,或者是粗略翻譯網(wǎng)站內(nèi)容之類,它的翻譯效果相當(dāng)不錯(cuò),此外還有醫(yī)學(xué)影像分析等等。
但編程的要求完全不同,它對產(chǎn)出程序的正確性有著嚴(yán)格要求。開發(fā)者可以容忍一定的錯(cuò)誤,但其核心功能必須正確。如果客戶下達(dá)的指令是買進(jìn) 100 股微軟股票,同時(shí)賣出 50 股亞馬遜股票,那程序絕不應(yīng)該執(zhí)行相反的操作。專業(yè)程序員有時(shí)候會(huì)犯錯(cuò),這時(shí)候就看 AI 助手能不能幫上一把了。
然而,現(xiàn)代 AI 成果并不能生成正確的程序:它產(chǎn)出的程序?qū)嶋H是從之前見過的大量原有程序中推理而成。這些程序看似靠譜,但卻無法完全保障正確性。(這里所說的現(xiàn)代 AI,是將其與早期 AI 區(qū)分開來——后者試圖通過專家系統(tǒng)等方法重現(xiàn)人類的邏輯思維,但在很大程度上已經(jīng)失敗。如今的 AI 完全通過統(tǒng)計(jì)推理實(shí)現(xiàn)基本功能。)
Meyer 表示,盡管 AI 助手時(shí)有驚艷發(fā)揮,但它們并不是邏輯的產(chǎn)物,而是玩弄文字的高手。大語言模型都擁有流暢的表達(dá)能力,非常擅長生成看起來沒什么大錯(cuò)的文本。雖然這樣的表現(xiàn)對于許多應(yīng)用場景已經(jīng)足夠,但仍然不適合編程需求。
現(xiàn)在的 AI 能夠幫助用戶生成基礎(chǔ)框架,以大致靠譜的效果給出答案。但也就止步于此了。以目前的技術(shù)水平來看,它還完全輸出不了能夠正常運(yùn)行的程序。
但這對軟件工程行業(yè)來說并不是壞事。Meyer 認(rèn)為,面對種種“編程已死”的宣傳,這次實(shí)驗(yàn)提醒我們不管人類程序員還是自動(dòng)編程助手,都需要規(guī)范的約束,并且任何產(chǎn)出的備選程序都有待驗(yàn)證。在最初的驚艷過后,人們終將意識(shí)到這種一鍵式生成程序的能力并沒有多大作用。考慮到它往往無法正確實(shí)現(xiàn)使用者想要的效果,草草上線的自動(dòng)化功能也許反而有害。
寫在最后
Meyer 并不是唱衰 AI 編程,他認(rèn)為,審慎的態(tài)度或許能幫助我們構(gòu)建出具備可靠能力的終極 AI 系統(tǒng)。
目前,AI 技術(shù)尚處于早期發(fā)展階段,這些局限性也并不是永遠(yuǎn)跨越不了的障礙。也許在未來的某一天,生成式 AI 編程工具能夠克服這些障礙。但要讓它具備真正的編程能力,還得在規(guī)范和驗(yàn)證方面做一番深入的探討和研究。
原文鏈接:
https://cacm.acm.org/blogs/blog-cacm/273577-ai-does-not-help-programmers/fulltext
本文來自微信公眾號:InfoQ (ID:infoqchina),編譯:核子可樂、凌敏
關(guān)鍵詞:
2023-06-08 16:14:50
2023-06-08 16:02:57
2023-06-08 15:51:36
2023-06-08 15:46:24
2023-06-08 15:36:53
2023-06-08 15:35:09
2023-06-08 15:34:51
2023-06-08 15:16:54
2023-06-08 15:11:59
2023-06-08 15:00:13
2023-06-08 14:58:57
2023-06-08 14:49:12
2023-06-08 14:47:23
2023-06-08 14:46:11
2023-06-08 14:40:03
2023-06-08 14:37:46
2023-06-08 14:26:00
2023-06-08 14:22:38
2023-06-08 14:15:56
2023-06-08 13:02:44
2023-06-08 12:47:23
2023-06-08 12:35:31
2023-06-08 12:26:57
2023-06-08 11:58:33
2023-06-08 11:57:10
2023-06-08 11:55:25
2023-06-08 11:51:31
2023-06-08 11:35:16
2023-06-08 11:02:35
2023-06-08 10:52:39
2023-06-08 10:51:53
2023-06-08 10:50:26
2023-06-08 10:39:46
2023-06-08 10:35:54
2023-06-08 10:34:36
2023-06-08 10:34:35
2023-06-08 10:09:33
2023-06-08 09:56:48
2023-06-08 09:56:46
2023-06-08 09:56:36
2023-06-08 09:55:13
2023-06-08 09:53:34
2023-06-08 09:52:46
2023-06-08 09:49:02
2023-06-08 09:47:38
2023-06-08 09:45:42
2023-06-08 09:40:24
2023-06-08 09:31:33
2023-06-08 08:53:29
2023-06-08 08:44:03
2023-06-08 08:43:25
2023-06-08 08:34:52
2023-06-08 08:24:09
2023-06-08 08:00:26
2023-06-08 07:58:16
2023-06-08 07:57:00
2023-06-08 07:44:50
2023-06-08 07:19:58
2023-06-08 07:12:53
2023-06-08 06:59:48
2023-06-08 06:58:05
2023-06-08 06:56:12
2023-06-08 06:50:44
2023-06-08 06:49:26
2023-06-08 06:49:03
2023-06-08 06:48:45
2023-06-08 06:44:32
2023-06-08 06:36:22
2023-06-08 06:34:05
2023-06-08 06:28:12
2023-06-08 06:14:57
2023-06-08 06:06:03
2023-06-08 05:48:00
2023-06-08 05:19:19
2023-06-08 05:18:01
2023-06-08 04:51:49
2023-06-08 04:38:55
2023-06-08 04:30:26
2023-06-08 04:28:51
2023-06-08 04:25:09
2023-06-08 04:24:14
2023-06-08 04:15:46
2023-06-08 03:42:28
2023-06-08 03:35:59
2023-06-08 03:30:00
2023-06-08 03:15:45
2023-06-08 03:07:04
2023-06-08 02:59:26
2023-06-08 02:22:01
2023-06-08 02:19:58
2023-06-08 02:02:22
2023-06-08 02:01:54
2023-06-08 02:00:44
2023-06-08 02:00:27
2023-06-08 01:47:59
2023-06-08 01:45:52
2023-06-08 01:23:59
2023-06-08 01:05:17
2023-06-08 00:52:38
相關(guān)新聞