写点什么

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:172424

评论 1 条评论

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

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

浪潮位居全球区块链企业前十、中国前三

浪潮云

MySql 通过定义变量更新多表

Flychen

升级数据库游戏不停服?来看看TcaplusDB是怎么做的(2)

数据人er

数据库 nosql tencentdb TcaplusDB

事件Event:带你体验鸿蒙轻内核中一对多、多对多任务同步

华为云开发者社区

鸿蒙 任务 OpenHarmony 事件 LiteOS-M

测试开发之系统篇-常用系统命令

禅道项目管理

测试 命令 测试开发

ZooKeeper 分布式锁 Curator 源码 01:可重入锁

程序员小航

zookeeper 源码 分布式锁 curator

ClickHouse大数据领域企业级应用实践和探索总结

王知无

Vue进阶(幺陆贰):vue render函数介绍

No Silver Bullet

Vue 7月日更 render

爬虫入门到放弃02:如何解析网页获取数据

叫我阿柒啊

爬虫 CSS选择器 xpath lxml

自建开发工具系列-Webkit内存动量监控UI(七)

Tim

Script tsconfig

Rust从0到1-并发-线程间消息传递

rust 并发 channel 消息传递 Message Passing

【LeetCode】在排序数组中查找数字 Java题解

HQ数字卡

算法 LeetCode 7月日更

【大数据面试之对线面试官】MapReduce/HDFS/YARN面试题70连击

王知无

Vue进阶(幺肆拐):利用Vue中keep-alive快速实现页面缓存

No Silver Bullet

Vue 7月日更 keep-alive

B站崩了,拉垮了豆瓣?程序员不要怕,Alibaba架构师教你如何“预防”

Java架构师迁哥

到底是先更新数据库还是先更新缓存?

冰河

数据库 缓存 系统架构 分布式系统 缓存一致性

如何在 Discourse 中配置使用 GitHub 登录和创建用户

HoneyMoose

MapReduce的参数优化

大数据技术指南

7月日更

手写冒泡排序和选择排序算法

实力程序员

华为云GaussDB(for openGauss)推出重磅内核新特性

华为云开发者社区

高可用 华为云 内核 GaussDB(for openGauss) 存储引擎

了解一下缓存分类、更新、清理策略以及如何处理缓存带来的风险

Jokay

缓存 缓存穿透 缓存击穿 缓存雪崩 缓存设计

10分钟理解REACT概念

加百利

React 7月日更

难受的一天

IT蜗壳-Tango

7月日更

【Flutter 专题】85 Flutter Attach 调试 Flutter Code

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

数仓是如何与“夏令时”愉快的玩耍!

华为云开发者社区

数仓 时区 GaussDB(DWS) 夏令时 夏令

从零开始学习3D可视化之3D界面

森友小锘

前端 可视化 3D 3D可视化 数字孪生

电脑有什么超简单的录屏方法

淋雨

视频剪辑 Camtasia 录屏软件

Apache Spark结构化API(三)

数据与智能

spark API RDD

在线SVG在线编辑器

入门小站

Linux

邮件误删不用怕,试试这个方法帮你找回来

淋雨

EasyRecovery 文件恢复 硬盘数据恢复

【从零开始学爬虫】采集京东商品信息

前嗅大数据

大数据 爬虫 数据采集 采集商城 采集京东

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