Rust 语言从入门到实战 唐刚
开篇词 (1讲)
开篇词|拥抱Rust浪潮,迎接更极致的编程体验
2014 年接触 Rust,从拥护者到布道者
C 极大主义者,缓冲区溢出、段错误等问题困扰
Rust 语言教程:RustPrimer
《Rust 权威指南》和《Rust 实战》
Rust 语言中文社区论坛 Rustcc.cn 和 Rust 语言中文社区公众号
Rust 始终保持初心:对安全性的追求,对性能的不妥协。
连续 8 年被 StackOverfow 评为最受程序员喜爱的语言。
暗潮汹涌的 Rust
操作系统、服务端、中间件、云原生、数据库、大数据、区块链、嵌入式、大模型、客户端,甚至 Web 前端开发领域。
观望期快结束了。验证期过后,很可能是一个爆发期
crate 下载量在以每年 1.8 倍的速度递增(已超过摩尔定律)。大厂也都在力推 Rust。
Rust 为什么这么难学?
--Rust 语言中的概念和风格跟现在主流的编程语言不一致
- 要重新理解一些基础概念,如变量赋值、可变性、所有权等。
- 要重新熟悉一些新的编程范式,如非 OOP、Trait 约束、链式操作等。
- 以前习惯了的快速学习方法不顶用了。
误解:编程语言发展方向就是语法越来越简单易用”的理念
趋势 --> 朝着类型化、健壮性方向发展。
编程这件事儿本身就很难:客观世界的复杂性,对这种客观复杂性的处理思路或设计哲学不一样。
- C 语言把场景复杂性留给了程序员,
- Java、Python 和 JavaScript 尽可能将内部复杂性进行封装和隐藏,容易入门。
- C++ 把复杂性留给了自己,入门和学好都比较困难。
- Rust 基本继承自C++,
- Rust吸收了前辈语言很多优秀成分,从所有权理论出发,打造出一个全新的体系。
- 与 C++ 一样,Rust 是一门全问题域语言(真正的全栈语言)。适应从嵌入式裸金属编程、OS 开发,到上层数据库、大模型系统几乎所有层次的开发需求。
- 被设计成一门立足安全、追求性能、迎合并行计算需求的语言。
不走寻常路的 Rust
Rust 之前的语言,在内存管理上:
- 追求高性能,内存管理基本上全权交给程序员。是否安全,程序员自己保证。 C、C++。
- GC ,运行时的负担、Stop The World 等问题。 Java
- C++ 中出现了一些智能指针的设计,来帮助程序员减轻内存管理的痛苦。(未成功应用)
Rust 语言:使用所有权对资源进行管理。
- 不需程序员手动管理内存,不需借助 GC 来管理内存。
- 灵感源于 RAII(Resource Acquisition Is Initialization,资源获取即初始化),做得更精细。
- Rust 语言,整合多种语言的优秀特性,主要来自于 C++,完全重新设计。
如何顺利入门?
关键就在于上手期的顺利程度。
- Rust 本身具有较多独特的语言元素,初学者第一次遇到这些元素时容易卡壳,导致编译不通过。(从入门到放弃)
- 课程中,用示例来引导你小阶梯地一步一步往上走。真正找到写 Rust 程序的感觉,体会到学习 Rust 语言的乐趣。
- 专注于把 Rust 语言中最核心的概念讲透,详解容易卡壳的地方。通过大量的代码示例,把这些细微精妙的东西讲清楚。
学习是 N+1 的过程。要一点一点地理解新知识,将其消化,与已有的知识体系融合,学好一步后,再学下一步,不能直接 N+2,要 N+1+1。
多时间把 Rust 的基础打好至关重要。Rust 是一门全栈语言,能够用很久。静下心来学习,似慢实快!
课程设计:实现这种 N+1+1 的效果
三部分。
基础篇
- Rust 语言的基础语法,最常用的语言组件,并用大量示例学习 Rust 所有权、类型 Trait。
- 将 Rust 必须掌握的部分拎出来,在有限的时间里掌握 Rust 语言的精髓。
进阶篇
智能指针、错误处理、宏、生命期初步分析、Rust 异步并发编程等。
异步并发编程在实际生产中使用越来越广泛,占比也最大。
掌握用 Rust 高效解决实际问题的方法。与 Java 类似,Rust 的编程模式是非常固定的。
应用篇
在实际的项目中应用 Rust --6 个不同领域的实战
Web 后端开发、前端 GUI 开发、游戏开发、大模型实践、解析器开发和跨语言开发
学会用 Rust 生态中的框架快速解决问题。感受到 Rust 语言的强大能力及其广泛的适用场景。
--> 选择一个方向继续深入,成为专家,必须花大量的时间去积累。
纸上得来终觉浅,绝知此事要躬行。要手敲代码,体会架构设计和编译调试过程中的乐趣。对 Rust 的理解到达一个新的层次。
留言:
第十八次入门rust,再给rust一次机会😅
作者回复: 感受到了真爱。
失业前端前来报道
作者回复: Rust岗位会越来越多,国内大中小厂都已经动起来了。