《Go 并发编程实战》第二版 - 序

收到郝林邀约为《Go 并发编程实战》第二版写一篇序的时候,正好在湾区参加 Google NEXT 2017 大会。偶遇到《Go In Action》一书的中文译者李兆海从慕尼黑到湾区出差,他从七牛加入到 Google 已接近一年的时间。遂约他在 Google 的腹地 Mountain View 小聚,想听听他从国内 Golang 语言重度使用的公司跳槽到 Golang 语言发源的公司之间的经历和感受。

然而席间讨论最多的不是 Golang 在 Google 的使用和发展,而是对 Google 工程能力的感慨。从回归测试、应用部署或是系统伸缩,无一不是配置几个参数,动动鼠标就能完成,和国内很多公司动则人拉肩扛搞系统上线或跪拜原始繁重的 IPD 流程真是天壤之别,让我这样在也号称是国内大厂工作的人汗颜。其背后先进的工程理念和开放的工程师文化,无一不推动 Google 这架巨大的商业机器缓慢前行,虽然每次的改动改动都看似微乎其微,但汇聚在一起形成的动力是澎湃和持续的。

这样公司生产的新一代编程语言,设计中无不透露这工程化的气息。Golang 每个版本发布的新特性看似都十分微小,但每隔半年就有一个 major version release 到社区,包含了众多的 Bug Fix 和特性,当回头看看 1.0 到 1.8 版本的变化,发现 Golang 已经成熟了很多,已然能够担当我们工作中的主要编程语言,这种发展节奏的控制也正是 Google 工程理念和文化的缩影。又如 Golang 的 Core Team 一直跟随着 HTTP/2 的草案,不停的在版本中发布特性支持,在最新的 1.8 版本中终于加入了 Push 特性的支持,这一步一步的进展也正是跟随 HTTP/2 在业界推进脚步,同时加入了 HTTP Tracing 的支持更是工程化中实用性的表现。

接触 Golang 语言还是在 2013 年开始研究 Docker 的时候,Docker 在开源之前把内部的 Python 版本用 Golang 语言重新进行了实现。从 Docker 击败 LXC 成为容器领域的事实标准开始,到现在 Kubernetes 成为 Cloud Native 编排首选,Golang 语言成为 Cloud Native 领域的基石,因此许多人把 Golang 语言定义为新一代云计算的 “C” 语言。在容器技术已经悄然落地成为软件基础平台的首选、微服务大行其道的今日,我更愿意 Golang 能够替代 Java ,简洁的语法、清晰的结构、高效的并发、完整的工具链都让 Golang 成为企业级开发的首选语言成为可能。

很多人认为 Golang 语言的成功是源于某些项目的成功,其实真正动力来源于社区。在中国有一群积极的人在推动 Golang 社区的发展,像国内最早的 Golang 语言布道者许世伟、积极组织 Gopher China 大会的谢孟军、贡献 Codis、 TiDB 这样的优秀 Golang 开源项目的刘奇,让人汗颜的是我只是在一些会议和 Meetup 活动中进行过宣讲。个人最佩服的还是坚持组织 Golang Meetup 并写书的郝林,能把本书更新到第二版着实不易。第二版相比第一版在语法基础部分做了删减,并根据 Golang 新版本的变化做了更定。这符合当前国内社区的状况,Golang 已经在很多公司和很多优秀的项目上落地,开发者更多需要实践的指导。

正是这些社区的力量让中国成为 Golang 语言发展最快和热度最高的国度,真诚的感谢为社区发展贡献力量的布道者、活动组织者、Maintainer、Contributor 、作者和出版社,是你们让 Golang 社区在国内蓬勃发展成为可能,希望本书的广大读者能积极参与社区的讨论、活动,贡献更多优秀的开源项目。维护一个健康的社区对于社区中的每个人都是非常有利的。

Thanks,

Hammersmith, London

18-03-2017