篇一 | 想全面了解 Rust 语言 ? 你想知道的都在这里
理清头脑混沌,觉醒心智天地
对 Rust 语言感兴趣,但被网上的各种评价 Rust 语言的观点和看法所困扰,到底 Rust 语言是什么样的一门语言呢?那么看本文就对了。 因为问题比较多,所以这是一个系列,争取每篇文章回答五个问题,目前大概需要三篇就可以回答完。
Rust 创造者们是一群什么样的人?
Rust 是一门什么样的语言?Rust 的哲学是什么?
学习 Rust 语言需要高智商吗?
Rust 是 Better C++ 吗?
-
Rust 学习曲线高吗?
零基础能否学 Rust 语言?
学 Rust 语言是否可以跳过 C 语言?
Rust 只能开发底层系统软件?前端工程师可以学 Rust 吗?Rust可以全栈开发吗?
Rust 语言适合刷算法题吗?
Rust 语言要发展需要依赖杀手级应用吗?
Rust 语言该如何学习?
听说亚马逊招了 Rust 核心团队的人?亚马逊会是 Rust 的 “爸爸” 吗?
目前已经将 Rust 用于生产的场景有哪些?状况如何?
Rust适应哪些业务领域开发?Rust 在云原生&嵌入式&HPC 领域的可能?
Rust 就业前景如何?
用 Rust 写的代码为什么比同样功能的Python还慢?
用 Rust 编译太慢了,能否提升编译速度?
澄清以下一些关于 Rust 语言的谣言:
Rust 需要手动管理内存。
Rust 用生命周期表示变量死活。
Rust 编译器配备了先进的编译期 GC。
Unsafe 关掉了所有检查,不安全,不能用。
Rust 这么多限制,肯定有运行时开销。
Rust 用户都是傻子,只要乖乖听编译器的写代码,不出错就行了,不用考虑底层的机制。
Rust 连内存泄漏都保证不了,还谈什么安全?
要回答好这些问题并不容易,但是这些问题的答案,至少可以帮你指明一个方向。
Rust 最早是由 Mozilla 工程师 Graydon Hoare(https://github.com/graydon) 于 2006 年开始开发的。后来提交给了 Mozilla ,2010年对外公布过 0.1.0 版本,最早由 Ocmal 语言编写。
InfoQ 在 2012 年 专访过 Graydon (https://www.infoq.cn/article/2012/10/interview-rust )。 也是同年早期,因为 InfoQ 采访了Rust 语言团队,而当时由 JS 之父 Brendan Eich 担任 Mozilla CTO ,当时 Graydon 受他领导,可能被一些读者解读为:JS 之父发明的新语言 Rust。然而,JS 之父确实为 Rust 贡献了几十行代码,但Rust语言的创造者必须是 Graydon。JS 之父也在同年离开了 Mozilla。
为什么?因为是 Graydon 的理念诞生了 Rust 这门语言。如果你去看 Graydon 那篇采访稿,你就会知道。作为职业编译器工程师的 Graydon,看到了互联网的未来是安全和性能并重,并且他熟悉很多优秀编程语言的特性,他想把这些优秀语言特性融合到一门语言中。是他的这种理念创造了 Rust。
Graydon 在 2015 年 Rust 1.0 发布前期高调宣布(于 Reddit)离开 Rust 团队。他自称累了,不想当技术Leader,只想开开心心写代码。后来去了苹果 Swfit 团队,现在应该已经离开了苹果,自己创业了吧。
在 Graydon 身边,还有一群优秀的人:以 Niko 为核心的语言核心团队的人。可以在Rust官网 Governance 页面看到 Rust 语言各个团队的成员信息:https://www.rust-lang.org/governance 。在这个页面上,你也可以看到曾经为 Rust 效力的前队员。然而,Graydon 却没在其中,但社区的人们是不会忘记他的。在 GitHub 上的一些Rust 语言特性,现在 Graydon 偶尔也会参与讨论。
2020 年 8月,Mozilla 大裁员。因为疫情导致经济下滑,Mozilla改变了战略。将 Servo 团队的成员全部裁掉,并且也包含了 Rust 团队的部分 Mozilla 员工。其中包括了 Rust 编译器团队的Leader之一 Felix Klock。
2020 年 11月底,亚马逊在其官网博客高调宣称招聘了 Felix Klock。但是很多国内媒体,包括一些自媒体,把 Felix Klock 解读为 Rust 语言创造者。然而,Felix 只是编译器团队Leader,他只是不领 Mozilla 的工资,但是依然还在 Rust 编译器团队中。所以,不要被网上的那些谣言给带偏了。要学习 Rust,就要自己亲自了解下 Rust 语言及其生态信息。
Rust 基金会目前也在积极筹备中,据说放在了瑞士,Rust 未来可期。
一门赋予每个人
构建可靠且高效软件能力的语言.
Rust 语言从语言层面去保证了程序的正确性,并且基于类型安全的类型系统,专门为内存安全和并发安全做了所有权语义模型。可以让开发者在编译阶段就能识别出内存不安全和线程不安全的错误。
1. Rust 语言本身所具备的优秀的工程能力。
2. Rust 语言现代化的开发工具链。
3. Rust 语言强大的类型系统和显式的语义,可以让开发者实现高效且无麻烦的代码重构。
1. 内存安全为第一原则。
2. 在不违反第一条原则基础上,做到不牺牲性能。
3. 做到语义层面的高度一致性。
4. 在做到安全和性能的基础上,开发者的人体工程学(开发体验)至上。
5. 语言特性必须保持实用。
6. 提供详尽的文档和学习资料。
7. 开放和谐的社区也是语言的一部分。
代数数据类型。Rust 也支持,并且引入了函数式编程特性。
泛型。Rust 也支持。
存在类型。Rust 也有。
基于Region (词法作用域)的内存管理 。(Rust 所有权基础,这方面类似于C++11引入的智能指针,借用检查最初也是基于词法作用域作用域,后来改进为 基于MIR的更细粒度的生命周期 )
线性/仿射类型(Rust 所有权基础)
-
更安全的指针,CyClone 分了好几种指针类型,比如空指针、胖指针、内存安全的指针、多态指针等。而 Rust 则只区分了 「引用/借用」、「智能指针」和「裸指针」三种,巧妙地把借用检查融合为了一体。 -
无缝兼容C语言。Rust 则通过 划分 Unsafe 边界来无缝对接 C-ABI。
完全零基础的开发者:掌握计算机基础体系知识结构,理解Rust语言的核心概念;
有C语言基础:由于C语言开发者对高级语言的抽象不是很理解,所以着重了解Rust语言的抽象模式,掌握Rust所有权机制;
有C++基础:C++开发者对于Rust语言的所有权有很好的理解能力,主要精力放在Rust的抽象方式和函数式语言特性上;
有Java/Python/Ruby基础:着重理解攻克Rust所有权、抽象模式、函数式编程语言特性;
有Go基础:Go语言开发者比较容易理解Rust的类型和trait抽象模式,但Go也是GC语言,所以所有权机制和函数式语言特性是他们的学习重点。
有Haskell基础:Haskell系的开发者对Rust语言函数式特性能很好的理解,主要攻克所有权机制和OOP语言特性。
零基础能否学 Rust 语言?
学 Rust 语言是否可以跳过 C 语言?
Rust 只能开发底层系统软件?前端工程师可以学 Rust 吗?Rust可以全栈开发吗?
Rust 语言适合刷算法题吗?
-
Rust 语言要发展需要依赖杀手级应用吗?