写点什么

2020 年 Go 开发者调查:支持泛型仍是核心需求

2021 年 3 月 18 日

2020年Go开发者调查:支持泛型仍是核心需求

近日,Go 官方发布了 2020 年 Go 开发者调查报告,共计有 9684 位开发者参与了调查。2020 年,Go 语言的使用率上升到了 76%,66% 的受访者表示 Go 语言对公司业务很重要,92% 的受访者表示对 Go 语言的使用感受很满意。


此次调查中,接近一半的受访者拥有 3-10 年工作经验,大部分受访者工作在技术行业中,70%受访者的主要工作是开发软件和应用程序,还有 10%受访负责在设计 IT 系统和架构。在 Go 使用时间方面,48% 的受访者使用 Go 语言不到两年时间,不过与 2019 年相比,这个比例下降了。


92% 受访者对 Go 语言感到满意


针对受访者对 Go 语言的满意度,社区也做了调查。本次满意度调查总共有 5 个档,分为非常满意、满意、一般、不满意、非常满意,92% 的受访者选择了满意和非常满意。



与往年相似,91%的受访者表示他们更愿意将 Go 用于其下一个新项目;89%的受访者表示 Go 在其团队中表现良好。同时,越来越多的受访者认可 Go 对他们公司的发展至关重要,这个比例从 2019 年的 59%增加到 2020 年的 66%。在 5000+ 人以上公司工作的受访者对于 Go 语言的认可度比较低(63%),而在规模更小的企业中工作的受访者更认可 Go 语言(73%)。



我们将满意度调查做了进一步拆分,做了 14 个细项的调查。根据调查结果,受访者构建速度、可靠性和并发性满意度最高,对云服务、调试和模块领域的满意度有所增加,其它大多数选项的重要性与之前相比基本没变。今年新引入的两个选项 API 和 Web 框架,Web 框架的满意度低于其他领域(64%),对于大多数当前用户而言,它的重要性并没有那么高(只有 28%的受访者表示它非常重要或至关重要),但对于潜在的 Go 开发人员来说,它可能是重要的缺失功能。


Go 语言开发工具和实践


与往年一样,绝大多数受访者表示他们是在 Linux(63%)和 macOS(55%)系统上使用 Go 语言,不过需要注意的是在 Linux 上开发的受访者正在逐年下降。



在编辑器的选择方面,受访者最喜欢的是 VS Code,占据了 41% 的份额,排在第二位的是 GoLand(35%)。



与往年不一样的是,今年社区做了一项新的统计,让受访者针对编辑器的改进优先级进行排序。根据调查结果显示,目前开发者最想改进的编辑器功能是代码完成、代码导航、编辑器性能和重构。



2019 年,社区调查了开发人员都在使用哪些特定的开发技术,结果发现几乎 90%的受访者都在使用文本日志来做调试。2020 年,针对这个调查结果,社区做了一个更详细的调查,希望能够找到大家为什么喜欢使用文本日志来做调试。43% 的受访者表示是因为它可以在各种语言中通用,42% 的受访者表示是他们本身就喜欢使用文本日志。不过,仍有 27%的受访者不知道如何开始使用 Go 的调试工具,还有 24%的受访者从未尝试过使用 Go 的调试工具。


Go 语言的具体实践


根据调查结果显示:构建 API/RPC 服务(74%)和 CLI(65%)仍然是 Go 的最常见用例。在这个调查中,我们还根据不同的企业规模做了细分,大型企业和中小型企业使用 Go 语言的方式差不多,但是大型企业很少使用 Go 语言来做返回 HTML 的 Web 服务。



开发者都在使用 Go 语言完成哪些工作呢?根据调查结果显示,在工作场景中,受访者更多的是将 Go 用于自动化 / 脚本、代理和守护程序以及数据处理等用途,在工作之外,桌面 /GUI 应用、游戏和移动应用等用例更常见。



那么,受访者对于每个用例的满意度如何呢?根据调查结果显示:CLI 的满意度最高,有 85%的受访者表示对 Go for CLI 的使用感到满意。当然,满意度和使用率不能完全划等号,比如代理和守护程序的满意度第二高,但使用率排名第六。



CLI 的目标平台调查结果显示,开发人员对 Linux 和 macOS 以及 Linux 的使用率较高,其中 Linux(93%)、macOS(59%),而 Windows 也有差不多三分之一的受访者在使用。



仔细研究 Go 的数据处理用例可以发现,Kafka 是唯一被广泛采用的引擎,但大多数受访者表示他们用 Go 搭配一个定制的数据处理引擎。



受访者都在哪些领域中使用 Go 呢?根据调查结果显示,到目前为止,最常见的领域是 Web 开发(68%),而其他常见领域包括数据库(46%)、DevOps(42%)、网络编程(41%)和系统编程(40%)。


Go 语言模块的使用情况


2020 年,Go 模块得到了更普遍的使用,尤其是将模块用于软件包管理的比例显著增加。96%的受访者表示他们正在使用模块进行软件包管理,87%的受访者表示他们仅使用模块进行软件包管理,而这两项调查在前一年的占比仅为 89% 和 71%。



当然,受访者对于 Go 语言模块的满意度也从 2019 年的 68% 上升到 2020 年的 77%。


使用 Go 语言构建云服务


Go 在设计时就考虑了现代的分布式计算需求,那么开发者在云上部署 Go 语言项目的情况如何呢?根据调查结果显示,三大云计算提供商(亚马逊云科技、GCP 和 Azure)的使用率都上升了,尤其是 Azure 的使用率从 7%增长到了 12%。而在自有或者公司拥有的服务器的本地部署比例继续减少。



部署到 AWS 和 Azure 的受访者中,部署到托管 Kubernetes 平台的比例有所增加,目前分别为 40%和 54%;Azure 用户中将 Go 程序部署到 VM 的用户比例显著下降,容器使用率从 18%略微增加到 25%。与此同时,GCP(已经有很大比例的受访者报告他们在使用托管的 Kubernetes)用户中部署到无服务器的 CloudRun 的比例从 10%增长到 17%。



总体而言,大多数受访者对在所有三大头部云提供商上使用 Go 的体验感到满意,受访者对在 AWS(82%满意)和 GCP(80%)上使用 Go 开发的满意度相似。Azure 的满意度较低(满意度为 58%),受访者 Azure 的 Go SDK 和 Go 对 Azure 函数的支持提出了建议。


为什么我们还没使用 Go 语言?


根据调查结果显示·,受访者认为 Go 语言使用率无法提高的主要原因包括项目正在使用另一种语言开发(54%)、团队成员更偏好使用另一种语言工作(34%)以及 Go 本身缺乏某项关键特性(26%)。



Go 语言到底缺乏哪些关键特性呢?根据调查结果显示,88%的受访者认为泛型是关键的缺失特性,其他关键的缺失特性包括更好的错误处理(58%)、null 安全性(44%)、函数编程特性(42%)%)和更强大 / 扩展的类型系统(41%)。



调查还发现 18% 的受访者由于缺少泛型而不会用 Go,其它不使用 Go 的原因中,模块 / 软件包管理以及关于学习曲线 / 最佳实践 / 文档的问题均占 13%。



报告链接:


https://blog.golang.org/survey2020-results


2021 年 3 月 18 日 16:171848

评论 1 条评论

发布
用户头像
可以转载吗?

2021 年 03 月 28 日 12:02
回复
没有更多了
发现更多内容

APICloud Avm.js前端框架的优势

APICloud

小程序 前端框架 移动开发· 跨端开发 多端开发

Semaphore实战

叫练

CountDownLatch CyclicBarrier Semaphore 线程协作

Shibboleth-IdP 的 OAuth2 对接方案详解

冯骐

OAuth2 SAML Shibboleth CARSI

【科创人】Testin云测总裁徐琨:创业必须要创造出肉眼可见的价值

科创人

四面阿里成功斩获offer,在此分享我的复盘经验总结!

Java架构之路

Java 程序员 架构 面试 编程语言

寻找被遗忘的勇气(四)

Changing Lin

3月日更

区块链产业革命:解决融资租赁之谜

CECBC区块链专委会

区块链

手把手教学,如何使用低代码快速构建应用程序步骤详解!

优秀

低代码

史上最全整合第三方登录的开源库

happlyfox

OAuth 2.0 28天写作 3月日更

Python学习心得

张鹤羽粑粑

28天写作 3月日更

一桶食用油的数字化

吴俊宇

数字化转型 鲁花

Docker的三言两语-基础篇

一个大红包

Docker 28天挑战 3月日更

GitHub上获赞10万star的高并发神级进阶资料,面试官再问高并发问题请你把这篇文章发给他!

Java架构之路

Java 程序员 架构 面试 编程语言

怎样在自己的 Web 中加入强大的日志系统?slf4j 的日志插件必须要知道!

老王说编程

slf4j java 日志 日志管理 日志框架

园区网中 IPv6 地址的终端 mac 地址追溯

冯骐

Python 运维 日志 网络 ipv6

世界经济论坛:四大区块链趋势将在今年绽放异彩

CECBC区块链专委会

区块链

白话Go内存模型&Happen-Before

Gopher指北

go

科学的互联网思想 指引我国网络强国建设稳步前行

CECBC区块链专委会

网络安全

区块链产业革命:解决融资租赁之谜

旺链科技

区块链应用 融资租赁

5 分钟部署一个 OAuth2 服务并对接 Shibboleth-IdP 3.4.6

冯骐

golang 运维 开发 OAuth2 Shibboleth

智慧党建平台解决方案--高效开展党建工作

13530558032

区块链电子合同--电子合同区块链签约平台

13530558032

都 2021 年了,也该抛弃 ExpressJS 了

LeanCloud

前端开发 nodejs 框架

神经网络攻防:03.使用API修改神经网络参数

P小二

AIPwn AI安全 P小二 神经网络攻防

2021年最新京东技术岗现场三面:jvm调优+高并发+算法+网络+数据库+设计模式

Java架构之路

Java 程序员 架构 面试 编程语言

牛掰,阿里P8这份笔记不就相当于金三银四中的原子弹吗?已经帮助13位同行拿到了一线大厂的offer!

Java架构师迁哥

beego + nginx 实现反向代理统一认证

冯骐

golang nginx 开发 ldap auth_request

Promise原理及常用操作

花明

神经网络攻防: 02.攻击模型的输出层

P小二

AIPwn AI安全 P小二 神经网络攻防

15 分钟部署一个 CAS 服务并对接 Shibboleth-IdP 3.4.6

冯骐

CAS 认证 Shibboleth 统一身份认证

程序员之禅(二)

每天读本书

读书笔记 每天读本书

4月17日 HarmonyOS 开发者日·上海站

4月17日 HarmonyOS 开发者日·上海站

2020年Go开发者调查:支持泛型仍是核心需求-InfoQ