2021年Go趋势报告
在当今最流⾏的编程语⾔列表⾥,Go语⾔⼀直是名列前茅。众所周知 Go 语⾔现在很⽕,写 Go 代码也很有意思,Go 在社区也很受⽤户欢迎,主要是 Go 语⾔的速度块,效率⾼。除了这些众所周知的优点之外,我们期待发现 Go 更多不为⼈知的信息。为了发现更多的事实,我们在⽬前 Go 现有信息的基础上,进⾏了深⼊研究。我们邀请了Go 语⾔专家、Goland 开发倡导者 Florin Păţan 来发表他对 Go 语⾔发展趋势的看法。
在哪⼉
约 110 万 Go 开发者
总的来说,⼤约有 110 万专业的 Go 开发者使⽤ Go 作为主要开发语⾔。如果我们把那些使⽤其他语⾔作为主⼒开发语⾔,但是把 Go 当作业余爱好的开发⼈员算在内的话,这⼀数字可能接近 270 万。
就全球分布⽽⾔,居住在亚洲的 Go 开发者最多,⼤约有 57 万开发者使⽤ Go 作为主要开发语⾔。
专家分析:
这也正是我最期待的使⽤ Go 开发的地⽅。就 Go ⽤户数量⽽⾔,亚洲⾼居榜⾸,我认为主要原因是有⼤量的来⾃像腾讯、阿⾥巴巴、华为这些⼤公司的开发者。这些公司⼀般都有很多开发⼈员。
具体在哪⾥
下图显⽰了我们在 2020 开发者⽣态调查中调查的每个国家使⽤ Go 作为主要语⾔的开发者的分布情况(受访者最多可以选择 3 种主要语⾔)。中国的开发者集中度最⾼,有 16% 的中国开发者在使⽤ Go。
go和java后端开发劣势专家分析:
看到中国排在榜⾸,我⼀点也不惊讶。我本以为俄罗斯会排在第⼆,美国会⾼⼀点,⼤概在前五位。
中国之所以排在榜⾸,可能正是因为他们拥有的开发者数量最多。⽽且我认识的很多公司,⽐如 PingCAP、腾讯和华为,都有很多开发者来⽀撑和构建他们的内部⼯具、基础设施和后端服务,这些服务都和微服务相结合。这似乎是中国排在榜⾸关键原因。
我知道俄罗斯的 Go 社区⾮常棒,所以也难怪 Go 在那⾥很受欢迎。我对⽇本和乌克兰很好奇,因为我没想到他们会这么⾼,我以为德国和印度会更⾼些。记得四五年前我在柏林的时候,我认识的每⼀家创业公司都在使⽤ Go 。
⾏业洞察
Go 依然保持着开发者主要使⽤语⾔的前 10 名,根据 2020 开发者⽣态调查显⽰ Go 的份额约为 9%。
专家分析:
我认为 Go 会⼀直增长。⼈们通常不会把 Go 作为他们开始编程的⼊门语⾔,但是会从其他语⾔迁移过来,例如 PHP、Ruby,但据我所知,主要从 C++、C# 迁移过来。
Go 相⽐ PHP 的优势是类型安全,因为 Go 是⼀门静态类型语⾔,⽽ PHP 是门动态类型语⾔。这就意味着编译器在运⾏时做了⼤量的⼯作来确保你写的代码能够编译并且正常运⾏。相⽐于 C++ ,Go 的优势是简单。在 Go ⾥⾯,⼀切都是那么简单。
总的来说,Go 的特点就是与⽣俱来的速度快,⽆论是写代码还是运⾏时。⼀般来说,在不做任何特殊优化的情况下,采⽤ Go 语⾔你就能提⾼ 5-10 倍的性能,这对公司来说是⼀个很重要的⽣产优势。同时 Go 也是⼀门简单的语⾔,很容
采⽤ Go 语⾔你就能提⾼ 5-10 倍的性能,这对公司来说是⼀个很重要的⽣产优势。同时 Go 也是⼀门简单的语⾔,很容易上⼿,很容易替换现有项⽬中的微服务。
许多 IT 基础设施⼯具,如 Kubernetes、Docker 和 Vault(举⼏个⼤型的例⼦)都是⽤ Go 构建的。因此虽然很多公司是使⽤ Java ,但是还是会有⼀个团队会⽤ Go,特别是为了来维护这些项⽬和给这些项⽬打补丁。这可能是 Go 采⽤率保持增长的另外⼀个原因。这种技术在公共技术设施和部署中使⽤
的越多,Go 就增长的越快。我认为接下来⼏年会有越来越多的⼈采⽤ Go,我们将会看到⼤约有 15%-20% 的开发者会使⽤ Go。特别是考虑到开发者⽣态调查中问的⼀个问题,“您打算在今后 12 个⽉内采⽤或迁移到其他语⾔吗?”,13% 的受访者回答是 Go。
Go 开发的软件类型
Web 服务是使⽤ Go 最受欢迎的领域,根据 2020 开发者⽣态调查结果显⽰,其占有 36% 份额。
专家分析:
为什么是 Web 服务,我认为主要原因是构建⼀个 API 服务⾮常快。他们不需要框架,就可以⽤ Go 快速启动和运⾏⼀个。
我不认为这张图在未来会有很⼤变化,我真⼼希望看到 Web 服务得到更多的分享,因为⽤ Go 开始⼀个 Web 服务确实很简单。
对于实⽤⼩程序,我见过很多类似的,因为 Go 很容易快速写⼀个⼩应⽤来帮你处理⼤量的数据,写⼀个⼩的实⽤程序或需要消耗⼤量资源的⼀次性任务。越来越多的⼈采⽤ Docker 和 Kubernetes,就会有越来越多的⼈使⽤ Go,仅仅是因为他们都是⽤ Go 写的。任何类型的 DevOps 的⼯作都可以从 Go 中获益,因为它提供了类型安全和速度。与基础设施的云端交互很容易(Google、Amazon、Azur
e等),因为他们都有很好的 SDK 。我认为未来⼏年,当泛型到来时,我们还可以期待下 “Libraries / Frameworks” 的⼀些提升。
系统软件——我认为随着越来越多的⼈开始使⽤像 Rust 这样的语⾔编写系统软件,这⼀数字将会下降。数据库也是如此。所以这⼤约 6% 市场,在未来这可能会变成⼀个商机。编程⼯具——我很惊讶它在列表中份额这么⾼,我⾮常感兴趣去了解⼀下 Go 有哪些编程⼯具。
使⽤Go的顶级⾏业
根据 2020 开发者⽣态调查,Go 程序员主要从事 IT 服务,其次是⾦融和⾦融科技、云技术/云平台和其他⾏业。
专家分析:
⾦融和⾦融科技。这是我希望看到的,因为据我所知有相当多的银⾏已经开始采⽤ Go 或者正在⼴泛使⽤ Go 作为他们的基础设施。例如,来⾃英国的 Monzo 使⽤ Go 构建了他们整个银⾏系统。云计算和云平台也很有意义,因为它们对于使⽤ Go 编写的应⽤来说是很⾃然的。
移动开发,这是意料之外的。Go 并没有好的移动开发历史。如果有什么不同的话,我希望⼤家使⽤ Go 来为移动程序提供⽹络服务或者后端服务,但仅此⽽已。
有⼏个⾏业,我不认为 Go 的使⽤率会很快增加。⽐如,任何基于机器学习的东西,因为这仍然是 Python 的地盘。⼈们正在努⼒让机器学习在 Go 中变得受欢迎和变得更好,但是我认为⾄少要⼏年之后才会有⼀些结果。
Go ⼯具
包管理
Go Modules 是 Go 开发者中最受欢迎的包管理⼯具。根据 2020 开发者⽣态调查其使⽤率从 2019 到 41% 上升到到2020 的 82%。
专家分析:
我认为在某种程度上我们可能不得不停⽌问这个问题,因为 Go Modules 已经被设置为标准默认模型,⽽且 Go 团队也想要弃⽤ GOPATH。到那时,其他的所有的包管理⼯具都将会被淘汰。
Go 路由
根据 2020 和 2018 的开发者⽣态调查显⽰,Gorilla / Mux 和标准库⾃ 2018 年以来⼀直是使⽤最多的 Go 路由。
专家分析:
标准库之所以如此受欢迎,可能是因为每当你去 Reddit、Slack 或其他地⽅,⼈们通常都会建议你坚持使⽤标准库,只有在你真正需要的时候才使⽤其他东西。我使⽤ gorilla/mux,是因为它在标准库的基础上有更多的抽象,⼜不会牺牲太多的性能。也可能是因为它是最接近标准库的,⽽且它使得编写服务端更容易。总的来说,这种分布可能是我希望看到的。
5 ⼤ Web 框架
根据 2020 和 2018 的开发者⽣态调查显⽰,Gin 的使⽤量⾃ 2018 年以来⼏乎翻了⼀倍,⽽其他 Web 框架基本保持稳定。
专家分析:
Gin 在 Web 上如此受欢迎,因为它是⼀个速度快的框架,⽽且也得到了很好的推荐。它也是最古⽼的框架之⼀。因为会有很多⽂档摆在那⼉,很多⽤户已经在使⽤它和推荐它。
测试框架
使⽤内置测试框架的⽐例从 2018 年的 64% 下降到 2020 的 44%,⽽使⽤其他测试框架的⽐例略有增长。
专家分析:
内置的测试框架⽐例很⾼是因为 Go 标准库有⼀个⾮常好的开箱即⽤的测试库。
内置测试可能会下降主要是因为越来越多的⼈从其他语⾔(⽐如 PHP)转向这门语⾔,他们试图复制⾃⼰已有的测试习惯。
讨论最多的 Go ⼯具和其他语⾔
Go 经常在 IT 社区中被讨论,Stack Overflow 就是其中之⼀。我们从其 Q&A 单元获取数据来出哪些标签与“Go”同时出现次数最多。其中有 23 种⼯具和两种语⾔(MySQL 和 PostgreSQL)。除了这些⼯具,还有与其他顶级语⾔的共存。纵轴表⽰标签出现的总次数,⽽横轴表⽰带有“Go”的标签的提及次数。
专家分析:
我早料到 JSON 会是个问题,把 Go 的数据结构序列化和反序列化成 JSON 确实是很不容易的,这可能就是 JSON 会如此醒⽬的原因。来⾃其他语⾔的⼈通常很难理解 struct,除⾮它们来⾃ C++ 或 C。
基于 AWS 本⾝的受欢迎程度,我认为 Amazon Web Services 会有很多问题。现在为 Google App Engine 开发 Go 应⽤程序更简单了,但以前并不是这样,所以才会有这么多问题。
⽤程序更简单了,但以前并不是这样,所以才会有这么多问题。
总⽽⾔之,Go 社区是⼀个⾮常有趣且具有包容性的社区,你可以成为其中的⼀员。从不排斥新⼈,⿎励他们提出问题,探索语⾔。在⼀般的主题⽅⾯,泛型以及某些语⾔改进、编译器改进等都是经常讨论的话题。
尤其是泛型,因为它是该语⾔最需要的特性之⼀,并且有⼤量的⼯作负载将受益于该特性。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论