我们为什么用Rust?

作者&投稿:耿虹 (若有异议请与网页底部的电邮联系)
~

Rust 是一门系统级编程语言,被设计为保证内存和线程安全,防止段错误产生。作为系统级编程语言,它的基本理念是 “零开销抽象”。理论上来说,它的速度与 C/C++ 同级。Rust 可以被归为通用的、多范式、编译型的编程语言,类似 C/C++。与这两门编程语言不同的是,Rust 是线程安全的!Rust 编程语言的目标是,创建一个安全和并发的软件系统。它强调安全性、并发和内存控制。尽管 Rust 借用了 C/C++ 的语法,却杜绝了空指针和悬挂指针,而这二者是 C/C++ 中系统崩溃、内存泄露和不安全代码的根源。

虽然 Rust 是一门系统级编程语言,但并不意味着它只能写底层程序(操作系统、驱动、工具、数据库、搜索引擎等),它的抽象层次之高完全给人惊艳的感觉,实践证明它对问题建模的能力和方便性不比 C++/Java/Python/Ruby 差。但 Haskell 这类超高抽象语言,也不是 Rust 的发展方向。Rust 力求在抽象与现实世界中找到一个平衡。

在向SCRY 项目研发负责人Peace交流时,他说到,当时选择Rust,主要有两个原因:一是有高性能要求时,原来好多人会选择C/C++,现在多了一个Rust选择,还解决了C/C++许多不足;二是Rust应用在区块链有成熟的参考。最后Peace给了未来使用SCRY项目开源部分的学习者一些建议,“快速的学习能力,快乐地把小事做好,正确合理定义一个函数。”

Rust到底有多受欢迎呢?目前,Rust 已经在 StackOverflow 的年度语言评选中,连续 4 年荣获“程序员最喜爱语言”第一名(2016, 2017, 2018, 2019)。以下是 2019 年调查的截图:


但比起Python、C、C++ 等,Rust还只是个小年轻。调查显示,更多的人不去学习 Rust 还是因为 Rust 没有足够的活跃商业项目让它成为企业的一部分。


不过,Rust 在工作中的占比也越来越高。过去一年间,Rust 在商业应用上有着令人惊讶的成长。下面是部分人们熟知的公司:

国内的百度,阿里,也已经在内部小范围的使用上了Rust。

就在本月初,微软还推出了基于 Rust 的 Windows 运行时项目 Rust/WinRT。该项目和 C++/WinRT 一脉相承,用标准语言和编译器为 Windows 运行时构建语言投影,从而方便 Rust 开发人员调用 Windows API,更轻松地使用 Rust 构建各类 Windows 应用和组件。

(https://blogs.windows.com/windowsdeveloper/2020/04/30/rust-winrt-public-preview/)

2015年下半年,Gavin Wood 博士创立了 Parity Technologies,推出以太坊(Ethereum)客户端 parity,而这个 parity 客户端就是使用Rust写的。实际在 parity 出现之前,MaidSafe项目就已经出现了。MaidSafe用 Rust 语言尝试了很多东西。Rust语言本身强调的安全性以及MaidSafe这些前沿项目,可能给了 Gavin 充分的理由选择 Rust 作为 parity 开发语言。

写一个有效率的、符合习惯的Rust程序比写一个有潜在危险的程序容易得多。下面是Linux内核在2018年一月到四月期间发现的bug:


而对于Rust而言,上图右侧占比 51% 的部分,从语言层面就可以避免。也就是说,对Rust来说,根本不存在上图右边这些问题。

Rust在实现内存安全和并发安全的同时,并没有以损失性能为代价。更牛逼的是,它甚至是用同一套抽象解决了内存安全和数据竞争这两个不同领域的问题。

Rust的零开销抽象让你在享受安全性的同时,又不损失性能。这正是传统的程序员梦寐以求的。

Solana的首席执行官Anatoly Yakovenko在一段采访中提到刚开始项目的时候,他用了两周时间使用C语言,但是当用到一些外部库的时候,还得写makefile,手动下载这些库,比较麻烦。所以,他决定尝试一下Rust。就在那一刻,“Holy shit, this is amazing.”“我才觉醒到,这是一个和C语言一样快的语言,并且还给了我Haskell般的类型安全。Rust击中了我,这真的很酷。”

今天Rust满5岁了(2020年5月15日,是Rust语言正式发布5年生日)。Rust语言正在IT工业各个领域快速发展,而由于区块链本身的特质,区块链领域是较早接纳Rust的领域之一。在区块链领域,Rust正以势如破竹之势占领区块链新兴项目市场,很多著名的老项目也在考虑转向使用Rust重写。

祝Rust 5周年生日快乐!


参考:

1. Why Rust?

https://www.parity.io/why-rust/

2. Meetup with Solana, Zcash, & Parity — Why Rust Is Ideal For Blockchain Development?

https://medium.com/solana-labs/solana-at-portland-dev-meetup-72e4dc7ad32c

3. Rust 2017 Survey Results

https://blog.rust-lang.org/2017/09/05/Rust-2017-Survey-Results.html

4. 微软开源 Rust/WinRT,方便使用 Rust 构建 Windows 应用

https://www.oschina.net/news/115354/microsoft-winrt

5. Stack Overflow’s Developer Survey Results 2019

https://insights.stackoverflow.com/survey/2019#developer-profile-_-what-inpidual-person-will-have-the-most-influence-in-tech-this-year

6. 当区块链遇上Rust

https://rustcc.cn/article?id=289da7be-19ce-49fe-af6d-3a7946404ca6




我们为什么用Rust?
在向SCRY 项目研发负责人Peace交流时,他说到,当时选择Rust,主要有两个原因:一是有高性能要求时,原来好多人会选择C\/C++,现在多了一个Rust选择,还解决了C\/C++许多不足;二是Rust应用在区块链有成熟的参考。最后Peace给了未来使用SCRY项目开源部分的学习者一些建议,“快速的学习能力,快乐地把小事...

Rust VS Python:为什么越来越流行,取代榜一 Python?
公司正越来越多地用更高效的编程语言(如 Rust)取代速度较慢的编程语言。没有其他语言能像 Rust 一样在简单和速度之间做出平衡。 Rust 已经发展成为一门易于使用的编程语言,因此它的使用率有所提高。尽管 Python 在机器学习\/数据科学社区中占有坚实的地位,但 Rust 在未来很可能被用作 Python 库更有效的后端。

Carbon语言与Rust语言有何不同?你更倾向于哪一种?
性能:Rust是一种高性能的系统编程语言,它的设计目的是提供类似于C++的性能,同时提高内存安全性和并发性。另一方面,Carbon是一种基于LLVM的编译型语言,它的性能可能不如Rust,但它提供了更高级别的抽象和更简单的语法。内存安全:Rust具有内置的内存安全性,它通过使用所有权系统和生命周期检查来防止常...

Linux6.1合并补丁加入对Rust的初步支持,将给人们带来哪些新奇体验?_百度...
2.更安全的代码:Rust的所有权系统和生命周期检查可以防止内存泄漏、空指针解引用和其他常见的编程错误。这意味着使用Rust编写的程序更加安全,减少了运行时错误的可能性。3.更好的并发性:Rust的所有权系统和借用检查机制使得它在处理并发编程任务时表现出色。这为开发人员提供了一种更简单、更安全的方式...

C 还是 Rust:选择哪个用于硬件抽象编程
Rust 是一种日益流行的编程语言,被视为硬件接口的最佳选择。通常会将其与 C 的抽象级别相比较。本文介绍了 Rust 如何通过多种方式处理按位运算,并提供了既安全又易于使用的解决方案。 在系统编程领域,你可能经常需要编写硬件驱动程序或直接与内存映射设备进行交互,而这些交互几乎总是通过硬件提供的内存映射寄存器来完...

rust为什么在中国不火
目前眼下的Rust 编译,对CPU资源的消耗是很恐怖的。编译速度非常慢。就算你有很好的硬件,都快不起来。具体原因,有很多人在分析,这里就不说废话了。慢,阻止我们去用它,因为业务迭代,我们代码基本上分钟级别都在发生变化,有版本变更,需要构建。因此低效率的编译器,让这方面的成本,无法接受。所以...

最可怕的编程语言
绿色语言:您更可能在新项目(即绿色项目)中使用的语言:Go,Rust,TypeScript,Kotlin,Julia,Dart,Scala和Haskell 现在我们可以回答这个问题:人们是喜欢还是害怕他们所陈述的语言,还是只是在害怕遗留代码?将棕色和绿色语言与前面最喜欢和害怕的语言两个调查结果合并后,发现:在最害怕的语言中几乎都是...

2022年玩rust人多吗?
多,90%的受访者表示他们出于一些目的使用 Rust,而 5% 的人表示他们过去曾使用过 Rust 但现在不再使用,4% 的人表示他们根本没有使用过 Rust。

rust为什么在中国不火
游戏模式:PVP模式 Rust的PVP模式,也就是默认的模式极其硬核,让玩家们在残酷的开放世界中不留任何余地的对抗。PVE模式 Rust自带的PVE模式几乎无人使用,大部分PVE服务器均选择使用第三方模组对服务器修改来设置PVE模式。在这模式下玩家的威胁只剩下了野生动物,因为玩家不再能互相伤害。新手模式 由于2021...

使用Rust 构建 gRPC 服务器
我们将使用tonic创建我们的 gRPC 服务。将以下依赖项添加到Cargo.toml文件中:为了从 生成 Rust 代码bookstore.proto,我们tonic-build在 crate 的build.rs构建脚本中使用。将以下内容添加到build.rs文件中:需要特别指出的一件事是,我们添加它.out_dir(“.\/src”)是为了将默认输出目录更改为该src目录...

乐亭县18885897689: 为什么要用rust取代c/c ++重写python底层 -
芮制清芬: c++难维护. rust号称全面取代c++. 这个语言和c++一样的性能还不用考虑内存回收(和java的gc不同, 是编译完成的). 还有很多新特性, 比如闭包, 函数编程.而且能够向下兼容c

乐亭县18885897689: 大家如何评价Rust语言 -
芮制清芬: 我用rust正在写一个区块链项目.如果不熟悉它的机制,很可能会写得非常啰嗦. 举个例子Mutex>> 这种类型多了会让人崩溃. c++很多东西被简化了, 比如拷贝构造函数变成了Copy trait,移动构造函数自带. RAII被rust强推(连lock都是).. ...

乐亭县18885897689: 可以用 Rust 语言做哪些比较炫酷的事 -
芮制清芬: 模式匹配 (更加抽象了一些逻辑的实现) Rustfn is_alpha_numeric(cc: u8) -> bool {match cc {97...122 | 65...90 | 48...57 => {true}_ => {false}} }JavaScriptfunction isAlphaNumeric(cc) {// a - zif (97 <= cc && cc <= 122) return true;// A - Z...

乐亭县18885897689: 如何开始学习rust语言 -
芮制清芬: 你好,很高兴为你解答. 专访资深程序员庄晓立:我为什么要选择Rust? Rust是由Mozilla开发的注重安全、性能和并发性的编程语言.这门语言自推出以来就得到了国内外程序员的大力推崇.Rust声称解决了传统C语言和C++语言几十年来饱受责难的内存安...

乐亭县18885897689: Rust 和 C++ 有哪些优劣 -
芮制清芬: Rust 野心勃勃的想要取代 C++,别人问你们对 Go 怎么看的时候他们就直接回答我们的目标是 C++,Go 也是个很好的语言balabala.GitHub Wiki 页面上有一个简单的比较 Rust for CXX programmers...

乐亭县18885897689: 对比Go 语言,Rust 有什么优势和劣势 -
芮制清芬: 对于Rust的优势我的体会如下: * Error Handling机制好太多,用Result封装函数运行结果灵活性大大提高,代码也大大简洁 * 函数式编程支持较好,有Lambda这种东西,使得它写起来甚至有Ruby的感觉 * 效率高,没有了GC和Runtime,速度是...

乐亭县18885897689: 怎样解释真探中 Rust 的哲学观? -
芮制清芬: 人生永久追逐着幻光,但谁把幻光看做幻光,谁便沉入了无边的苦海——臧克家 :如果能理解这句话,Rust你就可以理解1半了. 楼上引经据典,很是佩服.我只是个普通的俗人,也没有学过哲学,我对Rust所说的话,最直观的感受就是,我也...

乐亭县18885897689: rust睡袋有什么用 -
芮制清芬: 睡袋相当于一个复活点,放在地上后,一旦你死亡点击右下角的复活就可以复活在睡袋上(是最下面的一个)

乐亭县18885897689: 我们为什么要使用Go语言?
芮制清芬: 已经有好多程序员都把Go语言描述为是一种所见即所得(WYSIWYG)的编程语言.这是说,代码要做的事和它在字面上表达的意思是完全一致的.在这些新语言中,包含D,Go,Rust和Vala语言,Go曾一度出现在TIOBE的排行榜上面.与其他新...

乐亭县18885897689: rust自动炮台为什么打队友
芮制清芬: rust自动炮台打队友是因为自动炮台是根据一定的设定和条件进行攻击的,有时会错误地将队友识别为敌人而攻击他们.这可能是因为自动炮台被配置为攻击所有非授权玩家,包括队友,在某些情况下,可能发生由于不正确的配置、误识别或其它技术原因导致的错误攻击.在Rust中,确保正确配置和调整自动炮台以避免攻击队友是玩家的责任.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网