2019 年 Rust 调查结果

2020 年 4 月 17 日 · Rust 调查团队

提供 中文 | Chinese 翻译

各位 Rustaceans,大家好!

我们很高兴地发布第四次年度 Rust 社区调查的结果。在深入分析之前,我们要衷心感谢所有抽出时间回复的人!你们对于 Rust 年复一年的持续改进至关重要!

让我们先看看调查对象。

调查对象

该调查以 14 种不同的语言提供,我们收到了 3997 份回复。

以下是我们收到的回复的语言分布。

  • 英语:69.6%
  • 中文:10.8%
  • 德语:4.3%
  • 法语:3.3%
  • 日语:3.0%
  • 波兰语:1.2%
  • 葡萄牙语:1.2%
  • 西班牙语:0.9%
  • 韩语:0.8%
  • 意大利语:0.6%
  • 瑞典语:0.5%
  • 越南语:0.2%

在 2019 年的调查中,82.8% 的回复者表示他们使用 Rust,7.1% 表示他们目前不使用 Rust 但过去使用过,10.1% 表示他们从未使用过 Rust。

如果将其与 2018 年的调查进行比较——其中 75% 的回复者表示他们使用 Rust,8% 表示他们目前不使用 Rust 但过去使用过,8% 表示他们从未使用过 Rust——2019 年有更多回复者使用 Rust。

回顾 Rust 2018

2018 年 12 月,我们发布了 Rust 2018 版本 - Rust 1.31.0。在 2019 年的调查中,92% 的 Rust 用户表示他们正在使用新版本。85% 的人表示升级到 Rust 2018 版本很容易。

接下来,我们要求用户评价 Rust 语言关键方面的改进情况。

How has adoption level improved

How has async io improved

How has compile time improved

How has GUI development improved

How has IDE support improved

How has library support improved

How have stable language features and crates improved

How has Rust documentation improved

How has the learning curve improved

How has tools and support improved

总的来说,Rust 语言的许多方面在 2018 版本中被认为是“有所改进”。

会议和社区

我们注意到英语和其他语言的结果之间存在一些差异。在非英语语言调查子集中,发现的大多数问题和疑虑与英语语言中的相同。然而,在非英语使用者子集中,一个担忧/趋势很突出——希望以其母语或他们进行调查时使用的语言获得 Rust 文档。这在中文组中尤其明显,但这可能是由于其代表性较高。

我们正在使用 GitHub 问题标签“Translation”跟踪 正在进行的翻译工作

我们收到了很多关于如何改进 Rust 并使其对更多人更受欢迎的反馈。我们无法在此处包含所有内容,因此这里总结了一些引起我们注意的反馈。

人们普遍要求提供更多关于 Rust 的学习材料。在专业知识方面,主要需要初级和中级水平的材料。许多请求还专门要求提供视频内容。

人们提到参与的常见障碍是社交焦虑和可访问性。提到的一个常见原因是,对于有阅读障碍的人来说,某些资源难以阅读。

以下是对“我们可以采取什么行动来让你感到更受欢迎?”问题的具体回答。

  • 我觉得自己经验不足,技能不足,无法参与 Rust 社区
  • 宣传更多新手可以贡献/参与的方式
  • 更有组织的指导、在线课程
  • 制作关于如何为编译器做出贡献的视频教程。我很想做出贡献,但我感到害怕
  • 对于新手来说,很难找到资源来了解 Rust 如何在开源项目中使用,以便他们在学习语言的同时看到实际操作。
  • 更多教程/博客,以读者是完全初学者的角度解释简单的 Rust 和编码概念
  • 更多中级教程。我们已经有数百万个“Rust 入门”。
  • 更小型的帮助小组 - 例如,社交焦虑使得在 Discord 中交流变得困难
  • 不要在欧盟深夜召开同步会议。减少同步会议,和/或更一致地发布和汇总团队会议的会议记录。

这些问题绝对是我们在 2020 年及以后要解决的问题。

谁在使用 Rust,用途是什么?

How often do you use Rust

Rust 的日常使用率略有上升,为 27.63%(去年略低于 25%,2017 年为 17.5%)。每日或每周使用率也继续略有上升。今年为 68.52%,去年为 66.4%,2017 年为 60.8%。

How would you rate your Rust expertise

我们还询问了用户如何评价他们的 Rust 专业知识 - 明显的高峰在“7”左右。

How would you rate your Rust expertise

为了更深入地了解这一点,我们将用户的自我评估的 Rust 专业知识与他们使用 Rust 的时间进行了关联。

What title best matches your role for Rust users

对于一些更大的背景,我们研究了全职使用 Rust 的用户在其组织中倾向于拥有的职称(调查回复者可以选择多个)。

毫不奇怪,Rust 用户最常见的头衔是程序员/软件工程师。

What industry do you work in for Rust users

为了获得更多背景信息,我们要求 Rust 调查回复者确定他们所在的行业。

对于全职使用 Rust 的用户来说,最常见的行业是后端 Web 应用程序。

Size of summed Rust projects

大多数 Rust 项目(43%)的代码行数在 1,000 到 10,000 行之间。中大型 Rust 项目(总计超过 1 万行代码的项目)继续呈现上升趋势。它们从 2016 年的 8.9% 增长到 2017 年的 16%,2018 年的 23%,到 2019 年的 34%

为什么不使用 Rust?

一个受欢迎的 Rust 社区的重要组成部分是接触非用户。

Why did you stop using Rust?

当我们询问某人为什么停止使用 Rust 时,最常见的回答是“我的公司不使用 Rust”——这表明 Rust 的采用仍然是最大的原因。之后,学习曲线、缺乏所需的库、切换到 Rust 导致速度变慢以及缺乏 IDE 支持是用户停止使用 Rust 的最常见原因。

Why have you never used Rust?

对于表示他们从未使用过 Rust 的用户来说,大多数人表示“我还没有学习 Rust,但我很想学”或“我的公司不使用 Rust”——再次表明采用是主要的障碍。

为了获得更多背景信息,我们还研究了非 Rust 用户认为最符合他们角色的头衔。

What title best matches your role for non Rust users

与 Rust 用户一样,最常见的头衔是程序员/软件工程师。

What industry do you work in for non Rust users

与 Rust 用户一样,最常见的行业是后端 Web 应用程序。

I would use Rust more often if...

我们还询问了用户什么会导致他们更频繁地使用 Rust。大多数人表示,如果他们的公司采用 Rust,如果 Rust 有更多他们需要的库,以及如果 IDE 支持更好,他们会更频繁地使用 Rust。在此之后,最常见的原因是指需要改进学习曲线和互操作性。

由于采用似乎是阻止一些受访者使用 Rust 的最大问题,让我们深入了解一下。

Rust 采用 - 仔细研究

首先,我们询问我们可以做些什么来改善 Rust 的采用。

How can we improve Rust for better adoption

一些用户给出了具体的例子

  • “尽可能平稳的学习曲线,对于一家小型企业来说,即使需要 4-6 周才能变得高效,也是一个很大的要求”
  • “更高的市场渗透率”
  • “更稳定的库”
  • “一个像 Rails、Django 和 Phoenix 这样的全栈 Web 框架”
  • “更好的文档、更多示例、关于使用哪些 crate 的建议”
  • “更强调它如何是 C 或 C++ 的更安全替代方案(而且通常真的应该是默认选项)。”
  • “改进编译时间。编译开发构建至少要像 Go 一样快,这将是我们考虑 Rust 的基本条件。(发布构建可以慢一些。)”
  • “更好的平台支持”
  • “安全性和性能,成本效益和“绿色”(低碳足迹)语言”
  • “针对 ARM 的嵌入式开发”
  • “更好的 GUI 框架,类似于 Qt 或直接通过绑定使用 Qt。”

大多数人表示,Rust 的成熟度——例如更多的库和完整的学习资源以及更成熟的生产能力——将使 Rust 更具吸引力。

让我们仔细研究一下其中的每一个,从对更成熟的库的需求开始。

库 - 仔细研究

当我们询问用户他们认为对 Rust 生态系统至关重要的库时,以下是前十个回复

  • serde
  • rand
  • tokio
  • async
  • clap
  • regex
  • log
  • futures
  • hyper
  • lazy_static

What dependencies are 1.0 or above

我们还询问了用户他们使用的依赖项中有多少是 1.0 或更高版本。

  • 0.8% 表示“全部”
  • 6.7% 表示“大多数”
  • 65.9% 表示“一些”
  • 5.2% 表示“无”
  • 21.4% 表示“我不知道”

IDE 和工具 - 仔细研究

对 Rust 的 IDE 支持也被认为是采用的障碍。

What editor are you using

当我们询问用户他们使用什么编辑器时,Vim 和 VSCode 是迄今为止最受欢迎的,其次是 Intellij。

我们还询问了用户使用什么 IDE 设置

  • 43.3% 表示 RLS
  • 21.7% 表示 Intellij
  • 15.2% 表示 Rust-analyzer
  • 12.4% 表示无(或 CTAGS)
  • 4.2% 表示仅 Racer

What platform are you developing on

至于用户在其上开发的平台 - Linux 和 Windows 继续占据主导地位。

  • 55% 的 Rust 用户在 Linux 上开发
  • 24% 在 Windows 上开发
  • 23% 在 macOS 上开发

我们发现绝大多数用户都使用当前稳定的 Rust 版本(63%)。应该注意的是,该调查允许受访者为他们使用的 Rust 版本选择多个选项。

  • 30.5% 使用 nightly 版本
  • 2.5% 使用 Beta 版本
  • 63% 使用当前稳定版本
  • 3.1% 使用之前的稳定版本
  • 0.6% 使用自定义分支
  • 0.3% 不知道

令人惊讶的是,在其工作流程中使用 Nightly 编译器的用户数量下降到 20%。去年超过了 56%。

学习曲线 - 仔细研究

Rust 以其显著的学习曲线而闻名。

How long did it take to be productive

大约 37% 的 Rust 用户在使用 Rust 不到一个月的时间内就感到生产力提高了 - 这与去年的百分比(40%)相差不大。超过 70% 的人在第一年就感到生产力提高了。不幸的是,与去年一样,用户仍然存在困难 - 21% 表示他们尚未感到生产力提高。

Expertise level of respondents who don't feel productive yet

作为兴趣点,我们选取了尚未感到生产力提高的用户子集,并绘制了他们对 Rust 专业知识的评分。这表明尚未感到生产力提高的人具有较低到中级的专业知识水平 - 这些群体最需要来自我们的学习材料、文档等的支持。

互操作性 - 仔细研究

多年来,一些用户表示希望 Rust 与其他语言具有更好的互操作性。

What languages would you want to use with Rust

当我们询问用户希望 Rust 与哪些语言实现互操作时,得到的答案五花八门,但 C 语言占据主导地位,其次是(有点令人惊讶的)R 语言,紧随其后的是 C++。需要注意的是,受访者可以针对此问题选择多种语言,这些百分比是基于总回复数计算的。

What platforms are you targeting

当谈到应用程序的目标平台时,Linux 仍然是首选,占 36.9%,Windows 位居第二,占 16.3%。紧随 Windows 之后的是 macOS 和 Web Assembly,各占 14%。我们还看到越来越多的用户以 Android 和 Apple iOS 为目标平台。

结论

总的来说,我们的用户表示生产力仍然是他们工作的重要目标(无论是否使用 Rust)。结果显示,阻碍 Rust 使用的最大问题是采用。学习曲线仍然是一个挑战 - 我们似乎最需要改进对中级用户的后续支持 - 但库和工具也是如此。

感谢所有参与本次调查的用户,这些结果对我们非常有帮助,尤其是关于如何改进 Rust 语言和整个 Rust 生态系统方面。我们期待在 2020 年及以后继续为您服务!