作者 | 鄒欣
緣起
《 新程序員 》執(zhí)行總編唐門教主上個月某天深夜寫了一篇博客 --《編程的未來》( https://blog.csdn.NET/tangxiaoyin/article/detAIls/130651527),要我談談感想。這也是最近軟件工程師們聊得比較多的問題,上周,在上海的 “關(guān)東小磨” 和十多位 CSDN 博主聚會的時候(https://devpress.csdn.net/shanghai),大家也稍微談了一下這個話題,但是談得不透。我想在本文整理一下我的思路。
軟件行業(yè)有多少部分會被取代
AI 編程的能力邊界
首先,從去年開始的 AI 輔助編程浪潮中,很多人提到,從具體的函數(shù)實現(xiàn)來看,目前 AI 代碼生成有很多做得不好的地方,或者有很多 bug。
我認為不必糾結(jié)這些 bug,它們一定會不斷地被解決,這是一個時間問題,也許是半年,也許是一周。但在編程方面,它有一個能力邊界,這個邊界未必能很快跨越。
慕測平臺的一篇高質(zhì)量文章總結(jié)了 AI 輔助編程目前的能力邊界,我總結(jié)如下:
? 生成的代碼長度有限制。很多情況下,AI 不能輸出完整的代碼,還需要程序員來拼接代碼,而他們要非常懂這些程序才能拼接成功。
//問程序員:你參加過的最復雜的項目,總代碼量有多少?有超過一千行代碼么?
? 不能有效處理超長程序、開發(fā)環(huán)境的配置、多線程編程、已有程序的 bug 修復等問題。
//問程序員:你修復過的最復雜的 bug 是什么?
? 泛化能力有限。如果是一個人類程序員,他在一個算法測試平臺通過了很多編程練習,那么他在另一個不同的編程平臺也應該能應對自如。但是,目前的 ChatGPT 還不能融會貫通,舉一反三。
//問程序員:你能舉一反三么?
? ChatGPT 處理復雜編程中抽象的 “類” 和 “依賴關(guān)系” 的能力還比較弱。
//問程序員:你在這方面能力如何?你寫的最復雜的 OO 設計有多少父類子類?
? Fred Brooks Jr. 在著名的 “沒有銀彈” 論斷中提出,軟件開發(fā)中的關(guān)鍵任務就是理解并處理反映軟件構(gòu)成的復雜概念, 目前 AI輔助編程也并沒有在這個方面取得突破。
//問程序員:你構(gòu)建過多么復雜的軟件,這個軟件運行了幾年,這幾年中你是如何維護這個軟件的?
? ChatGPT 等編程輔助工具缺乏創(chuàng)造性編程的能力。
//問程序員:你曾經(jīng)創(chuàng)造性地解決過什么問題?
? ChatGPT 等工具的能力,取決于提問者的能力。
//問程序員:你的提問能力如何?
如果 AI 都做不到上面這些,那我們的程序員有多少能做到的呢?(