|
|
@ -1,135 +1,156 @@
|
|
|
|
# 进入Rust编程世界
|
|
|
|
# 进入 Rust 编程世界
|
|
|
|
|
|
|
|
|
|
|
|
## Rust发展历程
|
|
|
|
## Rust 发展历程
|
|
|
|
|
|
|
|
|
|
|
|
Rust 最早是 Mozilla 雇员 Graydon Hoare 的个人项目,从 2009 年开始,得到了 Mozilla 研究院的支助,2010 年项目对外公布。2010 ~2011 年间实现自举。从此以后,Rust在设计变化->崩溃的边缘反复横跳(历程极其艰辛),终于在 2015 年 5 月 15日发布1.0 版。在此研发过程中,Rust 建立了一个强大且活跃社区,形成了一整套完善稳定的项目贡献机制(Rust能够飞速发展,与这一点密不可分)。Rust 现在由 [Rust项目开发者社区](https://github.com/rust-lang/rust)维护。
|
|
|
|
Rust 最早是 Mozilla 雇员 Graydon Hoare 的个人项目。从 2009 年开始,得到了 Mozilla 研究院的资助。2010 年项目对外公布,2010 ~2011 年间实现自举。从此以后,Rust 在设计变化->崩溃的边缘反复横跳(历程极其艰辛)。终于,在 2015 年 5 月 15 日发布 1.0 版。
|
|
|
|
|
|
|
|
|
|
|
|
大家可能疑惑Rust为啥用了这么久才到1.0版本?与之相比,Go语言2009年发布,却在2012年仅用3年就发布了1.0版本。首先是因为Rust语言特性较为复杂,因此需要全盘考虑的问题非常多;其次,Rust当时的参与者太多,七嘴八舌的声音很多,导致了众口难调,而Rust开发团队又非常重视社区的意见 ;最后,一旦1.0快速发布,那么后续大部分语言特性就无法再修改,对于有完美强迫症的Rust开发者团队来说,某种程度上的不完美是不可接受的。因此,Rust语言用了足足6年时间,才发布了尽善尽美的1.0版本。
|
|
|
|
在此研发过程中,Rust 建立了一个强大且活跃社区,形成了一整套完善稳定的项目贡献机制(Rust 能够飞速发展,与这一点密不可分)。Rust 现在由 [Rust 项目开发者社区](https://github.com/rust-lang/rust) 维护。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
大家可能疑惑 Rust 为啥用了这么久才到 1.0 版本?与之相比,Go 语言 2009 年发布,却在 2012 年仅用 3 年就发布了 1.0 版本。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 首先,因为 Rust 语言特性较为复杂,所以需要全盘考虑的问题非常多;
|
|
|
|
|
|
|
|
- 其次,Rust 当时的参与者太多,七嘴八舌的声音很多,众口难调,而 Rust 开发团队又非常重视社区的意见;
|
|
|
|
|
|
|
|
- 最后,一旦 1.0 快速发布,那么后续大部分语言特性就无法再修改,对于有完美强迫症的 Rust 开发者团队来说,某种程度上的不完美是不可接受的。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
因此,Rust 语言用了足足 6 年时间,才发布了尽善尽美的 1.0 版本。
|
|
|
|
|
|
|
|
|
|
|
|
## 为何又来了一门新语言?
|
|
|
|
## 为何又来了一门新语言?
|
|
|
|
为何需要一个新语言?简而言之,因为还缺一门无GC、**性能高**、**工程性强**、语言级安全性以及能同时得到工程派和学院派认可的语言,而Rust算是这样的语言。你也可以回忆下熟悉的语言,看是不是有另外一门语言可以同时满足这些需求: )
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
而Rust最为人诟病的点,也就一个:学习曲线陡峭,其实严格来说,当语言生态起来后,这个不算问题。
|
|
|
|
简而言之,因为还缺一门无 GC、性能高、工程性强、语言级安全性以及能同时得到工程派和学院派认可的语言,而 Rust 算是这样的语言。你也可以回忆下熟悉的语言,看是不是有另外一门语言可以同时满足这些需求:)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Rust 最为人诟病的点,也就一个:学习曲线陡峭。不过其实严格来说,当语言生态起来后,这个不算问题。
|
|
|
|
|
|
|
|
|
|
|
|
### 缓解内卷
|
|
|
|
### 缓解内卷
|
|
|
|
说Rust作为新语言会增加内卷,其实恰恰相反,Rust可以缓解内卷。为何不说C++内卷说Java、Python、JS内卷?不就是后几个相对简单、上手容易嘛?而Rust怎么看也是C++级别的上手难度O,O
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
其实从我内心不可告人的角度出发,并不希望Rust大众化,因为这样可以保饭碗、保薪资,还能更有行业内地位。但是从对Rust的喜爱角度出发,我还是希望能卷一些,但是。。。目前来看真的卷不动,现在全世界范围Rust的需求都大于供给,特别是优秀的Rust程序员更是难寻。
|
|
|
|
有人说 Rust 作为新语言会增加内卷,其实恰恰相反,Rust 可以缓解内卷。为何不说 C++内卷,说 Java、Python、JS 内卷?不就是后几个相对简单、上手容易嘛?而 Rust 怎么看也是 C++ 级别的上手难度。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
其实从我内心不可告人的角度出发,并不希望 Rust 大众化,因为这样可以保饭碗、保薪资,还能更有行业内地位。但是从对 Rust 的喜爱角度出发,我还是希望能卷一些。但是,目前来看真的卷不动,现在全世界范围内 Rust 的需求都大于供给,特别是优秀的 Rust 程序员更是难寻。
|
|
|
|
|
|
|
|
|
|
|
|
与Go语言相比,一个优秀的Rust程序员所需的门槛高得多,例如融汇贯通Rust语言各种中高级特性、闭着眼睛躺过各种坑、不用回忆无需查找就能立刻写出最合适的包/模块/方法、性能/安全/工程性的权衡选择信手拈来、深层性能优化易如反掌、异步编程小菜一碟,更别说Rust之外的操作系统、网络、算法等等相关知识。
|
|
|
|
与 Go 语言相比,成为一个优秀的 Rust 程序员所需的门槛高得多,例如融汇贯通 Rust 语言各种中高级特性、闭着眼睛躺过各种坑、不用回忆无需查找就能立刻写出最合适的包/模块/方法、性能/安全/工程性的权衡选择信手拈来、深层性能优化易如反掌、异步编程小菜一碟,更别说 Rust 之外的操作系统、网络、算法等等相关知识。
|
|
|
|
|
|
|
|
|
|
|
|
所以,Rust可以缓解内卷,而不是增加内卷,可以说是程序员的福音,不再是被随意替换的螺丝钉。
|
|
|
|
所以,Rust 可以缓解内卷,而不是增加内卷。可以说是程序员的福音,不再是被随意替换的螺丝钉。
|
|
|
|
|
|
|
|
|
|
|
|
### 效率
|
|
|
|
### 效率
|
|
|
|
下面从三个角度来谈谈Rust的效率:学习、运行、开发。
|
|
|
|
|
|
|
|
|
|
|
|
下面从三个角度来谈谈 Rust 的效率:学习、运行、开发。
|
|
|
|
|
|
|
|
|
|
|
|
#### 学习效率
|
|
|
|
#### 学习效率
|
|
|
|
众所周知,Rust学习曲线陡峭,最初我对此说法还嗤之以鼻,随着不断的深入,我现在也很认可这个说法。Rust之难,不在于语言特性,这些都可以很容易学到,而在于:
|
|
|
|
|
|
|
|
|
|
|
|
众所周知,Rust 学习曲线陡峭。最初我对此说法还嗤之以鼻,随着不断的深入,我现在也很认可这个说法。Rust 之难,不在于语言特性,这些都可以很容易学到,而在于:
|
|
|
|
|
|
|
|
|
|
|
|
- 实践中如何融会贯通的运用
|
|
|
|
- 实践中如何融会贯通的运用
|
|
|
|
- 遇到了坑时(生命周期、借用错误,自引用等)如何迅速、正确的解决
|
|
|
|
- 遇到了坑时(生命周期、借用错误,自引用等)如何迅速、正确的解决
|
|
|
|
- 大量的标准库方法记忆及熟练使用,这些是保证开发效率的关键
|
|
|
|
- 大量的标准库方法记忆及熟练使用,这些是保证开发效率的关键
|
|
|
|
- 心智负担较重,特别是初中级阶段时
|
|
|
|
- 心智负担较重,特别是初中级阶段
|
|
|
|
|
|
|
|
|
|
|
|
好在,针对这些,目前国内有了一门非常全面的[Rust学习教程](https://github.com/sunface/rust-course)(非官方那本书),可以有效降低Rust的学习和使用门槛。
|
|
|
|
好在,针对这些,目前国内有了一门非常全面的 [Rust 学习教程](https://github.com/sunface/rust-course)(非官方那本书),可以有效降低 Rust 的学习和使用门槛。
|
|
|
|
|
|
|
|
|
|
|
|
#### 运行效率
|
|
|
|
#### 运行效率
|
|
|
|
得益于各种零开销抽象、深入到底层的优化潜力、优质的标准库和三方库实现,Rust具备非常优秀的性能,和C语言、C++是[一个级别](https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/rust.html)。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
同时Rust有一个极大的好处:只要按照正确的方式使用Rust,无需性能优化,就能实现非常优秀的表现,不可谓不惊艳,
|
|
|
|
得益于各种零开销抽象、深入到底层的优化潜力、优质的标准库和三方库实现,Rust 具备非常优秀的性能,和 C、C++ 是 [一个级别](https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/rust.html)。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
同时 Rust 有一个极大的好处:只要按照正确的方式使用 Rust,无需性能优化,就能实现非常优秀的表现,不可谓不惊艳,
|
|
|
|
|
|
|
|
|
|
|
|
现在有不少用Rust重写的工具、平台都超过了原来用C、C++实现的版本,将老前辈拍死在沙滩上,俨然成为一种潮流~~
|
|
|
|
现在有不少用 Rust 重写的工具、平台都超过了原来用 C、C++ 实现的版本,将老前辈拍死在沙滩上,俨然成为一种潮流~~
|
|
|
|
|
|
|
|
|
|
|
|
#### 开发效率
|
|
|
|
#### 开发效率
|
|
|
|
Rust的开发效率可以先抑后扬来形容,在刚开始上手写项目时,你的开发速度将显著慢于go、java等语言,一旦开始熟悉标准库常用的方法,开发效率将大幅提升,甚至当形成肌肉记忆后,开发效率将不会慢于这些语言,而且原生就能写出高质量、安全、高效的代码,可以说中高级级Rust程序员就是高效程序员的代名词。
|
|
|
|
|
|
|
|
|
|
|
|
Rust 的开发效率可以先抑后扬来形容。在刚开始上手写项目时,你的开发速度将显著慢于 go、java 等语言,不过,一旦开始熟悉标准库常用的方法,开发效率将大幅提升,甚至当形成肌肉记忆后,开发效率将不会慢于这些语言,而且原生就能写出高质量、安全、高效的代码,可以说中高级 Rust 程序员就是高效程序员的代名词。
|
|
|
|
|
|
|
|
|
|
|
|
### 个人的好处
|
|
|
|
### 个人的好处
|
|
|
|
学习Rust对个人也有极大的好处。
|
|
|
|
|
|
|
|
|
|
|
|
学习 Rust 对个人也有极大的好处。
|
|
|
|
|
|
|
|
|
|
|
|
#### 成为更好的程序员
|
|
|
|
#### 成为更好的程序员
|
|
|
|
要学好Rust,你需要深入理解内存、堆栈、引用、变量作用域这些其它高级语言往往不会深入接触的内容,同时Rust会通过语法、编译器和clippy这些静态检查工具半帮助半强迫的让你成为更优秀的程序员,写出更好的代码。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
同时,当你掌握了Rust,你自发性的就会想要去做一些更偏底层的事情,这些都可以帮助你更加了解操作系统、网络、性能优化等底层知识,也会间接或者直接的接触到各种算法、数据结构实现。
|
|
|
|
要学好 Rust,你需要深入理解内存、堆栈、引用、变量作用域等这些其它高级语言往往不会深入接触的内容。另外,Rust 会通过语法、编译器和 clippy 这些静态检查工具半帮助半强迫的让你成为更优秀的程序员,写出更好的代码。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
同时,当你掌握了 Rust,你就会自发性的想要去做一些更偏底层的事情,这些都可以帮助你更加了解操作系统、网络、性能优化等底层知识,也会间接或者直接的接触到各种算法和数据结构的实现。
|
|
|
|
|
|
|
|
|
|
|
|
慢慢的,你就在成为那个更好的程序员,也是更优秀的自己。
|
|
|
|
慢慢的,你就在成为那个更好的程序员,也是更优秀的自己。
|
|
|
|
|
|
|
|
|
|
|
|
#### 增加不可替代性
|
|
|
|
#### 增加不可替代性
|
|
|
|
语言难学,也有好处,一旦掌握,你将具备较强的不可替代性,不再是一个简单的工具人角色。看看现在内卷严重的Java,工具人有多少!一个人离职,另外一个人很快就能替补上。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
当然,我不是说Rust会给公司带来这种隐形的维护成本,毕竟这其实是一种双赢,公司收获了更优秀的程序员(不可否认的是Rust程序员普遍确实水平更高,毕竟都是有很好的其它语言基础、也很有追求的自驱性人才),而你也收获了更稳定的工作环境甚至是更高的收入。
|
|
|
|
语言难学,也有好处。一旦掌握,你将具备较强的不可替代性,不再是一个简单的工具人角色。看看现在内卷严重的 Java,工具人有多少!一个人离职,另外一个人很快就能替补上。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
当然,我不是说 Rust 会给公司带来这种隐形的维护成本,毕竟这其实是一种双赢,公司收获了更优秀的程序员(不可否认的是 Rust 程序员普遍确实水平更高,毕竟都是有很好的其它语言基础、也很有追求的自驱型人才),而你也收获了更稳定的工作环境,甚至是更高的收入。
|
|
|
|
|
|
|
|
|
|
|
|
### 团队的好处
|
|
|
|
### 团队的好处
|
|
|
|
先不说安全、可靠性等对公司团队非常友好的特性,就说Rust程序只要能跑起来,那代码质量其实就是相当不错的,因为Rust编译器、clippy啥的实在是严师厉友,甚至有些鸡毛。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
正因为这较高的质量下限,我们在review时并不用担心潜在的各种坑,因此可以实现快速的开发、review、merge流程。
|
|
|
|
先不说安全、可靠性等对公司团队非常友好的特性,就说 Rust 程序只要能跑起来,那代码质量其实就是相当不错的,因为 Rust 编译器、clippy 啥的实在是严师厉友,甚至有些鸡毛。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
正因为这较高的质量下限,我们在 review 时并不用担心潜在的各种坑,因此可以实现快速的开发、review、merge 流程。
|
|
|
|
|
|
|
|
|
|
|
|
而且由于Rust语言拥有异常强大的编译器和语言特性,因此Rust的代码天然就会比其它语言有更少的Bug,同时Rust拥有非常完善的工具链、最好的包管理工具,这些叠加在一起,决定了Rust非常适合大型开发者团队的协作开发。
|
|
|
|
而且由于 Rust 语言拥有异常强大的编译器和语言特性,因此 Rust 的代码天然就会比其它语言有更少的 Bug。同时 Rust 拥有非常完善的工具链,最好的包管理工具,这些叠加在一起,决定了 Rust 非常适合大型开发者团队的协作开发。
|
|
|
|
|
|
|
|
|
|
|
|
也许Rust在开发速度上不是最快的,但是从开发 + 维护的角度来看,这个成本绝对是各个语言中最小的之一,当然如果你的公司就追求做出来能用就行,那Rust确实有些灰姑娘的感觉。
|
|
|
|
也许 Rust 在开发速度上不是最快的,但是从开发 + 维护的角度来看,这个成本在各个语言中绝对是很小的。当然,如果你的公司就追求做出来能用就行,那 Rust 确实有些灰姑娘的感觉。
|
|
|
|
|
|
|
|
|
|
|
|
还有一点很重要,现在的Rust程序员往往拥有超出更出众的能力和学习自驱性,因此团队招到的人天然就保持了较高的底线,如果你有幸招到一个优秀的Rust程序员,那真是捡到宝了,他也会同时带动周围的人一起慢慢优秀(优秀的Rust程序员较好辨别,门槛低的语言就并没有那么好辨别)。总之,一个这样的程序员会给团队带来远超他薪资的潜在回报和长远收益。
|
|
|
|
还有一点很重要,现在的 Rust 程序员往往拥有更出众的能力和学习自驱性,因此团队招到的人天然就保持了较高的底线。如果你有幸招到一个优秀的 Rust 程序员,那真是捡到宝了,他也会同时带动周围的人一起慢慢优秀(优秀的 Rust 程序员比较好辨别,门槛低的语言就并没有那么好辨别)。总之,一个这样的程序员会给团队带来远超他薪资的潜在回报和长远收益。
|
|
|
|
|
|
|
|
|
|
|
|
### 开源
|
|
|
|
### 开源
|
|
|
|
目前Rust的主战场是在开源上,Go的成功也证明了农村包围城市的可行性。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- UI层开发:Rust的WASM发展的如火如荼, 隐隐有王者风范,在JS的基础设施领域Rust也是如鱼得水, 例如`swc`、`deno`等,同时`nextjs`也是押宝Rust,可以说Rust在前端的成功完全是无心插柳柳成荫。
|
|
|
|
目前 Rust 的主战场是在开源上,Go 的成功也证明了农村包围城市的可行性。
|
|
|
|
- 基础设施层, 数据库、搜索引擎、网络设施、云原生等都在出现Rust的身影,而且还不少
|
|
|
|
|
|
|
|
- 系统开发,目前linux已经将Rust列为即将支持的内核开发语言,是即C语言后第二门支持内核开发的语言,不过刚开始将主要支持驱动开发
|
|
|
|
|
|
|
|
- 系统工具,现在最流行的就是用Rust重写之前C、C++写的一票系统工具,还都获得了挺高的关注和很好的效果, 例如 sd, exa, ripgrep, fd, bat等
|
|
|
|
|
|
|
|
- 操作系统, Rust在开发的操作系统现在有好几个,其中最有名的可能就是谷歌的fushia, Rust在其中扮演非常重要的角色
|
|
|
|
|
|
|
|
- 区块链,目前Rust和Go可以说各领风骚,未来Rust可能会一统江湖
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
类似的还有很多,我们就不一一列举, 总之,现在有大量的项目在被用Rust重写,同时还有海量的项目在等待被重写,这些都是赚取star和认可的好机会,在其它语言杀成一片红海时,Rust还留了一大片蓝海等待大家的探索!
|
|
|
|
- UI 层开发,Rust 的 WASM 发展的如火如荼,隐隐有王者风范,在 JS 的基础设施领域,Rust 也是如鱼得水,例如`swc`、`deno`等。同时`nextjs`也是押宝 Rust,可以说 Rust 在前端的成功完全是无心插柳柳成荫。
|
|
|
|
|
|
|
|
- 基础设施层,数据库、搜索引擎、网络设施、云原生等都在出现 Rust 的身影,而且还不少。
|
|
|
|
|
|
|
|
- 系统开发,目前 linux 已经将 Rust 列为即将支持的内核开发语言,是既 C 语言后第二门支持内核开发的语言,不过刚开始将主要支持驱动开发。
|
|
|
|
|
|
|
|
- 系统工具,现在最流行的就是用 Rust 重写之前 C、C++ 写的一票系统工具,还都获得了挺高的关注和很好的效果,例如 sd, exa, ripgrep, fd, bat 等。
|
|
|
|
|
|
|
|
- 操作系统,现在在使用 Rust 开发的操作系统有好几个,其中最有名的可能就是谷歌的 Fuchsia,Rust 在其中扮演非常重要的角色
|
|
|
|
|
|
|
|
- 区块链,目前 Rust 和 Go 可以说各领风骚,未来 Rust 可能会一统江湖
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
类似的还有很多,我们就不一一列举。总之,现在有大量的项目在被用 Rust 重写,同时还有海量的项目在等待被重写,这些都是赚取 star 和认可的好机会。在其它语言杀成一片红海时,Rust 还留了一大片蓝海等待大家的探索!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 相比其他语言 Rust 的优势
|
|
|
|
|
|
|
|
|
|
|
|
### 相比其他语言Rust的优势
|
|
|
|
由于篇幅有限,我们这里不会讲述详细的对比,就是简单介绍下 Rust 的优势。并不是说 Rust 就优于这些语言,大家轻喷:)
|
|
|
|
由于篇幅有限,我们这里不会讲述详细的对比,就是简单介绍下Rust的优势。因此并不是说Rust就优于这些语言,大家轻喷:)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### Go
|
|
|
|
#### Go
|
|
|
|
Rust语言表达能力更强,性能更高,同时线程安全方面Rust也更强,不容易写出错误的代码,包管理Rust也更好,Go虽然在1.10版本后提供了包管理,但是目前还比不上Rust的。
|
|
|
|
|
|
|
|
|
|
|
|
Rust 语言表达能力更强,性能更高。同时线程安全方面 Rust 也更强,不容易写出错误的代码。包管理 Rust 也更好,Go 虽然在 1.10 版本后提供了包管理,但是目前还比不上 Rust 的。
|
|
|
|
|
|
|
|
|
|
|
|
#### C++
|
|
|
|
#### C++
|
|
|
|
与C++相比,Rust的性能相差无几,但是在安全性方面会更优,特别是使用第三方库时,Rust的严格要求会让第三方库的质量明显高很多。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
语言本身的学习,Rust的前中期学习曲线会更陡峭,但是对于未来使用场景和生态的学习,C++会更难、更复杂。
|
|
|
|
与 C++ 相比,Rust 的性能相差无几,但是在安全性方面会更优,特别是使用第三方库时,Rust 的严格要求会让第三方库的质量明显高很多。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
语言本身的学习,Rust 的前中期学习曲线会更陡峭,但是对于未来使用场景和生态的学习,C++ 会更难,更复杂。
|
|
|
|
|
|
|
|
|
|
|
|
#### Java
|
|
|
|
#### Java
|
|
|
|
除了极少部分纯粹的数字计算性能,Rust的性能是全面领先于Java的,同时Rust占用内存小的多,因此实现同等规模的服务,Rust所需的硬件成本会显著降低。
|
|
|
|
|
|
|
|
|
|
|
|
除了极少部分纯粹的数字计算性能,Rust 的性能是全面领先于 Java 的。同时 Rust 占用内存小的多,因此实现同等规模的服务,Rust 所需的硬件成本会显著降低。
|
|
|
|
|
|
|
|
|
|
|
|
#### Python
|
|
|
|
#### Python
|
|
|
|
性能自然是Rust完胜,同时Rust对运行环境要求较低,这两点差不多就足够抉择了,因为python和rust的彼此适用面其实不太冲突。
|
|
|
|
|
|
|
|
|
|
|
|
性能自然是 Rust 完胜,同时 Rust 对运行环境要求较低,这两点差不多就足够抉择了。不过 python 和 rust 的彼此适用面其实也不太冲突。
|
|
|
|
|
|
|
|
|
|
|
|
### 使用现状
|
|
|
|
### 使用现状
|
|
|
|
|
|
|
|
|
|
|
|
- AWS从2017年开始就用Rust实现了无服务器计算平台: AWS Lambda 和 AWS Fargate, 并且用Rust重写了Bottlerocket OS和AWS Nitro系统,这两个是弹性计算云(EC2)的重要服务
|
|
|
|
- AWS 从 2017 年开始就用 Rust 实现了无服务器计算平台: AWS Lambda 和 AWS Fargate,并且用 Rust 重写了 Bottlerocket OS 和 AWS Nitro 系统,这两个是弹性计算云 (EC2) 的重要服务
|
|
|
|
- Cloudflare是Rust的重度用户,DNS、无服务计算、网络包监控等基础设施都都与Rust密不可分
|
|
|
|
- Cloudflare 是 Rust 的重度用户,DNS、无服务计算、网络包监控等基础设施都都与 Rust 密不可分
|
|
|
|
- Dropbox的底层存储服务完全由Rust重写,达到了数万PB的规模
|
|
|
|
- Dropbox 的底层存储服务完全由 Rust 重写,达到了数万 PB 的规模
|
|
|
|
- Google除了在安卓系统的部分模块中使用Rust外,还在它最新的操作系统fuchsia中重度使用Rust
|
|
|
|
- Google 除了在安卓系统的部分模块中使用 Rust 外,还在它最新的操作系统 Fuchsia 中重度使用 Rust
|
|
|
|
- Facebook使用Rust来增强自己的网页端、移动端和API服务的性能,同时还写了Hack编程语言的虚拟机
|
|
|
|
- Facebook 使用 Rust 来增强自己的网页端、移动端和 API 服务的性能,同时还写了 Hack 编程语言的虚拟机
|
|
|
|
- Microsoft使用Rust为Azure平台提供一些组件,其中包括IoT的核心服务
|
|
|
|
- Microsoft 使用 Rust 为 Azure 平台提供一些组件,其中包括 IoT 的核心服务
|
|
|
|
- Github和npmjs.com,使用Rust提供高达每天13亿次的npm包下载
|
|
|
|
- Github 和 npmjs.com,使用 Rust 提供高达每天 13 亿次的 npm 包下载
|
|
|
|
- Rust目前已经成为全世界区块链平台的首选开发语言
|
|
|
|
- Rust 目前已经成为全世界区块链平台的首选开发语言
|
|
|
|
- Tidb,国内最有名的开源分布式数据库
|
|
|
|
- Tidb,国内最有名的开源分布式数据库
|
|
|
|
|
|
|
|
|
|
|
|
尤其值得一提的是,AWS实际上在押宝Rust,未来对Rust的使用可能很快会上升到**first-class**的地位。
|
|
|
|
尤其值得一提的是,AWS 实际上在押宝 Rust,未来对 Rust 的使用可能很快会上升到 **first-class** 的地位。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Rust语言版本更新
|
|
|
|
## Rust 语言版本更新
|
|
|
|
|
|
|
|
|
|
|
|
与其它语言相比,Rust的更新迭代较为频繁(得益于精心设计过的发布流程以及Rust语言开发者团队的严格管理):
|
|
|
|
与其它语言相比,Rust 的更新迭代较为频繁(得益于精心设计过的发布流程以及 Rust 语言开发者团队的严格管理):
|
|
|
|
- 每6周发布一个迭代版本
|
|
|
|
- 每 6 周发布一个迭代版本
|
|
|
|
- 2-3年发布一个新的大版本:Rust 2018 edition,Rust 2021 edtion
|
|
|
|
- 2-3 年发布一个新的大版本:Rust 2018 edition,Rust 2021 edtion
|
|
|
|
|
|
|
|
|
|
|
|
好处在于,可以满足不同的用户群体的需求:
|
|
|
|
好处在于,可以满足不同的用户群体的需求:
|
|
|
|
- 对于活跃的Rust用户,他们总是能很快获取到新的语言内容,毕竟,尝鲜是技术爱好者的共同特点:)
|
|
|
|
- 对于活跃的 Rust 用户,他们总是能很快获取到新的语言内容,毕竟,尝鲜是技术爱好者的共同特点:)
|
|
|
|
- 对于一般的用户,edition大版本的发布会告诉他们:Rust语言相比上次大版本发布,有了重大的改进,值得一看
|
|
|
|
- 对于一般的用户,edition 大版本的发布会告诉他们:Rust 语言相比上次大版本发布,有了重大的改进,值得一看
|
|
|
|
- 对于Rust语言开发者,可以让他们的工作成果更快的被世人所知,不必锦衣夜行
|
|
|
|
- 对于 Rust 语言开发者,可以让他们的工作成果更快的被世人所知,不必锦衣夜行
|
|
|
|
|
|
|
|
|
|
|
|
好了,相信大家听了这么多Rust的优点,已经迫不及待想要开始学习旅程,那么容我引用一句CS的经典台词:OK,let's go.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
好了,相信大家听了这么多 Rust 的优点,已经迫不及待想要开始学习旅程,那么容我引用一句 CS 的经典台词:OK, let's go.
|
|
|
|
|
|
|
|
|
|
|
|
## 总结
|
|
|
|
## 总结
|
|
|
|
连续6年最受欢迎的语言当然不是浪得虚名。 无GC、**效率高**、**工程性强**、强安全性以及能同时得到工程派和学院派认可, 这些令Rust拥有了自己的特色和生存空间,社区的友善,生态的快速发展,大公司的重仓跟进,一切的一切都在说明Rust的未来。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
当然,语言毕竟还是工具,我们不能神话它,但是可以给它一个机会,也许你最终能收获自己的真爱:)
|
|
|
|
连续 6 年最受欢迎的语言当然不是浪得虚名。 无 GC、效率高、工程性强、强安全性以及能同时得到工程派和学院派认可,这些令 Rust 拥有了自己的特色和生存空间。社区的友善,生态的快速发展,大公司的重仓跟进,一切的一切都在说明 Rust 的未来。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
当然,语言毕竟只是工具,我们不能神话它,但是可以给它一个机会,也许,你最终能收获自己的真爱。:)
|
|
|
|