Go 语言现状调查报告

Read this post in other languages:
English, Français, 한국어, Русский

在当今流行的编程语言中,Go 语言名列前茅。Go 语言热情、有趣并以其快速高效的特点深受社区的青睐,但值得我们了解的还有更多。 我们对有关 Go 语言的可用信息做了更深入的研究,以期有更多发现。 我们的常驻 Go 专家、GoLand 的布道师 Florin Pățan 受邀根据调查结果提供他的见解,探明 Go 的现状。

在哪儿

约 110 万开发者

总体来说有 110 万专业的开发者 选择 Go 作为其主要开发语言。但如果我们将那些以其他编程语言作为主要开发语言,却同时使用 Go 的开发人员也算在内,这一数字就将高达 270 万

就其全球分布而言, 居住在亚洲的开发者最多,大约有 57 万开发者使用 Go 作为其主要开发语言。

专家分析

这符合我对 Go 开发区域分布的预期。亚洲的 Go 用户数量排名第一,我想这是因为那里有大量来自腾讯、阿里巴巴和华为等大公司的开发者。 这些公司通常都有很多开发者。

具体在哪儿

下图显示了我们在 开发人者生态系统调查 2020 中调查的每个国家使用 Go 作为主要语言的开发者的分布情况(受访者最多可以选择 3 种主要语言)。 中国的开发者集中度最高,有 16% 的中国开发者使用 Go 语言。

专家分析

我对中国位居榜首并不感到意外。 我本以为俄罗斯会排第二,美国会更高一些,也许会排进前五。

中国之所以排在首位,可能是因为那里的开发者非常多。 我知道的很多公司,比如 PingCAP、腾讯和华为都有很多开发者,能够支持并构建与微服务结合的内部工具、架构和后端服务。这一点似乎很关键。

我知道俄罗斯的 Go 语言社区相当出色,Go 在那里深受欢迎自然也不足为奇了。我对日本和乌克兰的结果很好奇,因为我没想到他们会这么高,我预计德国和印度会高一点。我记得早在四五年前,我在柏林的时候,我了解到的几乎所有创业公司都在使用 Go。

行业洞察

根据开发者生态系统调查 2020, 是专业开发者的前前10大主要语言之一,占 7% 的份额。

专家分析

我认为 Go 从未停止发展。 人们通常不会以 Go 作为第一门编程语言,而倾向于从其他语言(如 PHP 和 Ruby)迁移到 Go,但据我所知,主要是从 C++ 和 C# 迁移到 Go。

与 PHP 相比,Go 的优势在于类型安全,因为 Go 是静态类型的语言,而 PHP 是动态的。 这意味着由编译器将完成大部分工作,确保您编写的代码将在运行时能够正常地编译和运行。 与 C++ 相比,Go 的优势在于简单。Go 语言中,一切都很直观。

总的来说,Go 的特点是在编写代码和运行时都具有很高的内置速度。通常,使用 Go 语言您可以没有任何特殊优化的情况下获得5-10 倍的性能提升,这对企业而言是很关键的生产力优势。同时它简单、易于上手,并且很容易替换现有项目中的微服务。

许多 IT 架构工具由 Go 构建而成,例如大型的 Kubernetes、Docker 和 Vault 等。 因此,尽管有许多公司在使用 Java,但这些公司也都会有一个团队执行 Go ,特别是此类项目的修补和维护。这或许也是一个 Go 语言正在逐步被更多的人所接受的原因,在公共基础架构和部署中使用得越多,Go 的使用增长就越快。
因此,我认为未来几年会有越来越多的人开始使用 Go,其比例可能会达到 15-20%,特别是考虑到开发者生态系统调查中的问题“您打算在今后 12 个月内采用/迁移到其他语言吗? 如果有计划,是哪种(哪些)?”其中 13% 的受访者回答了 Go。

Go 语言开发的软件类型

Web 服务是 Go 语言开发最受欢迎的领域,开发者生态系统调查 2020 结果显示,其占比达到了36%。

专家分析

对于 Web 服务,我认为首要任务是创建快速的 API 服务器。它们不一定需要框架,所以您可以使用 Go 快速启动和运行。

我不认为这张图未来会发生太大的变化。我觉得未来 Web 服务的所占比例会增长,因为用 Go 语言来上手确实很轻松。

对于 "实用小程序",情况大致相同。可以处理大量数据的快速应用、小型实用程序应用或需要大量功能的一次性任务用 Go 语言都很容易实现。IT 架构的情况也说得通。采用 Docker 和 Kubernetes 的人越多,使用 Go 的人就越多,因为它们都是用 Go 编写的。 任何类型的 DevOps 工作都可以从 Go 中特别受益,因为 Go 提供了类型安全和更快的速度。 与基础架构的交互也变得容易 – Google, Amazon, 以及 Azure 等都有很好的SDK。 我想当未来泛型到来之后,“Libraries / Frameworks” 会有一定提升。

系统软件 – 我认为随着越来越多的人开始使用 Rust 这样的系统软件,它会开始下降。 数据库也一样。因此在未来充满商机的情况下,大概会占到 6% 左右。编程工具 – 我很惊讶它居然这么靠前,我十分好奇 Go 都打造了哪些编程工具。

使用 Go 的主要行业

根据开发者生态系统调查 2020, Go 程序员主要从事 IT 服务,其次是 金融和金融科技云计算 / 云平台, 和其他行业。

专家分析

金融和金融科技。这是我所希望看到的,据我所知已经有相当多的银行已经采用或正在使用 Go 语言开发的基础架构。例如,英国的 Monzo 使用 Go 构建了他们的整个银行系统。云计算和云平台的情况也很合理,因为很多种应用程序都是以 Go 编写的。

移动开发,这是意料之外的。Go 并没有良好的移动开发的历史。如果有,我想人们有可能会用 Go 为移动应用制作 Web 服务或后端,但也仅此而已。

有几个行业我预计 Go 的使用率不会在短期内出现增长。例如那些基于机器学习的领域,那是 Python 的强项。Go 中的机器学习也在朝着更普及、更优良的方向前进,但我认为至少还要几年才能真正看到成果。

Go 工具

包管理工具

Go Modules 是 Go 开发者最喜爱的软件包管理器。根据开发者生态系统调查 2020,其采用率从 2019 年的 41% 上升至2020的 82%。

专家分析

我认为在某种程度上我们已经不必再问这个问题了,因为 Go Modules 已经被设置为标准默认模型,并且 Go 团队也想弃用 GOPATH。那时候其他的一切可能都会被淘汰。

Go 路由

根据2020 年和 2018 年的开发者生态系统调查,自 2018 年以来,Gorilla / Mux标准库始终是最常用的 Go 路由器。

专家分析

标准库之所以如此受欢迎,可能是因为无论在 Reddit、Slack 还是其他地方,人们通常都会建议坚持使用标准库,不到万不得已不会换用其他东西。 我使用 gorilla/mux,因为在标准库的基础上更加抽象,而性能不会受太多影响。 这也可能是因为这是最接近标准库的一个,它使编写服务器更容易。总的来说,这种分布大概和预想的一样。

5 大 Web 框架

根据 2020 年和 2018 年开发者生态系统的调查,自 2018 年以来,Gin 的使用量几乎翻了一番,而其他 Web 框架基本保持稳定。

专家分析

Gin 在 web 上如此受欢迎,可能是因为它是一个快速框架,也得到了很好的推荐。它同时也是最古老的框架之一。所以有很多现成的文档,很多用户已经在使用和推荐它。

测试框架

使用内置测试的开发者比例从 2018 年的 64% 下降到 2020 年的 44%,而其他测试框架的使用量略有增长。

专家分析

内置测试占比很高,是因为 Go 标准库有一个非常好的开箱即用的测试库。

内置测试的下降可能是因为越来越多的人转移自其他语言,比如 PHP,他们更倾向于重复他们已有的测试习惯。

讨论最多的 Go 工具和其他语言

IT 社区经常讨论 Go,Stack Overflow 就是其中之一。 我们从问答区的数据中找出最常与“Go”一同出现的标签。 其中,有 23 种工具和 2 种语言 -“MySQL”和“PostgreSQL”。 除了工具外,与其他主要语言也有共存。 纵轴表示标签出现的总数,横轴表示带有“Go”的标签的提及。

专家分析

我料到 JSON 会成为一个问题。把 Go 的数据结构序列化和反序列化成 JSON 确实很不容易,这或许是 JSON 如此醒目的原因。 struct 之所以出现,是因为来自其他语言的人通常很难理解这个问题,除非他们来自 C++ 或 C 语言。

根据 Amazon Web Services 自身的普及程度,我预计 AWS 这里会有很多问题。现在为 Google App Engine 开发 Go 应用程序更简单了,之前还不是如此,所以才会有这么多问题。

总而言之,成为 Go 社区的一员让我感受到了这是一个非常有趣且包容的社区。 新人总会得到支持,也被鼓励提出问题和探索语言。 对于一般主题,最常讨论的是泛型以及一些语言的改进、编译器的改进等。

尤其是泛型,因为它是语言最需要的功能之一,很多工作负载都可以从这个功能中受益。

您的团队有兴趣试试 GoLand 吗? 即刻获取不限用户数量的试用吧!

点击获取!

Go