Go 博客
Go 十周年
Go 生日快乐!
本周末,我们庆祝 Go 发布十周年,标志着 Go 作为一种开源编程语言和构建现代网络软件的生态系统诞生十周年。
为了纪念这一时刻,Renee French,Go 松鼠的创作者,绘制了这幅令人愉快的场景
庆祝 Go 十周年让我回想起 2009 年 11 月初,当时我们正准备与世界分享 Go。我们不知道会有什么样的反响,也不知道是否有人会关心这种小语言。我希望即使最终没有人使用 Go,我们至少也能引起人们对一些好想法的关注,特别是 Go 在并发和接口方面的方法,这些方法可能会影响后续的语言。
一旦人们对 Go 表现出兴奋之情,我就查看了 C、C++、Perl、Python 和 Ruby 等流行语言的历史,考察了每种语言需要多长时间才能被广泛采用。例如,在我看来,Perl 在 20 世纪 90 年代中后期随着 CGI 脚本和 Web 的出现而完全成型,但它最早于 1987 年发布。这种模式几乎出现在我查看的每种语言中:似乎需要大约十年的时间才能让一种新语言真正流行起来,这期间需要进行安静、稳定的改进和传播。
我想知道:十年后 Go 会是什么样子?
今天,我们可以回答这个问题:Go 无处不在,至少被 全球一百万名开发人员使用。
Go 最初的目标是网络系统基础设施,我们现在称之为云软件。如今,每个主要的云提供商都使用 Go 编写的核心云基础设施,例如 Docker、Etcd、Istio、Kubernetes、Prometheus 和 Terraform;大多数 云原生计算基金会 (CNCF) 的项目都是用 Go 编写的。无数公司也在使用 Go 将自己的工作迁移到云端,从初创公司到企业,都在对软件栈进行现代化改造。Go 的应用也远远超出了其最初的云目标,其用途从使用 GoBot 和 TinyGo 控制微型嵌入式系统到使用 GRAIL 进行海量大数据分析和机器学习以检测癌症,以及介于两者之间的所有内容。
所有这一切都说明,Go 的成功超出了我们的预期。Go 的成功不仅在于语言本身。它还包括语言、生态系统,尤其是共同努力的社区。
2009 年,这门语言只是一个好主意,并有一个正在运行的实现草图。go
命令尚不存在:我们运行诸如 6g
来编译和 6l
来链接二进制文件的命令,并使用 makefile 自动化。我们在语句末尾输入分号。整个程序在垃圾回收期间停止,然后该程序难以充分利用两个内核。Go 仅在 Linux 和 Mac 上运行,在 32 位和 64 位 x86 以及 32 位 ARM 上运行。
在过去十年中,在全球各地 Go 开发人员的帮助下,我们将这个想法和草图发展成了一种高效的语言,它拥有出色的工具、生产质量的实现、 最先进的垃圾回收器以及 移植到 12 个操作系统和 10 个架构。
任何编程语言都需要一个蓬勃发展的生态系统的支持。开源发布是该生态系统的种子,但从那时起,许多人贡献了他们的时间和才能,为 Go 生态系统提供了很棒的教程、书籍、课程、博客文章、播客、工具、集成,当然还有可使用 go
get
导入的可重用 Go 软件包。如果没有这个生态系统的支持,Go 绝不可能成功。
当然,生态系统需要一个蓬勃发展的社区的支持。在 2019 年,全世界有数十场 Go 会议,以及 超过 150 个 Go 聚会小组,拥有超过 90,000 名成员。GoBridge 和 Women Who Go 通过指导、培训和会议奖学金帮助新声音加入 Go 社区。仅今年一年,他们在研讨会上就培训了数百名来自传统上代表性不足群体的学员,社区成员在这些研讨会上教授和指导 Go 新手。
全球有 超过一百万名 Go 开发人员,世界各地的公司都在寻求招聘更多人才。事实上,人们经常告诉我们,学习 Go 帮助他们在科技行业找到了第一份工作。归根结底,我们对 Go 最自豪的不是精心设计的特性或巧妙的代码片段,而是 Go 对许多人生活产生的积极影响。我们的目标是创造一种可以帮助我们成为更优秀的开发人员的语言,我们很高兴 Go 也帮助了如此多人。
随着 #GoTurns10,我希望每个人都能花点时间庆祝 Go 社区和我们取得的所有成就。代表 Google 的整个 Go 团队,感谢所有在过去十年中加入我们的人。让我们一起让未来更加精彩!