大多数尝试过Rust的人都希望继续使用它。但是如果你没有使用过它,你可能会想——什么是Rust,它为什么如此特别,是什么让它在开发人员中如此受欢迎?
Rust是一种低级静态类型多范式编程语言,专注于安全性和性能,解决了C/C++长期以来一直在努力解决的问题,例如内存错误和构建并发程序。它具有以下三个优点:
1.靠语法和编译器技术,做到了更好的内存安全特性;
2.防止数据竞争的数据所有权模型,并发更容易;
3.抽象没有性能损失。
一、没有段错误
系统编程需要有内存管理的低级控制,然而不幸的是,手动管理在像C这样的语言中带来了很多问题。尽管有像这样那样的工具,但捕捉内存管理问题是很棘手的。
Rust可以防止这些问题,它的所有权系统在编译时就分析程序的内存管理,确保不会发生由于内存管理不善导致的错误,并且不需要垃圾收集。
此外,如果您想以类似C的方式进行超级优化的实现,也允许你这样做,使用unsafe关键字将它们与其余代码明确分开。
二、更容易并发
Rust可以在编译时防止数据竞争。当两个线程同时访问同一内存时会发生数据竞争,它们可能导致一些令人讨厌的、不可预测的行为。值得庆幸的是,防止未定义的行为就是Rust的设计目的。
三、零成本抽象
零成本抽象确保您使用的抽象几乎没有运行时开销。简单来说:低级代码和用抽象编写的代码之间没有速度差异。这些东西重要吗?是的。例如,Microsoft在过去12年中解决的问题中约有70%是内存错误。与谷歌浏览器相同。
四、Rust有什么用?
Rust是一种相当低级的语言,当你需要从你拥有的资源中榨取更多时,它很有用。由于它是静态类型的,类型系统可以帮助您在编译期间阻止某些类别的错误。因此,当您的资源有限并且您的软件不会失败很重要时,您将倾向于使用它。相比之下,像Python和JavaScript这样的高级动态类型语言更适合快速原型之类的东西。
五、Rust是面向对象的吗?
Rust有一些面向对象的特性:你可以创建Struct,并且它们可以包含数据和该数据的相关方法,这有点类似于类减去继承。但与Java等语言相比,Rust没有继承,而是使用trait来实现多态。
六、Rust是函数式编程语言吗?
尽管Rust表面上与C非常相似,但它深受ML语言家族的影响。(包括OCaml、F#和Haskell等语言。)例如,Rust特征基本上是Haskell的类型类,并且Rust具有非常强大的模式匹配功能。
Rust确实具有比函数式程序员通常习惯的更多的可变性。我们可以这样想:Rust和FP都试图避免共享可变状态。FP专注于避免可变状态,而Rust试图避免危险的共享部分。Rust还缺少许多使函数式编程可行的东西,例如尾调用优化和对函数式数据结构的良好支持。总而言之,对Rust中的函数式编程有足够的支持,以至于有人写了一本关于它的书。
七、Rust适合Web开发吗?
Rust有多个Web开发框架,例如ActixWeb和Rocket,它们非常有用且构建良好。特别是,如果您正在寻找速度方面的优化,ActixWeb会在框架基准测试中名列前茅。
不过,Rust没有任何东西可以与Django和Rails等框架生态系统竞争,它还是一种相当年轻的语言,因此缺少很多方便的实用程序库,这意味着开发过程并不那么简单和容易。