Go 团队近两年在做什么,AI 方面如何发力?

大家好,我是煎鱼。

本文继续承接 @Sameer Ajmani 的回忆录《Go 和 Google、Cloud 融合的那么深,绝非偶然》,他现在作为 Google 工程总监 ,负责领导 Go 编程语言团队。

本次也给出了 Go 这两年大的关键变动说明,更重要的是提及了 Go 计划在生成式 AI 方面的发力方向。

今天由煎鱼结合分享一下,看看未来会发生什么变化。

最近几年做了什么

马后炮一下,在过去的几年(2022-2024 年),Go 这门编程语言及其生态系统在不断地变得成熟。

Go 官方团队认为,Go 作为可扩展云应用的首选语言,Go 将会继续保持强劲的增长势头。大业务环境下,云计算市场的复合年增长率 (CAGR) 超过 15%,因此 Go 生态系统的前景非常光明。

近年来功能特性的关键更新,TOP7 如下:

  1. Go 添加了泛型:解决了自 Go 1.0 以来最重要的语言功能请求。这是每次用户调查中用户提的最多的特性诉求。
  2. 增强了向后兼容性:新增了的 GODEBUG 功能标志,这使得 Kubernetes 等主要系统能够扩展其支持窗口。
  3. 增强了向前兼容性:使得能够修复长期存在的 Go 语言的编程问题,例如:foor-loop 共享变量这类 "疑难杂症"。
  4. 软件供应链安全性 :大大提高了 Go 项目本身的软件供应链安全性,有兴趣的同学可阅读《Perfectly Reproducible, Verified Go Toolchains》。
  5. 标准库更完善:向标准库添加了 slog 结构化日志记录,改进了 HTTP 路由的支持
  6. 性能可以更强悍:新增了配置文件引导优化(PGO)的支持,PGO 可以极大的提高程序效率,达到更多的性能目标。
  7. Go IDE 改进:对 VS Code 和 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 后续能有新的动作,对我们是极好的。

文章持续更新,可以微信搜【脑子进煎鱼了】阅读,本文 GitHub github.com/eddycjy/blo... 已收录,学习 Go 语言可以看 Go 学习地图和路线,欢迎 Star 催更。

推荐阅读

相关推荐
十字路口的火丁19 分钟前
在 Go 项目中如何使用 mockgen 提升单元测试效率?
go
DemonAvenger3 小时前
Go GOGC环境变量调优与实战案例
性能优化·架构·go
DemonAvenger6 小时前
Go sync.Pool 最佳实践:复用对象降低 GC 压力的技术文章
性能优化·架构·go
程序员爱钓鱼6 小时前
Go 并发编程基础:select 多路复用
后端·google·go
程序员麻辣烫8 小时前
Go的优雅退出
后端·go
zhuyasen9 小时前
深度定制 protoc-gen-go:实现结构体字段命名风格控制
后端·go·protobuf
油腻中年李大鹅1 天前
使用scheduler-plugins实现自定义调度器
kubernetes·go
DemonAvenger1 天前
减少内存分配:Go中值类型与指针类型的选择
性能优化·架构·go
Piper蛋窝1 天前
我所理解的 Go 的 `panic` / `defer` / `recover` 异常处理机制
后端·go
叹一曲当时只道是寻常1 天前
AI书签管理工具开发全记录(十三):TUI基本框架搭建
ui·go