Go 官方博客公布了 2021 年面向 Go 开发者的调查报告。据称此次调查收到了 11,840 份回复,问卷回收数量是调查发起 6 年来最多的一次。
调查报告亮点
- 大多数回复与往年一致。例如,开发者对 Go 的满意度仍然很高,92% 受访者表示满意,75% 的受访者在工作中使用 Go。
- 今年的部分受访者来自于调查团队对 Go VS Code 插件使用者的随机抽样,因此调查的回复跟以往相比也有所不一样。
- 缺少关键库、语言特性和基础设施是使用 Go 最常见的障碍。(此调查是在 Go 1.18 发布之前进行的,泛型是报告中最多人反馈的第一大缺失特性)。
- 受访者希望优先考虑对调试和依赖管理的改进。
- 使用模块时的最大挑战涉及版本控制、使用私有仓库和多模块工作流。
- 81% 的受访者对 Go 项目的长期发展方向充满信心。
Go 使用情况
和前几年的调查结果一样,Go 主要在科技行业被广泛使用。70% 的受访者是软件开发者,少数从事 IT 或 DevOps 工作。76% 的受访者表示他们在工作中使用 Go 进行编程。72% 的受访者表示他们使用 Go 开发 API/RPC 服务,其他的主要用途是 Web 服务、库或框架、自动化部署和数据分析等。少数开发者还使用 Go 开发桌面应用、游戏、AI 和移动 APP。
一些新的统计结果:
- 大多数受访者将他们的组织描述为企业或中小型企业,大约四分之一的受访者将他们的组织描述为初创公司。咨询公司和公共机构的占比更少。
- 绝大多数受访者在少于 10 人的团队中工作。
- 超过一半 (55%) 的受访者每天在工作中使用 Go,受访者在工作之外使用 Go 的频率较低。
开发者使用 Go 遇到的阻碍
受访者被问及曾评估过 Go 但最终没有选择使用它,其中主要遇到的阻碍包括:缺少所需的语言特性、其他的编程语言对现有的 工具 和基础设施提供了更好的支持、Go 生态缺少所需的库、团队没有使用 Go 的经验、Go 工具不过丰富、Go 性能未能满足需求、招聘 Go 开发者困难……等。
由此可见,语言特性的缺失和生态不够丰富劝退了不少本想“入坑”的开发者。其中「泛型」是他们最希望添加的特性(调查进行的时候尚未发布提供了泛型的 Go 1.18)。除了泛型,开发者对于类型系统相关的特性也具有十分强烈的需求你。Go 团队表示,他们将收集更多关于这些需求的背景信息,并可能在未来探索不同的方式来满足这些需求,例如通过工具、库或对类型系统的修改。
那么这些相中了 Go,但最后又不采用它的受访者选了什么语言?下面的图表给出了答案:
Rust、 Python 和 Java 是最常见的选择。对此 Go 团队认为,Rust 和 Go 有互补的特性,所以当 Go 不能满足项目的需求时,Rust 会是一个不错的选择。使用 Python 的主要原因是 Go 缺少库和现有的基础设施支持,因此 Python 的大型包生态系统可能会导致他们难以切换到 Go。同样,使用 Java 的常见原因是 Go 缺少一些功能,不过这应该会通过在 1.18 版本中引入泛型而得到缓解。
开发者对 Go 的满意度
跟去年一样,92% 的受访者表示他们在过去一年中对使用 Go 感到非常满意或比较满意。
此外,越来越多的开发者表示,Go 对于他们公司的成功提供了极大的帮助。
开发者对 Go 的诉求
依赖管理和错误处理是 Go 开发者需求最大的两项功能。
开发者工具和实践
与往年一样,绝大多数受访者表示在 Linux (63%) 和 macOS (55%) 系统上使用 Go。不过随着时间的推移,主力使用 Linux 开发的 Go 受访者比例似乎略有下降。
目标平台方面,超过 90% 的受访者选择了 Linux。尽管在 macOS 上开发的受访者多于 Windows,但他们大多数选择部署到 Windows 而不是 macOS。
最后
Go 开发者 2021 调查报告的部分关键要点:
- 此次调查的样本有所变化,但大部分同比指标保持稳定,大部分变化。
- 开发者对 Go 的满意度仍然很高
- 四分之三的受访者在工作中使用 Go,许多人每天都在使用 Go
- Go 团队将优先改进调试和依赖管理的工作流程