各位 Rustaceans 们!
又一年过去了,又到了我们分析 Rust 年度用户调查的时候了!本次调查于 2020 年 9 月下半月进行,为期两周。我们要感谢所有参与本次调查的人,特别要感谢那些帮助翻译非英文回复的人。
闲话少说,让我们深入分析吧!
调查参与者
本次调查提供了 14 种不同的语言版本,共收到创纪录的 8,323 份回复。
以下是回复中各语言的分布情况
- 英语:75.0%
- 简体中文:5.4%
- 俄语:5.3%
- 德语:4.0%
- 法语:2.7%
- 日语:2.2%
- 韩语:1.2%
- 繁体中文:1.1%
- 西班牙语:1.0%
- 葡萄牙语:0.7%
- 意大利语:0.6%
- 瑞典语:0.5%
- 越南语:0.1%
- 波兰语:0.1%
83.0% 的受访者表示他们正在使用 Rust(创历史新高),而 7% 的人表示他们过去曾使用过 Rust 但现在不再使用。当被问及为什么停止使用 Rust 时,最大的群体(35%)表示他们只是还没来得及学习(可能是因为时间不足),其次是公司不使用 Rust 的人(34%),以及那些表示与他们目前选择的语言相比,转向 Rust 会“拖慢他们的速度”的人(19%)。
稳定性
虽然 Rust 本身一直具有强大的稳定性保证,但稳定性通常不仅仅意味着确保用户代码在使用新版本编译器编译时不会崩溃。2020 年的 Rust 主要围绕着清理和稳定已在进行中的功能和计划展开。尽管这项工作远未完成,但受访者指出,Rust 的整体稳定性一直在提高。
首先,我们要特别感谢 rust-analyzer 和 IntelliJ Rust plugin 项目,这两个项目都拥有相对满意的用户群。近四分之三的受访者表示,他们在 IDE 方面至少看到了一些改进,但 rust-analyzer 和 IntelliJ 的用户尤其满意,其中 47% 的 rust-analyzer 用户表示“改进很大”,40% 的 IntelliJ 用户也这么说。
除了 IDE 体验的改进之外,至少部分时间依赖 nightly 编译器的用户数量持续下降——降至 28%,而去年为 30.5%,只有 8.7% 的受访者表示他们完全使用 nightly。当被问及人们使用 nightly 的原因时,最大的原因是使用 Rocket Web 框架,该框架已宣布 其下一版本将支持稳定版 Rust。紧随其后的 nightly 使用原因是 const generics,但随着 const generics 的一个最小版本已进入稳定版,我们应该会看到对这一特性对 nightly 的依赖减少。
值得注意的是,相当一部分使用 nightly 的用户是出于习惯,因为他们认为“nightly 已经足够稳定”。当被问及什么最常破坏他们的代码时,迄今为止最大的原因是将新的警告引入到警告会导致构建失败的代码库中(尽管 Rust 的设计宗旨是添加新的警告永远不会破坏你的依赖项,但这不属于 Rust 稳定性保证的一部分)。由于我们依赖 nightly 测试来捕获回归问题,这是一个非常好的迹象:nightly 足够稳定,足以发挥作用,同时仍允许持续进行更改。特别感谢 Rust 基础设施、编译器和标准库团队在确保 nightly 编译器中的内容已经相当稳定方面做得非常出色!
谁在使用 Rust?
Rust 作为一种用于生产的语言持续取得进展,约 40% 从事软件工作的受访者表示他们在日常工作中使用了 Rust。此外,Rust 在工作中的前景光明,近一半知情的受访者表示他们的雇主计划在未来一年内招聘 Rust 开发者。
使用 Rust 的人群中,看似最大的变化是学生群体,回答说他们在工作中不使用 Rust 的受访者中,表示他们是学生或软件爱好者因此没有软件工作的人所占比例大幅增加(今年约 15%,去年约 11%)。
此外,受访者工作场所中使用 Rust 的代码量似乎也在增加,44% 的受访者表示他们在工作中使用的 Rust 代码量达到或超过 10,000 行,而去年的这一比例为 34%。
改进 Rust
虽然 Rust 的使用量似乎以健康的速度增长,但调查结果表明,要使 Rust 更适合许多人的工作流程,仍有工作要做。
C++ 互操作性
有趣的是,C++ 是被要求改进与 Rust 互操作性最多的语言,C 和 Python 位居第二和第三。改进 C++ 互操作性尤其经常被提及,以此作为改进 Rust 在工作中使用的方式。实际上,对于在大型代码库(100,000 行代码或更多)工作的用户来说,C++ 互操作性以及(不出所料)编译时间是被提及最多的改善 Rust 体验的方式。
提高可学习性
当被问及如何提高 Rust 的采用率时,许多人提到了让 Rust 更易于学习,有 15.8% 的受访者表示,如果 Rust“不那么令人望而生畏、更容易学习或不那么复杂”,他们会更多地使用 Rust。此外,当直接问及如何改进 Rust 的采用率时,反馈最多的类别是文档和培训。
当我们要求受访者评估他们在 Rust 方面的专业程度时,出现了明显的峰值在 10 分中的 7 分。很难说这与其他语言相比如何,但值得注意的是,声称拥有完全专业知识的人相对较少。然而,与去年相比,Rust 社区似乎正在语言方面获得更多专业知识。
我们还询问了特定主题的难度。根据调查结果,最难学习的主题是生命周期管理,这在某种程度上并不意外,有 61.4% 的受访者表示使用生命周期要么棘手,要么非常困难。
看来拥有 C++ 知识确实有所帮助,有至少一些 C++ 经验的受访者中,有 20.2% 认为生命周期“非常困难”,而没有 C++ 知识的受访者中,有 22.2% 认为该主题“非常困难”。总的来说,系统编程知识(定义为至少有一些 C 和 C++ 经验)往往能培养出更自信的 Rust 用户:有系统编程经验的人在 Rust 专业程度方面给自己打分为 10 分中的 5.5 分,而有 Java 或 C# 等静态类型垃圾回收语言经验的人给自己打分为 10 分中的 4.9 分。只有 Ruby 或 JavaScript 等动态类型语言经验的人给自己打分为 10 分中的 4.8 分。
不出所料,人们使用 Rust 的频率越高,他们就越觉得自己是该语言的专家,每天使用 Rust 的人中有 56.3% 在 Rust 专业程度上给自己打分为 10 分中的 7 分或更高,而每月使用 Rust 的人中只有 22%。
编译时间
Rust 社区和 Rust 团队持续关注的一个重要话题是改进编译时间。目前已取得进展,有 50.5% 的受访者表示他们觉得编译时间有所改善。这种改善在代码库较大的受访者中尤为明显(10,000 行代码或更多),其中 62.6% 的人表示有所改善,只有 2.9% 的人表示变差了。改进编译时间很可能是 2021 年的重要努力方向,敬请关注!
库支持
总的来说,受访者对 Rust 生态系统中不断增长的库支持感到满意,65.9% 的受访者表示他们至少看到了一些改进,只有 4.9% 的人表示他们没有看到任何改进。当被问及最缺少哪种类型的库支持时,GUI 编程是压倒性的答案,只有 26.9% 的受访者指出这是过去一年有所改进的领域。
其他有待改进的主题包括完善异步编程体验、为 crates.io 生态系统尚未涵盖的特定任务提供更多库,以及为常见任务提供更多“官方推荐的”库。
社区
Rust 社区的改进方式多种多样,但有两个突出的重点。首先,为那些不愿或无法用英语参与的人改善 Rust 社区的状态。似乎没有哪种特定语言的服务尤其不足,俄语、普通话、日语、葡萄牙语、西班牙语和法语经常被提及。
此外,许多人表示,Rust 社区拥有大型企业赞助商将使他们在工作中推广使用 Rust 变得更容易。
另一个有趣的发现是,欧洲似乎是举办 Rust 会议最受欢迎的地方,欧洲各地(西部、东部、北部、南部和中部)都有超过 14% 的受访者表示有兴趣参加当地的会议,其中西欧的比例最高(26.3% 的受访者)。唯一一个接近这一范围的地区是美国,有 21.6% 的受访者表示有兴趣参加在美国举办的会议。
展望 Rust 的未来
总的来说,受访者不仅对过去一年 Rust 的改进,也对未来一年的前景持有积极看法。尤其是,许多人表示对 Rust 的新功能感到兴奋,例如 const generics 和 generic associated types (GATs),以及 2021 edition、异步改进、Bevy 游戏引擎、公司更广泛地采用 Rust、WebAssembly 等等!
祝愿 2021 年激动人心!🎉🦀