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 插件 项目致敬,这两个项目都拥有相对满意的用户群。近四分之三的受访者指出,他们看到了 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 的依赖减少,因为该功能已经可以使用。

Which versions of Rust do you use?

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

谁在使用 Rust?

Rust 作为一种用于生产的语言,正在不断取得进展,大约 40% 在软件领域工作的受访者表示,他们在日常工作中使用 Rust。此外,Rust 在工作中的未来一片光明,近一半知道的人表示,他们的雇主计划在明年招聘 Rust 开发人员。

Do you use Rust at work?

使用 Rust 的最大变化似乎是学生,因为有更多比例的学生(约 15% 对比去年的约 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 方面的专业知识进行评分时,在 7 分(满分 10 分)处出现了一个明显的峰值。很难说这与其他语言相比如何,但似乎值得注意的是,相对较少的人愿意声称自己完全精通。然而,与去年相比,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 方面的专业知识的评分为 5.5 分(满分 10 分),而那些拥有 Java 或 C# 等静态类型垃圾回收语言经验的人的评分为 4.9 分。那些只有 Ruby 或 JavaScript 等动态类型语言经验的人的评分为 4.8 分。

不出所料,人们使用 Rust 的频率越高,他们就越觉得自己是该语言的专家,56.3% 的每天使用 Rust 的人把自己在 Rust 方面的专家程度评为 7 分或更高(满分 10 分),而每月使用 Rust 的人只有 22%。

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 在过去一年中的改进以及未来一年的发展都持积极态度。特别是,许多人表示他们对语言的新功能感到兴奋,例如常量泛型和泛型关联类型 (GAT),以及 2021 版,对异步的改进,Bevy 游戏引擎,更多公司采用 Rust,WebAssembly 等等!

祝 2021 年精彩纷呈!🎉🦀