每年 Go 官方都会组织进行一次 Go 开发者的调查,上年也不除外。不过调查完,收集了资料后就不见人影了...不然是社区和某时间的朋友们都会问我在哪里可以看到。
这不,最近官方终于发布了《Go Developer Survey 2021 Results[1]》,我直接翻译了(有删减,仅展示重点内容),大家可以看看,了解下 Go 的社区行情发展。
我们的人口统计数据逐年保持稳定(见 2020 年的结果)。与往年一致,Go主要用于科技行业。70% 的受访者是软件开发人员,少数是 IT 或 DevOps,76% 的受访者表示他们在工作中用 Go 编程。
2021 年的一些新人口统计数据:
我们问受访者在过去一年中是否评估过使用其他语言来替代 Go。43% 的受访者表示,他们曾评估过切换到 Go,或者在之前没有既定语言的情况下采用 Go。
这些评估中的 80% 主要是出于商业原因。
我们预计 Go 最常见的用例将是评估 Go 的人最常见的预期用途。到目前为止,API/RPC 服务是最常见的用途,但令人惊讶的是,数据处理是第二常见的预期用例。
在那些评估了 Go 的受访者中,有 75% 最终使用了Go。(当然,由于几乎所有的调查对象都报告说在使用 Go,我们很可能没有听到那些评估过 Go 但决定不使用它的开发者的声音)。
对于那些评估了 Go 但没有使用 Go 的人,我们接着问他们有哪些挑战阻碍了他们使用 Go,其中哪个是主要障碍。
我们从这些结果中得到的情况支持了之前的发现,即缺少功能和缺乏生态系统/库支持是采用Go的最重要的技术障碍。
我们询问了更多关于受访者缺少哪些功能或库的细节,发现泛型是最常见的关键性缺失功能 -- 我们希望在 Go1.18 引入泛型之后,这将成为一个不那么重要的障碍。接下来最常见的缺失功能是与 Go 的类型系统有关的。
我们希望在做出更多改变之前,看看引入泛型会如何影响或解决围绕 Go 类型系统的潜在需求。
目前,我们将收集更多关于这些需求背景的信息,并可能在未来探索不同的方式来满足这些需求,例如通过工具、库或对类型系统的修改。
至于缺失的库,对于增加什么样的库可以解开最大比例的想采用Go的人的障碍,并没有明确的共识。这需要进一步的探索。
那么,当受访者不选择 Go 时,他们用什么来代替呢?
Rust、Python 和 Java 是最常见的选择。
Rust 和 Go 有互补的功能集,所以当 Go 不能满足项目的功能需求时,Rust 可能是一个不错的选择。
使用 Python 的主要原因是缺少库和现有的基础设施支持,所以 Python 的大型软件包生态系统可能会使其难以转换为 Go。
同样地,使用 Java 的最常见的原因是 Go 的功能缺失,这可能会因为 1.18 版本中引入泛型而得到缓解。
让我们看看 Go 在哪些方面做得好,哪些方面可以改进。
与去年一致,92% 的受访者表示他们在过去一年中对 Go 的使用非常满意或比较满意。
今年,我们引入了一个新的问题,以探索在特定领域中确定工作优先次序的其他方法。
问题:"假设你有 10 个 GopherCoins 可以用来改善围棋工作的以下方面。你会如何分配你的硬币?"
突出的两个领域是依赖性管理(使用模块)和诊断错误,这些领域我们将在 2022 年投入资源。
在 Go 依赖管理上,最常见的挑战是:
与版本有关,9% 的答复讨论了版本管理或更新依赖关系。排在前五位的是关于私有仓库的挑战(包括对 GitLab 的认证)和记住不同的 go mod 命令以及理解它们的错误信息。
与往年一样,绝大部分调查对象表示在 Linux(63%)和 macOS(55%)系统上使用 Go。随着时间的推移,主要在 Linux 上开发的受访者的比例似乎略有下降的趋势。
在使用 VSCode 插件进行调查的受访者中,有 91% 的受访者在使用 Go 时更喜欢使用 VSCode。
超过 90% 的受访者以 Linux 为目标! 尽管在 macOS 上开发的受访者比 Windows多,但他们更经常部署到 Windows 而不是 macOS。
整体回顾我们 2021 年的开发者调查结果 重申一下,一些关键的收获。
简单来讲,就是欣欣向荣,大部分人对 Go 都比较满意。
最大矛盾点是泛型和依赖管理。泛型已在 Go1.18 已经释出,依赖管理持续在改进,也会加大对调试工具的优化。
以上是《2021 年 Go 官方开发者调查报告》的详细内容。更多信息请关注PHP中文网其他相关文章!