近日,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
评论 1 条评论