Skip to content

和我一起迎接 Go 的黄金时代

上图是,截止2023 年 10 月,著名的编程语言排名指数TIOBE发布的程语言排名情况,可以看到Go 语言排名第 11 位;稳中前进,预计很快就可以跻身最受欢迎的开发语言前十之列;同时在当月排名的配文中,我们也不难看出,TIOBE 对 Go 发展趋势的看好。

相较于目前市场占比较高的传统Web开发语言,Java / Python / PHP,Go 作为后起之秀,可谓是占尽天时地利;

名家设计(三巨头)、出身豪门(谷歌)、杀手应用(Kubernetes)、精英团队(Google 专职开发团队)

Go 语言的创始人有三位,分别是:

  • 图灵奖获得者、C 语法联合发明人、Unix 之父肯·汤普森(Ken Thompson)
  • Plan 9 操作系统领导者、UTF-8 编码的最初设计者罗伯·派克(Rob Pike)
  • 以及 Java 的 HotSpot 虚拟机和 Chrome 浏览器的 JavaScript V8 引擎的设计者之一罗伯特·格瑞史莫(Robert Griesemer)。

Go诞生的小故事

2007 年 9 月 20 日,在谷歌山景城总部的那间办公室里,罗伯·派克启动了一个 C++ 工程的编译构建。按照以往的经验判断,这次构建大约需要一个小时。利用这段时间,罗伯·派克和罗伯特·格瑞史莫、肯·汤普森坐在一处,交换了关于设计一门新编程语言的想法。

之所以有这种想法,是因为当时的谷歌内部主要使用 C++ 语言构建各种系统,但 C++ 的巨大复杂性、编译构建速度慢以及在编写服务端程序时对并发支持的不足,让三位大佬觉得十分不便,他们就想着设计一门新的语言。在他们的初步构想中,这门新语言应该是能够给程序员带来快乐、匹配未来硬件发展趋势并适合用来开发谷歌内部大规模网络服务程序的。

趁热打铁!在第一天的简短讨论后,第二天这三位大佬又在谷歌总部的“雅温得(Yaounde)”会议室里具体讨论了这门新语言的设计。会后罗伯特·格瑞史莫发出了一封题为“prog lang discussion”的电邮,对这门新编程语言的功能特性做了初步的归纳总结.

这封电邮对这门新编程语言的功能特性做了归纳总结。主要思路是,在 C 语言的基础上,修正一些明显的缺陷,删除一些被诟病较多的特性,增加一些缺失的功能,比如,使用 import 替代 include、去掉宏、增加垃圾回收、支持接口等。这封电邮成为了这门新语言的第一版特性设计稿,三位大佬在这门语言的一些基础语法特性上达成了初步一致。 9 月 25 日,罗伯·派克在一封回复电邮中把这门新编程语言命名为**“go”**:

时间已经来到了 2023 年。经过了十余年的打磨与优化,如今的 Go 语言已经逐渐成为了云计算时代基础设施的编程语言。你能想到的现代云计算基础设施软件的大部分流行和可靠的作品,都是用 Go 编写的,比如:Docker、Kubernetes、Prometheus、Ethereum(以太坊)、Istio、CockroachDB、InfluxDB、Terraform、Etcd、Consul 等等。当然,这个列表还在持续增加,可见 Go 语言的影响力已经十分强大。

Go 除了在云计算基础设施领域,拥有上面这些杀手级应用之外,Go 语言的用户数量也在近几年快速增加。Go 语言项目技术负责人罗斯·考克斯甚至还专门写过一篇文章,来估算全世界范围的 Gopher 数量。按照他的估算结果,全世界范围的 Gopher 数量从 2017 年年中的最多 100 万,增长到 2019 年 11 月的最多 196 万,大概两年半翻了一番。庞大的 Gopher 基数为 Go 未来的发展提供持续的增长潜力和更大的想象空间。


而且,Go 语言在国内的发展也是越来越好。大厂方面,腾讯公司近几年在 Go 语言方面投入很大,不仅让 Go 语言成为其公司内部增速最快的语言,腾讯还在 2021 年发布和开源了多款基于 Go 开发的重量级产品。

字节跳动更是国内大厂中拥抱 Go 语言最积极的公司之一,它的技术体系就是以 Go 语言为主,公司里有超过 55%的服务都是采用 Go 语言开发的。长期的 Go 实践让字节跳动内部积累了丰富的 Go 产品和经验,2021 年字节也开启了对外开源之路,并且一次性放出了若干个基于 Go 的微服务框架与中间件产品,包括 kitex、netpoll、thriftgo 等。这些开源项目统一放在https://github.com/cloudwego下面了。

2022 年,Go 语言的最大事件就是 3 月份 Go 1.18 的发布以及 Go 泛型的落地。泛型的加入势必会给 Go 社区带来巨大影响。随之而来的将是位于各个层次的 Go 包的重写或重构:底层库、中间件、数据结构 / 算法库,乃至业务层面。这一轮之后,Go 社区将诞生有关于 Go 泛型编码的最佳实践,这些实践也会反过来为 Go 核心团队提供 Go 泛型演化与在标准库中应用的素材。

按照 Go 语言的调性,在加入泛型后,Go 在语法层面上很难再有大的改变了,错误处理将是最后一个硬骨头,也许在泛型引入后,Go 核心团队能有新的解决思路。剩下的就是对 Go 编译器、运行时层、标准库以及工具链的不断打磨与优化了。到时候,我们就坐收这些优化所带来的红利就可以了。

经过这些对 Go 语言当前状态和未来可能演化路线的分析,你是不是对 Go 的未来更加有信心了呢?

最后,在 Go 即将迎来黄金十年的历史时刻,希望你能在 Go 语言之路上走的更远,并实现你的个人价值。

上次更新于: