每年 Go 官方都会组织进行一次 Go 开发者的调查,上年也不除外。不过调查完,收集了资料后就不见人影了...不然是社区和某时间的朋友们都会问我在哪里可以看到。
这不,最近官方终于发布了《Go Developer Survey 2021 Results[1]》,我直接翻译了(有删减,仅展示重点内容),大家可以看看,了解下 Go 的社区行情发展。
Go 开发者调查结果
亮点
大多数答复与往年一致。例如,对 Go 的满意度仍然很高,达到 92%,75% 的受访者在工作中使用 Go。 今年,我们使用 Go VSCode 插件对一些参与者进行了随机抽样,这导致了对调查作出回应的人发生了一些变化。 缺少关键库、语言功能和基础设施是使用 Go 的最常见障碍。(注:这项调查是在 Go1.18 发布之前进行的,其中泛型是报告中最缺的第一大功能) 受访者希望优先改善调试和依赖性管理。 在使用模块时,最大的挑战是版本管理、使用私有仓库和多模块工作流程。(注意:这项调查是在Go 1.18之前进行的,Go 1.18引入了工作空间,解决了许多这些问题)。 81% 的受访者对 Go 项目的长期发展方向有信心。
我们听了谁的声音?
我们的人口统计数据逐年保持稳定(见 2020 年的结果)。与往年一致,Go主要用于科技行业。70% 的受访者是软件开发人员,少数是 IT 或 DevOps,76% 的受访者表示他们在工作中用 Go 编程。



2021 年的一些新人口统计数据:
大多数受访者将他们的组织描述为企业或中小型企业,约四分之一的人将他们的组织描述为初创企业。咨询公司和公共机构的情况要少得多。 绝大多数受访者在不到 10 人的团队中工作。 超过一半(55%)的受访者每天在工作中使用 Go。受访者在工作之外使用 Go 的频率较低。



Go 应用面临的挑战
我们问受访者在过去一年中是否评估过使用其他语言来替代 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 满意度和优先级
让我们看看 Go 在哪些方面做得好,哪些方面可以改进。
与去年一致,92% 的受访者表示他们在过去一年中对 Go 的使用非常满意或比较满意。

今年,我们引入了一个新的问题,以探索在特定领域中确定工作优先次序的其他方法。
问题:"假设你有 10 个 GopherCoins 可以用来改善围棋工作的以下方面。你会如何分配你的硬币?"
突出的两个领域是依赖性管理(使用模块)和诊断错误,这些领域我们将在 2022 年投入资源。

在 Go 依赖管理上,最常见的挑战是:
在多个模块之间工作(19% 的受访者)。 是关于版本的评论(包括对承诺稳定的 V1 版 API 的恐惧)。
与版本有关,9% 的答复讨论了版本管理或更新依赖关系。排在前五位的是关于私有仓库的挑战(包括对 GitLab 的认证)和记住不同的 go mod 命令以及理解它们的错误信息。
开发者工具和实践
与往年一样,绝大部分调查对象表示在 Linux(63%)和 macOS(55%)系统上使用 Go。随着时间的推移,主要在 Linux 上开发的受访者的比例似乎略有下降的趋势。

在使用 VSCode 插件进行调查的受访者中,有 91% 的受访者在使用 Go 时更喜欢使用 VSCode。

目标(部署)平台
超过 90% 的受访者以 Linux 为目标! 尽管在 macOS 上开发的受访者比 Windows多,但他们更经常部署到 Windows 而不是 macOS。

总结
整体回顾我们 2021 年的开发者调查结果 重申一下,一些关键的收获。
我们的大多数同比指标保持稳定,大多数变化是由于我们的样本变化。 对 Go 的满意程度仍然很高! 四分之三的受访者在工作中使用 Go,许多人每天都在使用Go,所以帮助你完成工作是首要任务。 我们将优先考虑对调试和依赖性管理工作流程的改进。 我们将继续努力,使 Go 成为各种 Gophers 的包容性社区。
简单来讲,就是欣欣向荣,大部分人对 Go 都比较满意。
最大矛盾点是泛型和依赖管理。泛型已在 Go1.18 已经释出,依赖管理持续在改进,也会加大对调试工具的优化。
以上是《2021 年 Go 官方开发者调查报告》的详细内容。更多信息请关注PHP中文网其他相关文章!

Golang适合快速开发和并发编程,而C 更适合需要极致性能和底层控制的项目。1)Golang的并发模型通过goroutine和channel简化并发编程。2)C 的模板编程提供泛型代码和性能优化。3)Golang的垃圾回收方便但可能影响性能,C 的内存管理复杂但控制精细。

GoimpactsdevelopmentPositationalityThroughSpeed,效率和模拟性。1)速度:gocompilesquicklyandrunseff,ifealforlargeprojects.2)效率:效率:ITScomprehenSevestAndArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdEcceSteral Depentencies,增强开发的简单性:3)SimpleflovelmentIcties:3)简单性。

C 更适合需要直接控制硬件资源和高性能优化的场景,而Golang更适合需要快速开发和高并发处理的场景。1.C 的优势在于其接近硬件的特性和高度的优化能力,适合游戏开发等高性能需求。2.Golang的优势在于其简洁的语法和天然的并发支持,适合高并发服务开发。

Golang在实际应用中表现出色,以简洁、高效和并发性着称。 1)通过Goroutines和Channels实现并发编程,2)利用接口和多态编写灵活代码,3)使用net/http包简化网络编程,4)构建高效并发爬虫,5)通过工具和最佳实践进行调试和优化。

Go语言的核心特性包括垃圾回收、静态链接和并发支持。1.Go语言的并发模型通过goroutine和channel实现高效并发编程。2.接口和多态性通过实现接口方法,使得不同类型可以统一处理。3.基本用法展示了函数定义和调用的高效性。4.高级用法中,切片提供了动态调整大小的强大功能。5.常见错误如竞态条件可以通过gotest-race检测并解决。6.性能优化通过sync.Pool重用对象,减少垃圾回收压力。

Go语言在构建高效且可扩展的系统中表现出色,其优势包括:1.高性能:编译成机器码,运行速度快;2.并发编程:通过goroutines和channels简化多任务处理;3.简洁性:语法简洁,降低学习和维护成本;4.跨平台:支持跨平台编译,方便部署。

关于SQL查询结果排序的疑惑学习SQL的过程中,常常会遇到一些令人困惑的问题。最近,笔者在阅读《MICK-SQL基础�...


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Dreamweaver CS6
视觉化网页开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Linux新版
SublimeText3 Linux最新版

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

WebStorm Mac版
好用的JavaScript开发工具