如何将AI能力与大数据技术结合,助力数据分析治理等工作的效率大幅提升,优化大数据引擎的性能及成本? 了解详情
写点什么

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

  • 2021-03-18
  • 本文字数:2547 字

    阅读完需:约 8 分钟

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-03-18 16:172889

评论 1 条评论

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

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

后疫情时代,共享育儿也能变成一门好生意?!

脑极体

C++17 中的条件变量

hedzr

c++ 算法 并发编程 元编程 policy

Linux之date命令

入门小站

Linux

Vue进阶(五十七):ES数组操作:find(), findIndex(), filter(), forEach(), some(), every(), map(), reduce()

No Silver Bullet

Vue ES 7月日更 数组操作

一个很多人不知道的SpringBoot小技能!!

冰河

Java 分布式 微服务 springboot 服务化

巧用 readonly与 const

喵叔

7月日更

week 9 作业

Geek_2e7dd7

架构实战营

WorkPlus高端制造业数字化解决方案—长江存储

WorkPlus Lite

开源 企业 解决方案 即时通讯 私有云

校友资料登记平台小程序开发笔记一-系统整体设计

CC同学

校友登记小程序 校友资料小程序

没有电和网络的时候如何支付一瓶水?

escray

学习 极客时间 朱赟的技术管理课 7月日更

Discourse 的标签(Tag)只能是小写的原因

HoneyMoose

详解API Gateway流控实现,揭开ROMA平台高性能秒级流控的技术细节

华为云开发者联盟

华为 ROMA 集成平台 ROMA Connect API Gateway

iOS15上线图片翻译功能,能取代专业翻译软件吗?

脑极体

在线时间加减计算器

入门小站

工具

王者荣耀商城异地多活架构设计

chenmin

Rust从0到1-面向对象编程-设计模式

rust 设计模式 面向对象编程 状态模式 state pattern

开跑!Mobileye自动驾驶汽车路测落地纽约

新闻科技资讯

经典好文!BAT大厂Android面试真题锦集干货整理

欢喜学安卓

android 程序员 面试 移动开发

抖音快手seo获客系统开发(可贴牌)

获客I3O6O643Z97

抖音霸屏

结构化流-Structured Streaming(八-中)

数据与智能

spark 结构化思维 Kafk

腾讯T3大牛手把手教你!三面腾讯,已拿offer

欢喜学安卓

android 程序员 面试 移动开发

作为Android开发程序员,已获千赞

欢喜学安卓

android 程序员 面试 移动开发

网络传输协议kcp原理解析

赖猫

TCP 网络协议

和12岁小同志搞创客开发:如何使用继电器?

不脱发的程序猿

DIY 嵌入式 创客开发 继电器

Python OpenCV 图像的 最近邻插值 与 双线性插值算法 优化迭代

梦想橡皮擦

Python 7月日更

密码学系列之:Merkle–Damgård结构和长度延展攻击

程序那些事

加密解密 密码学 程序那些事

携手生态伙伴亮相InfoComm,英特尔赋能智能协作办公

新闻科技资讯

价值连城 知名深度强化学习Pieter Abbeel的采访 John 易筋 ARTS 打卡 Week 56

John(易筋)

ARTS 打卡计划

YOLOX的安装

IT蜗壳-Tango

7月日更

Vue进阶(五十八):ES字符串操作:遍历、比较、截取、补全...

No Silver Bullet

Vue ES 字符串 7月日更

手写Spring框架,是时候撸个AOP与Bean生命周期融合了!

小傅哥

Java spring 小傅哥 aop 代理

2020年Go开发者调查:支持泛型仍是核心需求_编程语言_王强_InfoQ精选文章