Rust 2020 年调查结果

2020 年 12 月 16 日 · Rust 调查团队

各位 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-analyzerIntelliJ Rust 插件项目致敬,这两个项目都拥有相对快乐的用户群。近 3/4 的受访者表示他们在 IDE 方面至少看到了一些改进,但 rust-analyzer 和 IntelliJ 的用户尤其满意,47% 的 rust-analyzer 用户表示“改进了很多”,而 40% 的 IntelliJ 用户也表示同样如此。

除了 IDE 体验的改进之外,至少在部分时间依赖 nightly 编译器的用户数量持续下降 - 从去年的 30.5% 降至 28%,只有 8.7% 的受访者表示他们只使用 nightly。当被问及人们使用 nightly 的原因时,最大的原因是使用 Rocket web 框架,该框架已宣布 它将在下一个版本中在 Rust 的稳定版本上工作。nightly 的下一个最大原因是 const generics,但是随着 const generics 的最小版本达到稳定,我们应该会看到对 nightly 的依赖减少。

Which versions of Rust do you use?

值得注意的是,相当一部分使用 nightly 的用户这样做是出于习惯,因为“nightly 足够稳定”。当被问及什么最常破坏人们的代码时,到目前为止,最大的答案是在代码库中引入新的警告,而警告会破坏构建(这不是 Rust 的稳定性保证的一部分,尽管 Rust 的设计目的是添加新的警告永远不会破坏您的依赖项)。由于我们依赖 nightly 测试来捕获回归,这是一个非常好的迹象:nightly 足够稳定,可以使用,同时仍然允许持续更改。感谢 Rust 基础设施、编译器和库团队在确保 nightly 编译器中的内容已经相当稳定方面做得如此出色!

谁在使用 Rust?

Rust 继续作为一种用于生产的语言取得进展,大约 40% 的从事软件工作的受访者表示他们在日常工作中使用了 Rust。此外,Rust 在工作中的未来一片光明,近一半的知情人士表示他们的雇主计划在明年聘请 Rust 开发人员。

Do you use Rust at work?

似乎使用 Rust 的人中最大的变化似乎是学生,与去年相比,有更多的比例(约 15% vs 约 11%)的受访者回答说他们不在工作中使用 Rust,因为他们是学生或软件爱好者,因此没有软件方面的工作。

此外,受访者工作场所 Rust 的使用似乎正在扩大,44% 的受访者表示工作场所的 Rust 代码量为 10,000 行或更多,而去年为 34%。

Size of Rust code bases at work

改进 Rust

虽然 Rust 的使用似乎正在以健康的速度增长,但调查结果清楚地表明,要使 Rust 成为适合许多人工作流程的工具,仍有工作要做。

C++ 互操作

有趣的是,C++ 是最需要与 Rust 实现更好互操作性的语言,C 和 Python 分列第二和第三位。改进的 C++ 互操作性尤其经常被提及为提高 Rust 在工作场所使用率的一种方法。事实上,对于那些在大型代码库(100,000 行或更多代码)上工作的用户来说,C++ 互操作性和 - 不出所料 - 编译时间是提高其 Rust 体验的最常见方式。

If you want better language interop, with which language?

提高可学习性

当被问及如何提高 Rust 的采用率时,许多人表示要使 Rust 更容易学习,其中 15.8% 的受访者表示如果 Rust “不那么令人生畏,更容易学习或不那么复杂”,他们会更多地使用 Rust。此外,当直接询问人们认为我们如何才能提高 Rust 的采用率时,最大的反馈类别是文档和培训。

当我们要求受访者评估他们在 Rust 方面的专业知识时,有一个明显的峰值是 10 分中的 7 分。很难说这与其他语言相比如何,但似乎值得注意的是,相对较少的人愿意声称自己完全精通。然而,与去年相比,Rust 社区似乎正在获得该语言的专业知识。

How would you rate your expertise in Rust?

我们还询问了特定主题的难度。根据调查结果,最难学习的主题是生命周期管理,这并不奇怪,有 61.4% 的受访者表示生命周期的使用要么很棘手要么非常困难。

Percent of respondents rating each topic as tricky or very difficult.

似乎拥有 C++ 知识会有所帮助,有 20.2% 至少有一些 C++ 经验的受访者认为生命周期“非常困难”,而 22.2% 没有 C++ 知识的人认为该主题“非常困难”。总的来说,系统编程知识(定义为至少有一些 C 和 C++ 经验)往往会使 Rust 用户更加自信:那些具有系统编程经验的人在 Rust 专业知识方面给自己评分为 10 分中的 5.5 分,而那些具有 Java 或 C# 等静态类型垃圾回收语言经验的人给自己评分为 10 分中的 4.9 分。那些只有 Ruby 或 JavaScript 等动态类型语言经验的人给自己评分为 10 分中的 4.8 分。

毫不奇怪,人们使用 Rust 的频率越高,他们就越觉得自己是该语言的专家,其中 56.3% 的每天使用 Rust 的人给自己在 Rust 方面的专家程度评分为 10 分中的 7 分或以上,而每月使用 Rust 的人中只有 22% 给自己评分为 7 分或以上。

How would you rate your expertise in Rust? (Daily Rust users)

编译时间

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 在过去一年中的改进情况感到满意,而且对未来一年也持乐观态度。特别是,许多人对该语言的新功能(如 const generics 和泛型关联类型 (GAT))以及 2021 版本、异步改进、Bevy 游戏引擎、更多公司采用 Rust、WebAssembly 等感到兴奋!

祝愿 2021 年令人兴奋!🎉🦀