Go 博客

Go 语言的四年历程

Andrew Gerrand
2013年11月10日

今天是 Go 作为开源项目的第四个周年纪念日。

我们不想谈论我们的技术进步(在几周后发布 Go 1.2 时,我们会有很多话要说),而是想借此机会看看 Go 社区是如何发展壮大的。

让我们从一张图表开始

此图表显示了过去四年中 Google 搜索“golang”一词的增长情况。请注意 2012 年 3 月左右曲线中的拐点,当时 Go 1.0 发布。如果这些搜索结果可以很好地反映兴趣度,那么很明显,自从 Go 发布以来,人们对它的兴趣有了显著增长,尤其是在过去两年中。

但这种兴趣来自哪里呢?

开源社区已经拥抱了 Go,我们的社区维基列出了数百个 Go 项目。一些流行的项目包括:

  • Docker 是一种用于在轻量级容器中打包和运行应用程序的工具。Docker 简化了应用程序的隔离、打包和部署,深受系统管理员的喜爱。它的创建者 Solomon Hykes 指出 Go 的标准库、并发原语和易于部署是关键因素,并表示“简单地说,如果 Docker 不是用 Go 编写的,它就不会取得如此成功。”

  • Packer 是一种用于自动创建机器映像以部署到虚拟机或云服务的工具。它的作者 Mitchell Hashimoto 现在正在参与另一个 Go 项目,serf,这是一个去中心化的发现服务。与 Docker 一样,这些项目有助于管理大规模的基于集群的服务。

  • BitlyNSQ 是一个实时分布式消息传递平台,专为容错和高可用性而设计,并在 Bitly 和许多其他公司中用于生产环境。

  • CanonicalJuJu 基础设施自动化系统是用 Go 重写的。项目负责人 Gustavo Niemeyer 表示:“并不是 Go 的某个单一特性使其成为引人注目的选择,而是精心组织的、设计良好的小模块的组合。”

  • raft 包提供了 Raft 分布式一致性协议的实现。它是像 etcdSkyDNS 这样的 Go 项目的基础。

  • 其他流行的项目包括 biogoGorilla Web Toolkitgroupcache、Mozilla 的 heka、轻量级存储系统 kvql,以及 Sky 行为数据库。

但这仅仅是冰山一角。高质量的 Go 开源项目数量惊人。多产的 Go 程序员 Keith Rarick 说得很好:“Go 生态系统在短短四年内的发展令人惊叹。将 2013 年的 Go 与 1995 年的 Python 或 1999 年的 Java 相比。或者 1987 年的 C++!”

企业也从中受益匪浅。 Go 用户维基页面 列出了数十个成功案例(如果您使用 Go,请将自己添加到其中)。一些例子包括:

  • CloudFlare 完全使用 Go 构建了其分布式 DNS 服务,并且正在将每分钟处理数 GB 的日志基础设施迁移到该语言。程序员 John Graham-Cumming 表示:“我们发现 Go 完全满足了我们的需求:熟悉的语法、强大的类型系统、强大的网络库以及内置的并发功能的组合意味着越来越多的项目在这里使用 Go 构建。”

  • SoundCloud 是一项音频分发服务,拥有“数十个 Go 系统,几乎涵盖了网站的每个部分,在许多情况下,从头到尾为功能提供支持。” 工程师 Peter Bourgon 表示:“Go 证明了其他语言和生态系统中存在的累赘——开发人员已经学会处理的、通常是带着愤怒处理的东西——根本不是现代编程的必要组成部分。使用 Go,我与我的工具之间建立了一种简单且非对抗性的关系,从开发到生产。”

  • ngrok 服务允许 Web 开发人员向其开发环境提供远程访问。它的作者 Alan Shreve 表示,“ngrok 作为一个项目的成功,在很大程度上归功于选择 Go 作为实现语言”,他列举了 Go 的 HTTP 库、效率、跨平台兼容性和易于部署作为主要优势。

  • Poptip 提供社交分析服务,产品工程师 Andy Bonventre 表示:“最初只是用 Go 编写单个服务的实验,最终演变成将几乎我们所有的基础设施都迁移到它上面。我最喜欢 Go 的地方,与其说是语言的功能,不如说是对工具、测试和其他元素的关注,这些元素使编写大型应用程序更容易管理。”

  • 音乐协作初创公司 Splice 选择使用 Go 构建其服务。联合创始人 Matt Aimonetti 表示:“我们认真研究并考虑了许多编程语言,但 Go 的简洁性、效率、理念和社区赢得了我们的青睐。”

  • 当然,Google 的工程团队也在转向 Go。工程师 Matt Welsh 最近分享了他的经验,即用 Go 重写了一个大型生产服务。其他值得注意的公开示例包括 YouTube 的 vitess 项目dl.google.com。我们希望很快能分享更多这样的故事。

2012 年 9 月,Apcera 首席执行官 Derek Collison 预测,“Go 将在 24 个月内成为 [基础设施即服务]、[编排] 和 [平台即服务] 中系统工作的首选语言。” 查看上面的列表,很容易相信这一预测。

那么,您如何参与其中呢?无论您是经验丰富的 Go 程序员还是只是对 Go 感兴趣,都有很多方法可以开始参与 Go 社区

  • 加入您附近的 Go 用户组,在那里您的本地 gophers 会聚在一起分享他们的知识和经验。这些小组正在世界各地涌现。我本人曾在阿姆斯特丹、柏林、哥德堡、伦敦、莫斯科、慕尼黑、纽约市、巴黎、旧金山、首尔、斯德哥尔摩、悉尼、东京和华沙的 Go 小组发表过演讲;但还有更多!

  • 创建或为 Go 开源项目(或Go 本身)做出贡献。(如果您正在构建某些东西,我们很乐意在Go 邮件列表上收到您的来信。)

  • 如果您在 2014 年 2 月在欧洲,请参加在FOSDEM 2014上举行的Go 开发者空间

  • 参加在 2014 年 4 月于丹佛举行的第一届大型 Go 会议GopherCon。该活动由Gopher Academy 组织,他们还运营着Go 招聘信息板

Go 团队对 Go 社区在过去四年中的发展感到惊叹。我们很高兴看到 Go 构建了如此多的伟大作品,并深感荣幸能与我们杰出且敬业的贡献者一起工作。感谢大家。

再过四年!

下一篇文章:Go 中的文本规范化
上一篇文章:Go 中的字符串、字节、字符和字形
博客索引