近日,前哈佛大學電腦科學教授、谷歌工程主管 Matt Welsh 在美國計算機協會(ACM)的一個虛擬會議上斷言:“生成式 AI 將在 3 年內終結程式設計。”Welsh 的斷言是來自他體驗了ChatGPT和GitHub Copilot在程式設計方面的能力後,有感而發的。
我非常認同他的斷言,我也認為在國內的開發者群體中,這種終結是必然會發生的。但我並不認同的是,他對“3年內”這個時間的判斷,這個時間可能會稍微偏激了一些。觀察近期國產AI輔助程式設計工具CodeGeeX,也就是Welsh提到的Github Copilot的平替產品,從功能到模型層面,每週都有非常快速的產品迭代釋出。可見程式設計師群體對CodeGeeX這個Copilot平替產品的認知度和好感,都在快速提升。
最重要的是CodeGeeX作為Copilot的平替產品,完全免費,開源開放給所有開發者使用。
CodeGeeX外掛擁有程式碼生成功能:可以根據自然語言註釋描述的功能,自動生成程式碼。也可以根據已有的程式碼自動生成後續程式碼,補全當前行或生成後續若干行,幫助你提高程式設計效率。
CodeGeeX程式碼翻譯功能:支援多種程式語言之間互譯,準確率高。目前程式碼翻譯功能支援八種最流行的程式語言: Python、Go、Java、JavaScript、C++、C#、PHP、TypeScript等;
CodeGeeX程式碼解釋功能:可以一鍵為你的程式碼逐行新增註釋;
Welsh 的發言中認為,正是由於 ChatGPT 、Copilot以及CodeGeeX這些技術的出現,程式設計正處於從人類工作轉變為機器人工作的轉折點。在他看來,程式設計師需要演變成 AI 程式的“老師”——或者產品經理,或者程式碼評審人員(其實就是白盒靜態測試人員)。他認為這兩個人類角色相對來說不那麼受機器人的影響。“不要指望你的程式設計師職業生涯會一直持續下去,因為機器正在取代這個角色。”Welsh 說道。
據悉,Welsh 曾在谷歌和蘋果公司擔任高階工程職位,他曾在 2023 年 1 月出版的《ACM 通訊》雜誌上就這一話題寫過一篇文章:程式設計的終結:經典電腦科學的末日即將來臨。也希望Welsh可以體驗一下國產AI輔助程式設計工具CodeGeeX,給出中肯的評價和寶貴的意見。
下面是附上 Matt Welsh 在ACM 上發言的文字總結(摘要),閱讀之前可以在你的外掛中,率先安裝體驗CodeGeeX,提升裝備實力!
目前CodeGeeX支援在VS Code和Jetbrains IDEs的外掛市場直接下載使用。
-
- 寫程式碼是髒活,讓 AI 來做吧!
隨著 GitHub Copilot、ChatGPT 等 AI 產品持續火爆,AI 在程式設計方面展現了極強的能力。在一項新的研究課題中,ChatGPT 嘗試查詢示例程式碼中的 bug 並給出修復建議,其表現遠超現有程式,成功修復了 40 個 bug 中的 31 個(來自倫敦大學學院和德國美因茨大學的研究報告)
擁有如此強大的程式設計能力,AI 真的會取代程式設計師?Welsh 斷言,生成式 AI 將在 3 年內終結程式設計。
在 Welsh 看來,“寫程式碼是髒活”——所以就讓機器人來做吧。“用你的時間做點別的事情。對於每個人來說,寫電腦程式並不是最好的利用時間的方式。”
Welsh 表示,Copilot 是一款不可思議的產品。“在我敲鍵盤時,Copilot 經常能夠很好地幫我完成我的想法——它能讀出我的想法,比我想象的要多得多。Copilot 極大地提高了工作效率,因為它讓我避免了很多上下文切換。”
Welsh 稱現在的 Copilot“只是一個開始”,只有兩樣東西會阻止 Copilot 變得更好:更多的資料和更多的計算。由於這兩個東西都很充足,所以他認為“在未來的一兩年或三年內,Copilot 沒有理由無法會實現這樣的目標:即你在原始檔的頂部輸入幾行程式碼,它會把剩下的內容寫出來。”
Welsh 認為“電腦科學註定要失敗。”他說:“我認為這個領域將發生根本性的變化。電腦科學作為一門學科,你認為它的意義何在?它一直都是關於如何將想法轉化為程式。”
他認為,在過去的 60 多年裡,計算機程式設計在不斷髮展,試圖讓人類更容易理解程式碼。他將 1957 年的 Fortran 與 1964 年的 Basic 和 2010 年的 Rust 做了對比,他表示,就易用性而言,這三個程式語言之間真的沒有太大區別。
Welsh 表示,“現今人們開發的程式和以前一樣複雜,一樣難以維護,一樣難以理解,一樣充滿了 bug。” 但是 GitHub Copilot 讓 Welsh 從根本上重新思考電腦科學的意義。“Copilot 從根本上改變了我們寫程式碼的方式,至少從我個人的經驗來看,它是一種顯著而深刻的加快開發速度的方式。”
- 未來的軟體開發團隊是什麼樣子的?
Welsh 還對未來的軟體開發團隊做了一些有趣的預測。基本上,當程式設計師開始被淘汰時,他認為只有兩個角色可以保留:產品經理和程式碼評審人員。
在 Welsh 看來,產品經理的角色不會有太大變化。“人類產品經理仍然能夠寫出告訴軟體應該做哪些事情的描述——也就是產品需求檔案(PRD)。這是產品經理已經在做的事情,對吧?”
不同的是,在不久的將來,我們不再需要把 PRD 交給工程團隊,然後等上六週左右,等他們把需求實現完畢,Welsh 說:“你只需要把 PRD 交給 AI,AI 在幾秒鐘內就可以吐出程式碼。”
當然,生成式 AI 在早期階段有一個缺點,即它們的輸出不一定是正確的。因此,Welsh 看到了人類程式碼評審人員(靜態測試人員)能夠在這方面起到的作用。
“我們怎麼知道程式碼是否有效?我們怎麼知道它是否足夠好?我們怎麼知道它是對的?當然,我們需要進行徹底的測試,測試是非常非常重要的,這是不會消失的。所有 CI/CD 相關的東西,以及我們在過去幾十年裡積累的一切,在這裡仍然是有用的。”
他認為,具有程式設計能力的人類將承擔“評審和閱讀 AI 生成的程式碼,並確保它們能夠正常執行以及做正確的事情”的任務。
至於程式設計師,以及那些即將加入這一領域的人,他們將需要成為 AI 的老師,而不是程式設計師本身。Welsh 說:“這是關於如何教會 AI 寫程式碼,而不是自己寫。”
未來已來。
附文內容來自擺渡@HMC Lab編譯
附文原文作者:Richard MacManus
本文由部落格一文多發平臺 OpenWrite 釋出!