别再吹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练习】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!(

第二十四章 rust中的运算符重载

注意 本系列文章已升级、转移至我的自建站点中,本章原文为:rust中的运算符重载 目录 注意一、前言二、基本使用三、常用运算符四、通用约束 一、前言 C/C++中有运算符重载这一概念,它的目的是让即使含不相干的内容也能通过我们自定义的方法进行运算符操作运算。 比如字符串本身是不能相加的,但由于C++中的String重载了运算符+,所以我们就可以将两个字符串进行相加、但实际

【Rust光年纪】Rust 机器人学库全景:功能、安装与API概览

机器人学+Rust语言=无限可能:六款库带你开启创新之旅! 前言 随着机器人技术的快速发展,对于机器人学领域的高效、可靠的编程语言和库的需求也日益增加。本文将探讨一些用于 Rust 语言的机器人学库,以及它们的核心功能、使用场景、安装配置和 API 概览,旨在为机器人学爱好者和开发人员提供参考和指导。 欢迎订阅专栏:Rust光年纪 文章目录 机器人学+Rust语言=无限可能:

第二十二章 rust数据库使用:sea-orm详解

注意 本系列文章已升级、转移至我的自建站点中,本章原文为:rust数据库使用:sea-orm详解 目录 注意一、前言二、项目管理三、迁移文件四、实体文件五、业务使用 一、前言 只要开发稍微大型一点的项目,数据库都是离不开的。 rust目前并没有特别成熟的数据库框架,sea-orm这个框架是我目前所看到的成熟度最高的一个,并且仍在积极开发中。 所以本文将以sea-orm框

Rust使用之【宏】

一、简单使用clap clap = { version = "4.5.17", features = ["derive"] } 其中,什么是features = ["derive"]:表示你希望在添加 clap 依赖时启用 derive 特性。这通常意味着你希望使用 clap 的派生(derive)宏功能,这些功能可以简化创建命令行接口的代码。例如,derive 特性可以让你使用 #[der

第二十一章 rust与动静态库的结合使用

注意 本系列文章已升级、转移至我的自建站点中,本章原文为:rust与动静态库的结合使用 目录 注意一、前言二、库生成三、库使用四、总结 一、前言 rust中多了很多类型的库,比如前面章节中我们提到基本的bin与lib这两种crate类型库。 如果你在命令行执行下列语句: rustc --help 那么你将能找到这样的内容: --crate-type [bin|li

Rust的常数、作用域与所有权

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust到底值不值得学,之一  -CSDN博客 Rust到底值不值得学,之二-CSDN博客 Rust的数据类型-CSDN博客 3.7  常数的数据类型 在Rust语言中,变量有类型,常量也有类型。我们知道,在定义const常量的时候,就要

搭建Rust的开发环境

目标 我没有使用过Rust,但我听说它是一个可靠的语言,可以保证内存安全和线程安全。我对此很有兴趣,就想试一试这个语言。 在官网上有介绍他们所推荐的编辑器: 我将选择 Visual Studio Code (关于 【Visual Studio】和【Visual Studio Code】的区别:【VS】是完整的集成开发环境,而【VSCode】只算的上是一个相对轻量级的文本编辑器,并附带一些便捷

Rust的数据类型

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust到底值不值得学,之一  -CSDN博客 Rust到底值不值得学,之二-CSDN博客 3.5  数据类型的定义和分类 在Rust编程中,所谓数据类型,就是对数据存储的安排,包括存储单元的长度(占多少字节)以及数据的存储形式。不同的