又一年过去了,这意味着又一次 Rust 调查。今年是 Rust 的第三次年度调查。今年的调查首次使用了多种语言进行。总共有 **14** 种非英语语言被涵盖。来自非英语语言的回复占到了所有回复的 25%,帮助我们将回复数量推高到创纪录的 **5991 份**。在开始分析之前,我们衷心感谢所有抽出时间回复并提出想法的人们。正是因为您的帮助,Rust 才能年复一年地持续改进。
尽管回复数量有所增加,今年的 Rust 用户比例也随之上升。去年 Rust 用户占 66.9%,而今年近四分之三的回复来自 Rust 用户。
Rust 用户
Rust 使用时长
我们看到 Rust 正在不断涌入新用户。调查时,约 23% 的 Rust 用户使用时长不超过 3 个月。同样地,近四分之一的用户使用 Rust 至少两年了。
超过 40% 的 Rust 用户在使用不到一个月时就感到高效,超过 70% 的用户在第一年内感到高效。不幸的是,用户中存在明显的困难,超过 22% 的用户尚未感到高效。
仔细观察这些在 Rust 中感到效率低下的用户,只有大约 25% 的人处于刚使用的第一个月。这里的挑战在于找到方法帮助用户提升效率,让他们不再受困。
您使用 Rust 的频率?
Rust 项目持续趋向大型化,整体投入也更大。中大型 Rust 项目(代码行数分别超过 1 万和 10 万行)的比例已从 2016 年的 8.9% 增长到 2017 年的 16%,今年更是达到了 23%。
我们也看到 Rust 常规使用率有所增长。去年的日常使用率为 17.5%,现在几乎四分之一的用户每天都使用 Rust。总的来说,Rust 的每周总使用率已从 60.8% 上升至 66.4%。
Rust 熟练度
Rust 熟练度并非简单的单峰曲线,而是呈现两个峰值:一个在“3”附近,另一个在“7”,这表明用户倾向于认为自己刚脱离新手阶段,或者是有经验但不一定是专家。
Rust 用户普遍认为 Enums(枚举)和 Cargo 是相对容易的概念;其次是 Iterators(迭代器)、Modules(模块)和 Traits(特征)。更有挑战性的概念是 Trait Bounds(特征约束)和 Unsafe(不安全代码)。最后,最具挑战性的概念是 Macros(宏)、Ownership & Borrowing(所有权与借用)和 Lifetimes(生命周期)。这些挑战与我们往年听到的反馈非常吻合,并且仍然是持续提高生产力的重点,例如 NLL 和持续改进的宏系统。
有趣的是,我们发现 Rust 并非用户最熟悉的编程语言。实际上,它排在 Python 之后,位居第二。
Rust 工具链
自去年以来,当前稳定版的使用人数保持相似。可能令人惊讶的是,在工作流程中使用 Nightly(每晚构建版)编译器的用户数量持续上升。Nightly 使用率已连续两年增长,目前超过 56%(高于去年的 51.6%)。
当被问及为何使用 Nightly 时,人们给出了广泛的原因,包括:访问 2018 Edition、asm(汇编)、async/await(异步/await)、clippy、embedded development(嵌入式开发)、rocket、NLL、proc macros(过程宏)以及 wasm。
在常规编译器更新期间遇到中断的人数比例与去年相同,有 7.4% 的人表示他们曾经历过中断。
中断通常只需要轻微的修复,尽管有些人报告需要中度或重要的修复才能升级到下一个稳定版编译器。
我们再次看到 rustup
表现强劲,它仍然占 Rust 安装的 90%。Linux 发行版则以 17% 的比例遥遥领先。
rustfmt
和 rustdoc
等工具表现出色,获得了大量积极支持。紧随其后的是 clippy
工具——尽管用户较少,但其用户很喜欢这个工具。IDE 支持工具 Rust Language Server
和 racer
获得了积极支持,但不幸的是,在受访工具中,它们产生的反对票和评论相对较多。bindgen
工具的用户群相对较小。
Rust 工作流程
Linux 仍然是 Rust 开发者中的主导力量,占据了大约 80% 的 Rust 开发者。Windows 的使用率从去年的 31% 小幅增长到今年的 34%,这是它连续第二年增长。
Linux 和 Windows 作为 Rust 应用的目标平台持续表现强劲。其他平台与去年基本保持一致,但有一个例外:WebAssembly。这项新技术表现出了惊人的增长,从去年的 13% 几乎翻倍到今年的 24%。
连续两年占据编辑器榜首的 Vim 现在终于被 VSCode 超越,VSCode 的 Rust 开发者使用率从去年的 33.8% 增长到今年的 44.4%。
Rust 在工作中的应用
Rust 在工作场所继续保持稳步增长。我们看到 Rust 在全职和兼职使用方面的年同比增长,全职使用率从去年的 4.4% 增长到今年的 8.9%,兼职使用率从去年的 16.6% 增长到今年的 21.2%,全职 Rust 商业使用量翻了一番。总的来说,Rust 的商业使用率从 21% 增长到略高于 30% 的 Rust 用户。
Rust 还有更多机会进入更多公司,超过三分之一的用户表示他们的公司在未来一年内不打算评估 Rust。结合调查数据中近半数非用户需要公司支持的反馈,这表明需要进一步加强对公司的推广或提供更多面向公司的 Rust 信息。
欢迎度感受
Rust 社区努力的一个重要部分是确保 Rust 项目对于其用户来说是一个受欢迎的地方。应该鼓励新用户去探索、分享想法,并通常做自己。
被问及此问题时,当前 Rust 用户和非用户大多感到受欢迎,但超过四分之一的受访者表示不确定。这些回答也存在一些地区差异。例如,俄语版调查的回答显示不受欢迎的感受比例翻倍,达到 4%。中国大陆则更高,达到 8%。
这里的挑战在于如何帮助世界各地的 Rust 社区感受到他们是构成 Rust 独特性的一部分,因为 Rust 持续在世界更多地区建立强大的影响力。
在 Rust 社区中,自认为是科技界代表性不足群体成员的人数逐年缓慢增长。调查也突出了一些挑战,例如女性人数仍然低于编程领域的行业平均水平。
非 Rust 用户
一个受欢迎的 Rust 社区很大程度上也包括接触非 Rust 用户。与往年一样,我们再次询问了人们不使用 Rust 的原因。
对于那些停止使用 Rust 的人来说,超过 50% 的人在使用不到一个月后就停止了。同样地,大约 50% 的离开者在使用 Rust 一个月以上后才停止使用。
许多非用户回复说他们确实想学习 Rust,但有一些因素阻碍了他们。首先是受访者所在的公司本身不使用 Rust。近一半的非用户因缺乏公司支持而受阻。
此外,四分之一的非用户因觉得 Rust 太令人生畏或过于复杂而进展缓慢。提高 Rust IDE 支持的工作有所帮助(从 25% 降至 16%),但我们仍然看到非用户中强烈希望获得更好 IDE 支持的呼声。
挑战
与往年一样,我们请您就 Rust 的改进之处提出意见。今年,这些反馈中既有熟悉的主题,也有一些新的。今年的十大主题是:
- 需要更好的库支持
- 更好的 IDE 体验
- 更广泛地推广 Rust
- 更丰富的工具和支持生态系统
- 改进学习曲线
- 需要重要的语言特性和 crate 达到稳定并获得支持
- 支持异步编程
- 支持 GUI 开发
- 更好的文档
- 缩短编译时间
今年新增的需求是日益增长的对 GUI 开发的支持,这表明 Rust 不仅在服务器端持续增长,人们也感到需要向应用开发领域拓展。
“改进 Rust 的宣传。许多人不知道它。”
评论提醒我们,虽然 Rust 在某些圈子里可能广为人知,但它仍有增长空间,在许多技术圈中,Rust 可能尚未被熟知。
“持续关注推广/教程/书籍/新手体验将在未来几年带来回报。”
除了推广之外,更全面的文档集反过来也能帮助吸引更广泛的受众。
“开发者工具的稳定性和成熟度,让配置工作环境和调试应用变得更容易。”
许多人评论了 IDE 支持,指出 RLS 不稳定或不准确,同时也需要更强大的 IDE 方案来覆盖更多领域,例如更容易的调试。
“生态系统和库的成熟度。拥有良好的‘标准’库生态系统对语言的未来至关重要。”
一个共同的主题仍然是需要推动库的完善并增加用户可以使用的“标准”库集。一些评论指出,这不是维护者的错,他们已经在努力编写和发布 crate 了,而是普遍需要更多公司参与并提供商业支持。
“‘整合’文档的人机工程学和可发现性。”
有些人指出,人机工程学与更丰富的文档是相辅相成的,它们并非独立的概念,而是应该以统一的方法共同解决的挑战。
展望未来
今年的调查是迄今为止最出色的一次。它不仅是规模最大的社区调查,也是首次涵盖非英语语言的调查。Rust 持续稳步增长,随之而来的是,其优势和挑战也展现在更广泛的受众面前。
我们期待利用您的反馈来规划 2019 年的工作,并很高兴看到我们接下来能将 Rust 带向何方。