大家好,我是煎鱼。
本文继续承接 @Sameer Ajmani 的回忆录《Go 和 Google、Cloud 融合的那么深,绝非偶然》,他现在作为 Google 工程总监 ,负责领导 Go 编程语言团队。
本次也给出了 Go 这两年大的关键变动说明,更重要的是提及了 Go 计划在生成式 AI 方面的发力方向。
今天由煎鱼结合分享一下,看看未来会发生什么变化。
最近几年做了什么
马后炮一下,在过去的几年(2022-2024 年),Go 这门编程语言及其生态系统在不断地变得成熟。
Go 官方团队认为,Go 作为可扩展云应用的首选语言,Go 将会继续保持强劲的增长势头。大业务环境下,云计算市场的复合年增长率 (CAGR) 超过 15%,因此 Go 生态系统的前景非常光明。
近年来功能特性的关键更新,TOP7 如下:
- Go 添加了泛型:解决了自 Go 1.0 以来最重要的语言功能请求。这是每次用户调查中用户提的最多的特性诉求。
- 增强了向后兼容性:新增了的 GODEBUG 功能标志,这使得 Kubernetes 等主要系统能够扩展其支持窗口。
- 增强了向前兼容性:使得能够修复长期存在的 Go 的编程问题,例如:foor-loop 共享变量这类 "疑难杂症"。
- 软件供应链安全性:大大提高了 Go 项目本身的软件供应链安全性,有兴趣的同学可阅读《Perfectly Reproducible, Verified Go Toolchains》。
- 标准库更完善:向标准库添加了 slog 结构化日志记录,改进了 HTTP 路由的支持。
- 性能可以更强悍:新增了配置文件引导优化(PGO)的支持,PGO 可以极大的提高程序效率,达到更高的性能目标。
- Go IDE 改进:对 VSCode 和 Gopls 做了改进,提高了性能,更多的支持静态分析。最近增加了透明工具链遥测功能,能够根据数据改进开发人员的体验。
未来 Go + AI 发展方向
毫无疑问,生成式 AI,尤其是 ChatGPT 等是今年最热门的话题。也有很多读者问过 Go 这块 AI 有没有打算干什么。这块回忆录上也给出了答复。
Go 团队相信大多数程序员都会使用 AI 辅助工具,当前优先考虑为 Go 开发人员提供 AI 辅助工具。
正在研究如下几个方向:
- 如何提高模型生成的 Go 代码的质量?
- 我们能否区分 "好代码 "和 "坏代码",从而让模型学会如何区分?
- 识别 “好代码” 和 修复 “坏代码” 的工具本身对程序员很有用,非常有价值。
- 如果模型在现有的开放源码上进行训练,那么它们如何学会生成使用新引入的 Go 特性和库的代码?
我们能否利用重构工具对训练数据进行 "现代化" 处理,使模型学会使用最新的语言特性?
Go IDE 应该如何提示模型生成良好的 Go 代码?
提示中需要包含哪些内容?IDE 是否需要了解 Go 工作区布局,以便在提示中提供正确的上下文?
IDE 是否需要通过 RAG 获取依赖代码并将其包含在提示中?
Go 团队主要是和 VSCode Go plugin 相关的负责人和同学在共同研究这一块 AI 的建设,因为都是 Google 的同事,也都在美国纽约。有明确的先发优势。
如果后面有更大的 AI 辅助工具突破,相信必然是在 VSCode IDE 先出现。(GoLand 有点惨的感觉?)
总结
Go 团队目前的获取信息来源的趋势和考虑内容的方式,还是比较明确的。一块是来自 Go 社区每年都做的开发者调查,所有把泛型的漏洞给堵上了。
另外一块是和业内的大客户们,尤其是 Google 内的 Kubernetes 项目等系统的成员有比较高密度的联系,为他们排忧解难。再反哺到 Go 社区本身,兼容性增强和安全性提高就是由此而生。
这有利也有弊,见仁见智了。不过对于我们用户而言,在 AI 方面,Go 后续能有新的动作,对我们是极好的。