Go 博客

Go 迎来 10 周年

Russ Cox,为 Go 团队撰写
2019 年 11 月 8 日

生日快乐,Go!

这个周末,我们庆祝 Go 发布 10 周年,标志着 Go 作为一种用于构建现代网络软件的开源编程语言和生态系统迎来了它的 10 岁生日。

为纪念这一时刻,Renee FrenchGo Gopher 的创作者,创作了这幅令人愉悦的场景。

庆祝 Go 的 10 年让我回想起 2009 年 11 月初,当时我们正准备与世界分享 Go。我们不知道会得到什么样的反响,不知道是否会有人关心这门小小的语言。我希望即使最终没有人使用 Go,我们也能引起人们对一些好想法的关注,尤其是 Go 在并发和接口方面的处理方式,这些想法可能会影响后续的语言。

一旦人们对 Go 表现出热情,我就开始研究 C、C++、Perl、Python 和 Ruby 等流行语言的历史,并研究它们各自获得广泛认可所需的时间。例如,在我看来,Perl 在 20 世纪 90 年代中后期就已完全成熟,伴随着 CGI 脚本和网络的发展,但它实际上是在 1987 年首次发布的。这种模式几乎出现在我研究过的每一种语言中:一种新的语言似乎都需要大约十年时间才能通过默默的、持续的改进和传播,最终真正腾飞。

我想知道:十年后 Go 会在哪里?

今天,我们可以回答这个问题:Go 无处不在,在全球拥有至少 一百万开发者在使用。

Go 最初的目标是网络系统基础设施,也就是我们现在所说的云软件。如今,每个主要的云服务提供商都在使用用 Go 编写的核心云基础设施,例如 Docker、Etcd、Istio、Kubernetes、Prometheus 和 Terraform;云原生计算基金会的大部分项目都是用 Go 编写的。无数公司也正在使用 Go 将自己的业务迁移到云端,从从头开始构建的初创公司到正在对其软件栈进行现代化的企业。Go 也已经超出了其最初的云目标,其应用范围广泛,从使用 GoBotTinyGo 控制小型嵌入式系统,到在 GRAIL 进行大规模大数据分析和机器学习以检测癌症,以及介于两者之间的各种应用。

这一切都表明,Go 的成功超出了我们最狂野的梦想。而 Go 的成功不仅仅在于语言本身。它在于语言、生态系统,尤其是社区的共同努力。

2009 年,这门语言只是一个好想法,有一个可行的草图实现。当时还没有 go 命令:我们使用 6g 来编译,6l 来链接二进制文件,并使用 makefiles 自动化。我们在语句末尾输入分号。整个程序在垃圾回收期间会停止,而当时的垃圾回收器很难充分利用两个核心。Go 只在 Linux 和 Mac 上运行,支持 32 位和 64 位 x86 以及 32 位 ARM。

在过去十年里,在世界各地 Go 开发者的帮助下,我们将这个想法和草图发展成了一种高效的语言,拥有了出色的工具、生产级的实现、最先进的垃圾回收器,以及支持 12 种操作系统和 10 种架构的移植

任何编程语言都需要一个蓬勃发展的生态系统的支持。开源发布是该生态系统的种子,但此后,许多人贡献了他们的时间和才华,用很棒的教程、书籍、课程、博客文章、播客、工具、集成,当然还有可以通过 go get 导入的可重用 Go 包来充实 Go 生态系统。没有这个生态系统的支持,Go 永远不可能成功。

当然,生态系统需要一个活跃的社区来支持。2019 年,世界各地有几十个 Go 会议,以及超过 150 个 Go 聚会小组,拥有超过 90,000 名成员GoBridgeWomen Who Go 通过指导、培训和会议奖学金,帮助为 Go 社区带来新的声音。仅在今年,他们就在工作坊中为数百名来自传统代表性不足群体的学员进行了培训,社区成员在这些工作坊中指导刚接触 Go 的人。

全球有超过一百万 Go 开发者,全球各地的公司都在寻求招聘更多人。事实上,人们经常告诉我们,学习 Go 帮助他们获得了在科技行业的第一份工作。最终,我们对 Go 最引以为豪的不是一个设计精良的功能或一段巧妙的代码,而是 Go 在如此多人的生活中产生的积极影响。我们的目标是创造一种能够帮助我们成为更好的开发者的语言,我们很高兴 Go 帮助了这么多其他人。

随着 #GoTurns10 的到来,我希望每个人都能花点时间庆祝 Go 社区以及我们所取得的一切成就。我谨代表 Google 的整个 Go 团队,感谢过去十年里与我们同行过的每一个人。让我们一起让下一个十年更加精彩!

下一篇文章:Go.dev:Go 开发者的新枢纽
上一篇文章:Go Modules:v2 及后续版本
博客索引