Go 團隊近兩年在做什么,AI 方面如何發(fā)力?
大家好,我是煎魚。
本文繼續(xù)承接 @Sameer Ajmani 的回憶錄《Go 和 Google、Cloud 融合的那么深,絕非偶然》,他現(xiàn)在作為 Google 工程總監(jiān) ,負責(zé)領(lǐng)導(dǎo) Go 編程語言團隊。
本次也給出了 Go 這兩年大的關(guān)鍵變動說明,更重要的是提及了 Go 計劃在生成式 AI 方面的發(fā)力方向。
今天由煎魚結(jié)合分享一下,看看未來會發(fā)生什么變化。
最近幾年做了什么
馬后炮一下,在過去的幾年(2022-2024 年),Go 這門編程語言及其生態(tài)系統(tǒng)在不斷地變得成熟。
Go 官方團隊認為,Go 作為可擴展云應(yīng)用的首選語言,Go 將會繼續(xù)保持強勁的增長勢頭。大業(yè)務(wù)環(huán)境下,云計算市場的復(fù)合年增長率 (CAGR) 超過 15%,因此 Go 生態(tài)系統(tǒng)的前景非常光明。
近年來功能特性的關(guān)鍵更新,TOP7 如下:
- Go 添加了泛型:解決了自 Go 1.0 以來最重要的語言功能請求。這是每次用戶調(diào)查中用戶提的最多的特性訴求。
- 增強了向后兼容性:新增了的 GODEBUG 功能標志,這使得 Kubernetes 等主要系統(tǒng)能夠擴展其支持窗口。
- 增強了向前兼容性:使得能夠修復(fù)長期存在的 Go 的編程問題,例如:foor-loop 共享變量這類 "疑難雜癥"。
- 軟件供應(yīng)鏈安全性:大大提高了 Go 項目本身的軟件供應(yīng)鏈安全性,有興趣的同學(xué)可閱讀《Perfectly Reproducible, Verified Go Toolchains》。
- 標準庫更完善:向標準庫添加了 slog 結(jié)構(gòu)化日志記錄,改進了 HTTP 路由的支持。
- 性能可以更強悍:新增了配置文件引導(dǎo)優(yōu)化(PGO)的支持,PGO 可以極大的提高程序效率,達到更高的性能目標。
- Go IDE 改進:對 VSCode 和 Gopls 做了改進,提高了性能,更多的支持靜態(tài)分析。最近增加了透明工具鏈遙測功能,能夠根據(jù)數(shù)據(jù)改進開發(fā)人員的體驗。
未來 Go + AI 發(fā)展方向
毫無疑問,生成式 AI,尤其是 ChatGPT 等是今年最熱門的話題。也有很多讀者問過 Go 這塊 AI 有沒有打算干什么。這塊回憶錄上也給出了答復(fù)。
Go 團隊相信大多數(shù)程序員都會使用 AI 輔助工具,當前優(yōu)先考慮為 Go 開發(fā)人員提供 AI 輔助工具。
正在研究如下幾個方向:
- 如何提高模型生成的 Go 代碼的質(zhì)量?
- 我們能否區(qū)分 "好代碼 "和 "壞代碼",從而讓模型學(xué)會如何區(qū)分?
- 識別 “好代碼” 和 修復(fù) “壞代碼” 的工具本身對程序員很有用,非常有價值。
- 如果模型在現(xiàn)有的開放源碼上進行訓(xùn)練,那么它們?nèi)绾螌W(xué)會生成使用新引入的 Go 特性和庫的代碼?
我們能否利用重構(gòu)工具對訓(xùn)練數(shù)據(jù)進行 "現(xiàn)代化" 處理,使模型學(xué)會使用最新的語言特性?
Go IDE 應(yīng)該如何提示模型生成良好的 Go 代碼?
提示中需要包含哪些內(nèi)容?IDE 是否需要了解 Go 工作區(qū)布局,以便在提示中提供正確的上下文?
IDE 是否需要通過 RAG 獲取依賴代碼并將其包含在提示中?
Go 團隊主要是和 VSCode Go plugin 相關(guān)的負責(zé)人和同學(xué)在共同研究這一塊 AI 的建設(shè),因為都是 Google 的同事,也都在美國紐約。有明確的先發(fā)優(yōu)勢。
如果后面有更大的 AI 輔助工具突破,相信必然是在 VSCode IDE 先出現(xiàn)。(GoLand 有點慘的感覺?)
總結(jié)
Go 團隊目前的獲取信息來源的趨勢和考慮內(nèi)容的方式,還是比較明確的。一塊是來自 Go 社區(qū)每年都做的開發(fā)者調(diào)查,所有把泛型的漏洞給堵上了。
另外一塊是和業(yè)內(nèi)的大客戶們,尤其是 Google 內(nèi)的 Kubernetes 項目等系統(tǒng)的成員有比較高密度的聯(lián)系,為他們排憂解難。再反哺到 Go 社區(qū)本身,兼容性增強和安全性提高就是由此而生。
這有利也有弊,見仁見智了。不過對于我們用戶而言,在 AI 方面,Go 后續(xù)能有新的動作,對我們是極好的。