别再吹Rust了,它太难学了!

2023-11-03 01:20
文章标签 rust 难学

本文主要是介绍别再吹Rust了,它太难学了!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方“朱小厮的博客”,选择“设为星标”

后台回复"书",获取

后台回复“k8s”,可领取k8s资料

2020 年接近尾声,随之而来的是一年一度的 Rust 调查分析!这项调查是在 2020 年 9 月下半月进行的,历时两周。在此感谢所有参加此次调查的人,尤其是那些帮助翻译非英语回答的人。

闲话少叙,言归正题!

别再吹 Rust 了,太难学了

这项调查一共包含了 14 种语言版本,共收到 8323 份回答,创下了纪录。在调查中,83.0% 的受访者表示他们使用 Rust(创历史新高),而 7% 的受访者表示他们过去曾经用过 Rust,但现在已经不用了。

在被问及为什么停止使用 Rust 时,最大的一组(35%)说他们只是还没有学会(可能是因为没有时间,也或者是太难学了),其次是公司不使用 Rust (34%),还有一些人(19%)说改用 Rust 会比他们目前所选择的语言“慢”。

Rust 很好,稳定性强大

尽管 Rust 本身一直都有强大的稳定性保证,但它的稳定性往往不仅仅是确保新版本的编译器编译的用户代码不会崩溃。2020 年的 Rust 主要是清理和稳定已有的功能和计划。尽管这项工作尚未接近尾声,但受访者已经注意到,Rust 的稳定性总体上有所提高。

首先,我们要赞扬 rust-analyzer 和 IntelliJ Rust 插件 项目,这两个项目的用户群都比较满意。近四分之三的受访者指出,他们在 IDE 中看到了一些改进,但 rust-analyzer 和 IntelliJ 的用户尤其满意,47% 的 rust-analyzer 用户表示“有很大的改进”,而 IntelliJ 用户有 40% 也是这样说。

除了 IDE 体验的改进外,依赖 nightly 编译器的用户数量一直在减少,达到 28%:而去年这一数字是 30.5%。只有 8.7% 的受访者表示他们完全使用 nightly 编译器。在被问及为什么使用 nightly 时,最大的原因是为了使用 Rocket Web 框架,该框架已经宣布将在下一个版本中使用 Rust 的稳定版本。对于 nightly,第二大原因是 const 泛型,但随着 const 泛型的最小版本达到稳定,我们应该会看到对 nightly 这个特性的依赖降低了。

值得注意的是,使用 nightly 的大部分用户都是出于习惯,因为“nightly 已经足够稳定了”。当被问到什么东西常常会破坏人们的代码时,到目前为止,最多的回答就是在代码库中引入新的警告,警告会破坏构建(这不是 Rust 稳定性保证的一部分,尽管 Rust 的设计使得添加新的警告永远不会破坏依赖关系)。由于我们依靠 nightly 测试来捕获回归,所以这是一个非常好的迹象:nightly 足够稳定,而且还能允许持续的改变。向 Rust 基础设施、编译器和 libs 团队致敬,因为他们在确保 nightly 编译器中的内容已经相当稳定方面做得非常好!

但是,Rust 需要改进

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

重中之重:提高可学习性

当被问及如何提高 Rust 的采用率时,很多人提到让 Rust 更容易学习,15.8% 的受访者表示,如果 Rust“不那么可怕、更好学,或不那么复杂”,他们会更多地使用它。此外,当被直接问到如何改进 Rust 的采用时,最大的反馈类别是文档和培训。

当我们要求受访者对他们在 Rust 方面的专业知识打分时,出现了一个明显的峰值:7 分(满分为 10 分)。很难说这在不同的语言之间有多大的区别,但是很少有人愿意声称自己拥有全部的专业知识,这一点似乎很值得注意。不过,与去年相比,Rust 社区似乎的确在语言专业知识方面取得了长足进步。

我们还询问了具体题目的难度。根据调查结果来看,最难学的题目有点不出所料,是生命周期管理,61.4% 的受访者认为,使用生命周期要么很棘手,要么非常困难。

看来,拥有 C++ 知识确实有帮助,至少有部分 C++ 经验的受访者中,有 20.2% 的人指出寿命周期是“非常困难”的,而没有 C++ 知识的受访者中,有 22.2% 的人认为这个话题“非常困难”。总体而言,系统编程知识(被定义为至少有一些 C 和 C++ 方面的经验),往往使 Rust 用户更有信心:那些有系统编程经验的人给自己的 Rust 专业知识打了 5.5 分(满分 10 分),而那些有静态类型垃圾收集语言(如 Java 或 C#)经验的人给自己打了 4.9 分(满分 10 分)。仅有 Ruby 或 JavaScript 等动态类型语言经验的人,给自己的评分是 4.8 分(满分 10 分)。

不出所料,人们使用 Rust 的频率越高,就越觉得自己是这门语言的专家。每天使用 Rust 的人中,有 56.3% 的人在 Rust 方面的专家评分为 7 分或 7 分以上(满分 10 分),而每月使用 Rust 的人中,这一数字为 22%。

C++ Interop

有趣的是,C++ Interop 是与 Rust 更好互操作的最受欢迎的语言,而 C 和 Python 分别位居第二和第三。改进的 C++ Interop 尤其经常被提及,因为它可以用来改进 Rust 在工作中的具体使用。事实上,对于处理大型代码库(十万行或更多代码)的用户来说,C++ Interop 和编译时间是提高 Rust 体验的最常用方法。

改善编译时间

对 Rust 社区和 Rust 团队来说,一个重要的话题是改善编译时间。目前已经取得了进展,50.5% 的受访者表示他们认为编译时间有所改善。这种改善在拥有大型代码库(10000 行代码或更多)的受访者中尤为明显,其中 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 继续取得进展,大约 40% 从事软件开发的受访者表示,他们在日常工作中使用 Rust。此外,近半数的受访者说他们的雇主计划在下一年雇佣 Rust 开发者。

在使用 Rust 的人中,变化最大的似乎是学生,而更大比例的受访者回答说他们不会在工作中使用 Rust,因为他们是学生或者是软件爱好者,因此无需从事软件方面的工作(今年约 15%,去年约 11%)。

此外,Rust 在受访者工作场所的使用似乎越来越多了,44% 的受访者表示,工作场所的 Rust 代码数量达到或超过 1 万行,而去年这一数字为 34%。

总体而言,受访者不仅对 Rust 在过去一年里取得的进步持肯定态度,对未来一年的进步也持肯定态度。尤其是,Rust 语言的新特性让很多人感到兴奋,比如 const 泛型和泛型与关联类型(generic associated types,GATs)以及 2021 版,对 async 的改进,Bevy 游戏引擎,公司更多地采用 Rust,WebAssembly 等等!

原文链接:

https://blog.rust-lang.org/2020/12/16/rust-survey-2020.html

想知道更多?描下面的二维码关注我

后台回复"技术",加入技术群

后台回复“k8s”,可领取k8s资料

【精彩推荐】

  • 原创|OpenAPI标准规范

  • 如此简单| ES最全详细使用教程

  • ClickHouse到底是什么?为什么如此牛逼!

  • 原来ElasticSearch还可以这么理解

  • 面试官:InnoDB中一棵B+树可以存放多少行数据?

  • 微服务下如何解耦?对于已经紧耦合下如何重构?

  • 如何构建一套高性能、高可用、低成本的视频处理系统?

  • 架构之道:分离业务逻辑和技术细节

  • 星巴克不使用两阶段提交

点个赞+在看,少个 bug ????

这篇关于别再吹Rust了,它太难学了!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/334596

相关文章

Rust中的注释使用解读

《Rust中的注释使用解读》本文介绍了Rust中的行注释、块注释和文档注释的使用方法,通过示例展示了如何在实际代码中应用这些注释,以提高代码的可读性和可维护性... 目录Rust 中的注释使用指南1. 行注释示例:行注释2. 块注释示例:块注释3. 文档注释示例:文档注释4. 综合示例总结Rust 中的注释

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可

Rust 数据类型详解

《Rust数据类型详解》本文介绍了Rust编程语言中的标量类型和复合类型,标量类型包括整数、浮点数、布尔和字符,而复合类型则包括元组和数组,标量类型用于表示单个值,具有不同的表示和范围,本文介绍的非... 目录一、标量类型(Scalar Types)1. 整数类型(Integer Types)1.1 整数字

Rust中的Option枚举快速入门教程

《Rust中的Option枚举快速入门教程》Rust中的Option枚举用于表示可能不存在的值,提供了多种方法来处理这些值,避免了空指针异常,文章介绍了Option的定义、常见方法、使用场景以及注意事... 目录引言Option介绍Option的常见方法Option使用场景场景一:函数返回可能不存在的值场景

【Rust练习】12.枚举

练习题来自:https://practice-zh.course.rs/compound-types/enum.html 1 // 修复错误enum Number {Zero,One,Two,}enum Number1 {Zero = 0,One,Two,}// C语言风格的枚举定义enum Number2 {Zero = 0.0,One = 1.0,Two = 2.0,}fn m

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(