Go 博客

Go 十周年

Russ Cox,代表 Go 团队
2019 年 11 月 8 日

Go 生日快乐!

这个周末,我们庆祝 Go 发布十周年,标志着 Go 作为构建现代网络软件的开源编程语言和生态系统满十岁了。

为了纪念这个时刻,Renee FrenchGo 地鼠的创作者,绘制了这幅令人愉快的场景

庆祝 Go 十周年让我回想起 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;云原生计算基金会(Cloud Native Computing Foundation)的大部分项目都是用 Go 编写的。无数公司也在使用 Go 将自身工作迁移到云端,从从零开始构建的初创公司到现代化软件栈的企业。Go 的应用范围也远远超出了最初的云目标,其用途涵盖了使用GoBotTinyGo控制小型嵌入式系统,到使用大规模大数据分析和机器学习在GRAIL检测癌症,以及介于两者之间的所有应用。

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

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

在过去十年中,在世界各地 Go 开发者们的帮助下,我们将这个想法和草图发展成一门富有成效的语言,它拥有出色的工具链、生产级质量的实现、先进的垃圾收集器,并已移植到 12 种操作系统和 10 种架构上。

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

当然,生态系统需要一个蓬勃发展的社区支持。2019 年,世界各地举办了几十场 Go 会议,同时还有150 多个 Go meetup 小组,成员超过 9 万人GoBridgeWomen Who Go 通过指导、培训和会议奖学金,帮助将新声音带入 Go 社区。仅今年一年,他们在社区成员教授和指导 Go 新人的工作坊中,就教授了数百名来自传统上代表不足群体的人。

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

#GoTurns10之际,我希望大家能花点时间庆祝 Go 社区以及我们取得的所有成就。我代表谷歌的整个 Go 团队,感谢过去十年中所有加入我们的人。让我们让下一个十年更加精彩!

下一篇文章:Go.dev:Go 开发者的新中心
上一篇文章:Go Modules:v2 及更高版本
博客索引