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