Go 是 AI 辅助软件工程的理想语言

Hacker News Top 新闻

摘要

本文认为,Go 的设计理念——强调团队协作、简洁性、兼容性和强大的工具链——使其成为 AI 辅助软件工程时代的理想语言,在这个时代,审查和维护 AI 生成的代码比从头编写代码更为重要。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/08/12 08:26

# 为什么 Go 是 AI 辅助软件工程的理想语言 来源:https://developers.googleblog.com/why-go-is-an-ideal-language-for-ai-assisted-software-engineering/ Go 标志 - 蓝色 一段时间以来,软件工程经历了一场深刻而根本的转变:我们曾经手写大部分代码,如今我们请 AI 编码助手和智能体为我们生成大量代码。但 AI 需要监督,所以是我们——人类——必须阅读生成的代码、清理它,并验证它是否做了我们想让它做的事情。而且,由于 AI 对其所生成代码必须运行的更大上下文只有有限的视野,因此是我们来定义系统架构、设计服务之间的边界,并确保生产环境的整体安全性和可靠性。 在这种范式下,我们的开发者工具中最重要的东西也在发生转变。 ### **从编写到审查** 从历史上看,开发者主要通过编写代码的容易程度来衡量一门编程语言的生产力。但是,当一个编码智能体能在几秒钟内生成数百行语法正确的代码时,人类编写代码的速度就不再那么重要了。现在重要的是审查、验证和维护已经写好的代码。 换句话说,AI 越来越像你的队友——有点特立独行,但终究是队友。最重要的是我们如何作为一个团队协同工作。 ### **Go 为*****软件工程***而生 事实上,正是对团队驱动开发的考虑,促使 Rob Pike、Robert Griesemer 和 Ken Thompson 在二十多年前于 Google 创造了 Go 编程语言。当其他语言迅速增加特性并试图扩展表达程序逻辑的方式时,Go 专注于一个更大的愿景:语言设计服务于**软件工程** (https://go.dev/talks/2012/splash.article)。 软件工程与**编程** (https://research.swtch.com/vgo-eng) 不是一回事。编程是通过编写代码并运行来解决问题,而软件工程是与他人协作,设计并实现一个能随着时间演进的持久系统。编程是软件工程的一部分,但只是一部分。 服务于软件工程的语言设计不仅需要一种语言,还需要一个**端到端的平台**,其工具覆盖软件开发生命周期的各个环节。它需要**有主见的简洁性**,让整个团队能以相同的方式组织、格式化和测试代码。它需要**强大的兼容性**保证,使你今天写的代码不仅十年后仍能运行,而且在十年后仍然是**好代码**。它需要一个**强大的生态系统**,其中包含一个能随团队扩展的全局依赖管理系统。它还需要在所有这些方面贯穿**明智而稳健的安全**考虑和工具。 这些元素共同构成了可扩展、长期团队协作的基础,使我们能够构建在原始作者离开多年后仍然可维护的系统。如今 AI 加入了团队,这一基础比以往任何时候都更加重要。 ### **Go 是一个平台** Go 最显著的特点之一是,它**不仅仅是一种语言**,更是一个**平台**。从一开始,Go 就随附了一条健壮、端到端的工具链,覆盖软件开发生命周期的各个接触点。开箱即用,Go 平台提供了内置的格式化工具 (https://go.dev/blog/gofmt)、测试框架 (https://research.swtch.com/testing)、依赖管理 (https://go.dev/blog/using-go-modules) 以及高级安全工具——所有这些都可以直接从标准工具链中访问。这个平台加上一个消除了复杂外部框架需求的全面标准库,提供了无与伦比的一致性基线。 Go 平台 这些特性和工具最初是为了赋能人类而构建的,但事实证明,**AI 和人类有着惊人的相似需求**。当要求 AI 智能体在没有外部验证的情况下迭代重构代码时,它的性能会迅速下降——就像人类手工重构一样。第一遍可能 95% 正确,但连续多遍会叠加错误率并污染上下文窗口,降低准确性的同时增加 token 成本。但有了 Go,AI 模型可以利用平台的端到端工具链,更快、更便宜、更可靠地操作 Go 代码,生成更高质量、更安全、更正确的代码。 这种集成式工具还有一个次要但不太明显的好处:生态系统级的一致性。由于绝大多数 Go 开发者使用相同的核心工具,整个社区能够统一地同步前进,在运行时、IDE 和包生态系统中同时无缝采用主要语言增强特性。这种统一的方法因 Go 的标准库而得到加强,标准库通过减少程序逻辑的差异、提倡重复且可预测的惯用写法(开发者和 AI 都能更快理解),进一步提升了跨项目的一致性。这种结构性统一不仅帮助人类团队维护大型代码库,还为 LLM 创造了更干净、更标准化的训练数据。 ### **Go 具有可读性** Go 的另一个显著特点是,它将**可读性置于可写性之上** (https://spf13.com/p/go-the-agentic-language/#:~:text=Go%20was%20built,correctness%20at%20scale.)。Rob、Robert 和 Ken 意识到,开发者阅读现有代码的时间远多于编写代码。在纯人类的世界里,这种设计理念表现为一种崇尚简单而非取巧的文化 (https://go.dev/talks/2015/simplicity-is-complicated.slide#11),并明确拒绝其他语言所推崇的语法魔法。Gophers 常常说,他们喜欢自己永远无法分辨团队中谁写了某段特定代码——它看起来都一样。 在 AI 驱动开发的时代,这种“先读后写”的理念变成了一种力量倍增器。个体开发者过去可能偏爱语法简洁、隐式类型和加速原型的巧妙捷径,但**智能体工效学** (https://wesmckinney.com/blog/agent-ergonomics/)——以及相应的人工验证循环——要求的恰恰相反:可预测性、明确性和严格的结构 (https://steve-yegge.medium.com/the-future-of-coding-agents-e9451a84207c#61d4:~:text=Sure%20enough%2C%20I,coding%20systems%

相似文章

在AI时代编写高质量代码

Reddit r/artificial

本文讨论了在AI辅助下编写高质量代码的挑战和最佳实践,强调需要进行严格的代码审查,避免盲目信任AI生成的输出。

就用Go

Lobsters Hottest

一篇带有强烈观点的开发者文章倡导使用Go编程语言,强调其简洁的语法、强大的标准库、高效的并发模型以及单二进制部署,作为对过于复杂的现代技术栈的实用替代方案。