首页 > 其他分享 >可信而可靠,关于Rust 的学习

可信而可靠,关于Rust 的学习

时间:2023-09-25 17:00:53浏览次数:46  
标签:编程语言 必备 编程 可信 可靠 全栈 内存 Rust


最早接触到Rust是在几年前的一次技术大会上, 黄东旭说TiKV 是用Rust 语言编写的, 引起了我的一些兴趣,但只是保持关注而已。我一直认为每一种编程语言都有着各自的典型应用领域, 也有着各自的编程范式,没有最好的编程语言(参见《PHP是最好的编程语言吗?》), 但存在最适合当前的问题领域的编程语言。

个人认为,所谓全栈工程师,至少要掌握4种编程语言——C/C++,Java, JavaScript 和Python。作为一个半吊子全栈工匠,我还涉足过Go,Scala,Erlang,PHP和Perl,Shell 编程是必备技能,不放在编程语言的行列。

可信而可靠,关于Rust 的学习_开发语言

直到去年,自己进入操作系统的研发领域,尤其是与操作系统内核相关的那些工作,才着手系统地学习Rust编程语言。C/C++ 一直是系统编程的首选,但由于内存安全、数据竞争等引起的问题一直存在,每一次对内核的修改尝试都有些畏首畏尾,而Rust 就是为了从语言层面解决这些问题而诞生的。Rust 的设计哲学是内存安全、零成本抽象和实用性。

尤其是,2022 年 12 月 11 日发布的 Linux Kernel 6.1,最重要的变化是引入了初始的 Rust 框架代码。但高达 12k 行的代码仅带来了 Rust 基本的基础设施。有了这个基础,新的驱动程序、子系统和内核模块有望通过 Rust 编程语言登陆内核。Rust 进入 Linux 内核,对于 推动 Rust 进化具有很重要的战略意义。另外,今年5月的这条消息也证明了自己的选择存在一定的正确性。

可信而可靠,关于Rust 的学习_Rust_02

Rust 宣称可以“赋予每个人构建可靠高效的软件的能力” , 而我更关注在实现对系统安全编程的同时对底层有控制权 。Rust 没有运行时和垃圾回收器,可以提供对性能要求很高的服务,可在嵌入式设备上运行,也可以很方便地和其他语言集成。对比 C、C++ 和 Go, Rust 的性能和 C++ 接近,快于 Go。

安全编程是最吸引我的地方。在2020 年 8 月, Rarf Jung 在他的博士论文中提供了第一个正式证据(RustBelt),证明了 Rust 的安全承诺成立 ,即使开发者有可能编写“不安全”代码,Rust 的安全声明仍然有效 。具体而言,Rust采用了所有权类型系统,每个被分配的内存都有指针,且给每个变量都设定了生命周期,一旦超出生命周期,变量就会被自动释放。另外, Rust划分了安全边界,如果要做内存不安全的事情,必须在代码中明确声明。就线程而言,由于采用 1:1 线程模型,不需要运行时,在一定程度上消除了数据竞争的现象。

可信而可靠,关于Rust 的学习_Rust_03

客观而言,Rust 的学习曲线还是相对陡峭的。基于所有权系统来管理内存,移动(move)、借用(borrow)、生命周期(lifetime)等概念提供了很多抽象表达能力,这需要较强的理解能力,对初学者确实存在挑战。内存模型严格区分可变状态和不可变状态,颇有一些Erlang的味道,这需要新的编程范式。Rust 拥有非常严格的静态类型系统,这就要求写程序时需要细致地设计数据类型。另外,相对于C/C++,Java,Python等成熟语言而言,Rust 的生态系统还在成长中,存在较多不完整的地方。

可信而可靠,关于Rust 的学习_后端_04

当自己开始体会到“Rust”的一些味道的时候,有幸参与了《Rust 程序设计(第二版)》审读。因为自己也翻译过几本书,一看到书籍的页数就知道这本书的翻译是一件艰难的工作。进而,我从稿件的内容中看到了译者满满的诚意。译者雪狼那25年码农的经历和我有着太多的相似,他前前后后对稿子修订了 7 遍,虽然每一遍的重心有所不同,但每一遍都耗费了巨大的心血。很长一段时间内,独立进行翻译的雪狼每一天都会是挑灯夜战,向译者雪狼致敬!

审读群里高手很多,我不过是一个Rust的初学者,谈不上审读,更多是学习和疑问,尤其是向雪狼和群里的各位老师学习。对于《Rust 程序设计(第二版)》书中的内容,颇有相见很晚的感觉,这本书的思维导图如下:

可信而可靠,关于Rust 的学习_Rust_05

跟着书中讲解的思路走,一步步来,就一定能掌握 Rust 的核心特性和在工作场景中的用法。书中的代码是开源的,而且基于 Rust 2021。如果我能够早学习这本书,可以避免自己走很多的弯路。 

鉴于自己的认知局限,如果你是操作系统的相关开发工程师, 或者是嵌入式系统的工程师,亦或是后端服务的工程师,Rust 都会带来安全而可靠的开发效果, 《Rust 程序设计(第二版)》将会成为你的案头手册!

【参考资料与关联阅读】

标签:编程语言,必备,编程,可信,可靠,全栈,内存,Rust
From: https://blog.51cto.com/wirelesscom/7597312

相关文章

  • Rust+appium App自动化测试demo
    1.新建工程打开RustCover,新建工程如下:修改Cargo.toml文件如下:[package]name="test_demo"version="0.1.0"edition="2021"#Seemorekeysandtheirdefinitionsathttps://doc.rust-lang.org/cargo/reference/manifest.html[dependencies......
  • String vs &str in Rust
    Mostlikely,soonafteryou’vestartedyourRustjourney,youranintothisscenariowhereyoutriedtoworkwithstringtypes(orshouldIsay,youthoughtyouwere?),andthecompilerrefusedtocompileyourcodebecauseofsomethingthatlookslikeas......
  • Rust 更新
    Rust更新稳定版和nightly版的升级~>rustupupdate2023/07/1601:06:05下午info:syncingchannelupdatesfor'stable-x86_64-pc-windows-msvc'info:checking......
  • Rust 静态分发和动态分发
    首先定义两个结构体Dog和Cat分别实现AnimaltraittraitAnimal{fnspeak(&self);}structDog;implAnimalforDog{fnspeak(&self){println!("旺旺.....");}}structCat;implAnimalforCat{fnspeak(&self){......
  • 为什么 Rust 备受开发者青睐?
    引子作为一名敏锐的前端开发者,您可能早已对Rust有所耳闻,毕竟近几年,使用Rust开发的前端构建工具每经发布,其卓越的性能数据总是能带来社区的一阵惊叹。图片来源:https://swc.rs/例如SWC就在其官网宣称在单线程上的执行速度是传统代码转译工具Babel的20倍。如果在4核......
  • Rust的语句和表达式
    在Java中经常听到类似赋值语句、lambda表达式的说法,却从来没有在意过所谓的语句和表达式有什么区别,而在实际的使用中,它们好像确实没啥区别,但是在Rust中,语句和表达式就被严格区分开来了,《Rust程序设计语言》中提到Rust的函数体是由一系列语句和一个可选的结尾表达式来构成。Rust......
  • TCP的可靠性如何保证
    TCP的可靠性之道:确认重传和流量控制(qq.com)面试被问TCP的可靠性是如何保证的?(qq.com)TCP全称为TransmissionControlProtocol(传输控制协议),是一种面向连接的、「可靠的」、基于字节流的传输层通信协议,其中「可靠性」是相对于其他传输协议的优势点。TCP为了确保数据传输的......
  • Windows 安装 Rust
    1、安装rustup-init.exehttps://www.rust-lang.org/zh-CN/tools/install1、安装rustup-init.exehttps://www.rust-lang.org/zh-CN/tools/installwindows安装Rust安装太慢解决办法1、打开powershell2、分别执行下面两行代码:$ENV:RUSTUP_DIST_SERVER='https://mirrors.......
  • A closer look at Ownership in Rust
    SoyouwanttolearnRustandkeephearingabouttheconceptofOwnershipandBorrowing,butcan’tfullywrapyourheadaroundwhatitis.Ownershipissoessentialthatit’sgoodtounderstanditearlyoninyourjourneyoflearningRust,alsotoavoidr......
  • 使用 sudo apt-get update 命令时出现 Certificate verification failed: The certifi
    命令:sudoapt-getupdate问题:Certificateverificationfailed:ThecertificateisNOTtrusted. Tryinstallingca-certificates.忽略:1https://professional-store-packages.chinauos.com/appstoreeagleInRelease错误:3https://professional-store-packages.china......