AI 時代,許多開發者都已經上手了各式 AI 編程工具,至于評價則千差萬別。但整體而言,AI 編程的代碼正越來越多出現在當下的各種技術棧中,其口碑也在逐漸攀升。隨著 GPT4 的出現,AI 編程正在邁入新的臺階,而軟件工程 3.0 時代也正在進行中。
為了更好地了解當下 AI 編程能力的發展,我們邀請到同濟大學特聘教授,“軟件工程 3.0” 定義者朱少民,請談談他 AI 編程的過去與未來。
朱少民
同濟大學特聘教授,“軟件工程 3.0” 定義者
CCF 軟件質量工程 SIG 主席,擁有個人公眾號《軟件質量報道》。近三十年來一直從事軟件測試、質量管理等工作,先后獲得多項省、部級科技進步獎,已出版了二十多部著作和 4 本譯作,并經常在國內外學術會議或技術大會上發表演講,曾任思科(中國)軟件有限公司 QA 高級總監、IEEE ICST 2019 工業論壇主席、多個 IEEE 學術會議的程序委員、《軟件學報》審稿人等。
5 月 28 日,朱少民將擔任 GOTC 2023 “AI 編程” 分論壇講師,并發表《軟件工程 3.0 之下 軟件開發新范式》主題演講,敬請期待!
參會報名,請訪問: https://www.bagevent.com/event/8387611
OSCHINA:AI 編程這個概念是什么時候開始興起的?現在處于什么樣的發展階段?
上世紀 70 年代左右就有了計算機輔助編程,但和今天的 AI 編程還是有區別的。輔助編程是想通過一些規則或者是專家系統來完成編程,基于規則引擎來做推理,相當于模擬人的思維,知名工具軟件 MATLAB 可以看做是輔助編程的成果。但是效果不夠好,所以后面也就停了一段時間。
這波人工智能的熱潮可以看作是 AI 第三次浪潮的延續,而第一次和第二次的浪潮,實際上沒有達到我們預期的效果。
今天我們講 AI 編程,更多的是最近幾年,基于深度學習、機器學習,基于深度神經網絡和強化學習這些新技術來完成代碼的編寫。
那么現在所處的階段,不能說是成熟階段,但可以認為是接近成熟的階段。比如 Copilot X,華為的盤古模型也能生成函數級的代碼了。這些技術已經可以在工程實踐中應用了。
OSCHINA:現在市面上有很多宣稱能寫代碼的 AI 工具,開發者要怎么區分與選擇?
一方面要看你使用的編程語言。目前如果用的是 C 語言,AI 方面的能力就弱一些。如果是 Java 或者 Paython、Go 語言,那開源的代碼數據比較多,效果就會比較好。如果用到特殊的語言,也許會更困難。
另一方面就是要看功能,比如可不可以做代碼補全、代碼評審。還有代碼生成的可靠性和準確性,決策是否可靠等等。比如生成代碼的問題比較多,重構的工作量非常大,那么就沒有意義。開發者常說的一句話:代碼寫得爛,要我改還不如我自己重寫。最后,還要看工具好不好用,例如是否通過插件實現的(可以保留過去編程的習慣)等等。
OSCHINA:AI 編程如果要進一步發展,需要在哪些方面有所突破?
一個是規模挑戰,即生成代碼的量。
比如華為的盤古模型生產代碼是函數級的,已經算是比較厲害的了。以前我們講代碼補全,相當于寫一行代碼給你補兩行,或者寫兩行補一行,那么這在一個函數里可能只是完成了二分之一或者三分之一,你可以理解為代碼塊或者說代碼行補全。從這種到函數級生成代碼已經算是一大進步了,函數級至少完成了一個類的方法。
那么在此之上,再提升量級,比如完成一個完整類或模塊、Package 等。
二是準確性、可靠性。早期代碼生成的準確率大概是 40%、50%,根本不能用。工業界一般在達到 80%、90% 之后才會用。如果達到 95%,甚至是 98%,那就更好了。
三是代碼理解能力是不是更強,像邏輯關系、上下文聯系等等,相當于 AI 還可以聯想到過去的代碼。這方面,在今天也是對 AI 編程的一個主要限制。比如上下文理解,因為我們寫代碼或者整個代碼的演化時間還是很長的,我經常和學生講,你開發產品的第一個版本也許一兩個月就結束了,但如果你的產品開發得比較好、有生命力,整個演化過程也許是幾年甚至十幾年。
那么我們今天的機器學習或者說大模型還沒有這方面的能力,無法記住幾天前的上下文,無法回憶幾年前自己生成的代碼,并依此不斷生成新的代碼、或做代碼的重構與優化。
這相當于講,目前的 AI 是通用的大數據學習,它不能學習產品線代碼,然后來生成符合這個產品線業務邏輯的代碼。GPT-4 能不能做這樣事情,至少是要打一個問號的。
四是人機交互智能。這也要提到軟件工程 3.0,GPT-4 發布標志著軟件工程 3.0 時代的到來,其中人機交互智能將是軟件工程 3.0 的一個常態。我們把需求文檔塞進去,所有代碼就都出來了,或者說是完全自動化生成代碼,這樣理想的情況,至少最近幾年應該都不會發生。這還需要人和大模型、機器之間不斷交互。
我們也希望有一個更好的交互機制,或者我們會提醒大模型,一個月之前的需求是不是可以重新思考,重新生成,或者把一個月之前的答案再做修改與調整。
同時這點放到今天的語境里來看相對更復雜的一點是,有時開發者不止一個人。以前簡單的模式是每個開發人員會有一個助手,但現在可能是一個開發者擁有好幾個機器人,甚至是機器人與機器人之間的協調。最近也有論文提到,去做一個類似管理人機交互過程,或者說是任務調度的平臺。
全球開源技術峰會(Global Open-source Technology Conference,簡稱 GOTC)是由開放原子開源基金會、 Linux 基金會亞太區、上海浦東軟件園和開源中國聯合發起的,面向全球開發者的一場盛大開源技術盛宴。
GOTC 2023 將于 5 月 27 日至 28 日在上海張江科學會堂召開。大會將以行業展覽、主題發言、特別論壇、分論壇的形式展現,與會者將一起探討元宇宙、3D 與游戲、eBPF、Web3.0、區塊鏈等熱門技術主題,以及開源社區、AIGC、汽車軟件、AI 編程、開源教育培訓、云原生等熱門話題,探討開源未來,助力開源發展。
進入官網了解更多信息。