陈天 · Rust 编程第一课--极客时间课程推荐/优惠
版权声明
本站非极客时间官网,与官方无任何关系。我们不提供课程下载或详细内容,仅作为课程分享和推荐平台。我们鼓励大家支持正版,尊重创作者的劳动成果,这样不仅能帮助创作者持续产出优质内容,也能让自己获得更好的学习体验。请通过官方渠道购买和学习课程,感谢您的理解与支持。
课程详情
你将获得:
- 系统高效的 Rust 学习路径;
- 攻克 Rust 编程十大难点;
- 即学即练,Rust 四大项目实战;
- 200+原理图,详解 Rust 设计理念。
课程介绍
Rust 集表达力、高性能、内存安全于一身,在 1.0 版本发布后不久,口碑就一路高飞猛进,从 16 年起,连续 6 年成为 Stack Overflow 用户评选出来的最受喜爱的语言(2021/3/15评选结果)。
近几年,国外很多厂商宣布用 Rust 重写自己的技术栈,国内也有用 Rust 重写后端中间件的趋势。在可预见的未来,Rust 或在大多数领域代替 C/C++,甚至 Java/Golang,成为开发者的主力语言。
但是,Rust 对初学者似乎并不友好,被公认难入门,学习曲线相当陡峭。
比如变量的所有权和生命周期,作为 Rust 的创新概念,是其他编程语言都未涉及的领域。除此之外,不同语言背景,学习也各有难点:
- C 开发者,难点是类型系统和泛型编程;
- C++ 开发者,难点主要在类型系统;
- Python/Ruby/JavaScript 开发者,难点在并发处理、类型系统及泛型编程;
- Golang 开发者,难点在类型系统和泛型编程;
- Java 开发者,难点在异步处理和并发安全的理解上。
该如何跨越这些门槛,不断攀登新高峰呢?
为此,我们邀请到 Rust 专家陈天老师,结合其十八年深度使用多种语言的经验,以先行者的身份输出学习心法,从新手命令行到项目落地,带你知识与实战两手抓,真正掌握 Rust 的概念本质和设计理念,把 Rust 引入你的技术栈。
课程模块设计
整个专栏分为五个模块:
前置知识篇
回顾软件开发的基础概念:堆、栈、函数、闭包、虚表、泛型、同步和异步等。这是学好任意一门编程语言都要吃透的概念,因为编程语言不过是这些概念的具体表述和载体。
基础知识篇
首先通过get hands dirty小项目周,感性体验Rust语言的魅力,然后回归理性,结合第一性原理,深入浅出地探讨 Rust 变量的所有权和生命周期,以及对比几种主流的内存管理方式。之后围绕所有权和生命周期,来讨论 Rust 的几大语言特性:函数式编程特性、类型系统、泛型编程以及错误处理。
进阶篇
Pascal 之父,图灵奖得主尼古拉斯·沃斯有一个著名的公式:算法+数据结构=程序,想随心所欲地使用 Rust 为你的系统构建数据结构,深度掌握类型系统必不可少。
所以这个模块将重点介绍 trait、trait object、泛型、unsafe rust,最后还会讲到 FFI,让你用 Rust 为自己的主力语言在关键路径上提供更高的性能,或者引入 Rust 生态中特定的库。
并发篇
学会用最合适的工具解决最合适的问题很重要。这个模块将带你从底层的 atomics 一路向上,历经 Mutex、Semaphore、Channel,直至 actor model,探索不同的并发手段。你会深度了解到,其他语言中被奉为圭臬的并发手段,在 Rust 里,只不过是一种并发工具。
实战篇
单纯掌握语言特性,能应用这些特性写出解决一些小问题的代码,算是初窥门径,就像在游泳池里练习冲浪,想要真正把语言融会贯通,还要靠大风大浪中的磨炼。这个模块会带你学习如何把 Rust 应用在生产环境中,以及如何使用 Rust 的编程思想解决实际问题。
课程目录
开篇词
- 开篇词|让Rust成为你的下一门主力语言
前置篇
- 01|内存:值放堆上还是放栈上,这是一个问题
- 02|串讲:编程开发中,那些你需要掌握的基本概念
- 加餐|这个专栏你可以怎么学,以及Rust是否值得学?
基础篇
- 03|初窥门径:从你的第一个Rust程序开始!
- 04|get hands dirty:来写个实用的CLI小工具
- 05|get hands dirty:做一个图片服务器有多难?
- 06|get hands dirty:SQL查询工具怎么一鱼多吃?
- 07|所有权:值的生杀大权到底在谁手上?
- 08|所有权:值的借用是如何工作的?
- 09|所有权:一个值可以有多个所有者么?
- 10|生命周期:你创建的值究竟能活多久?
- 11|内存管理:从创建到消亡,值都经历了什么?
- 加餐|愚昧之巅:你的Rust学习常见问题汇总
- 12|类型系统:Rust的类型系统有什么特点?
- 13|类型系统:如何使用trait来定义接口?
- 14|类型系统:有哪些必须掌握的trait?
- 15|数据结构:这些浓眉大眼的结构竟然都是智能指针?
- 16|数据结构:Vec<T>、&[T]、Box<[T]> ,你真的了解集合容器么?
- 17|数据结构:软件系统核心部件哈希表,内存如何布局?
- 18|错误处理:为什么Rust的错误处理与众不同?
- 19|闭包:FnOnce、FnMut和Fn,为什么有这么多类型?
- 20|4 Steps :如何更好地阅读Rust源码?
- 21|阶段实操(1):构建一个简单的KV server-基本流程
- 22|阶段实操(2):构建一个简单的KV server-基本流程
期中周
- 加餐|期中测试:来写一个简单的grep命令行
- 加餐|期中测试:参考实现讲解
进阶篇
- 23|类型系统:如何在实战中使用泛型编程?
- 24|类型系统:如何在实战中使用trait object?
- 25|类型系统:如何围绕trait来设计和架构系统?
- 加餐|Rust2021版次问世了!
- 26|阶段实操(3):构建一个简单的KV server-高级trait技巧
- 27|生态系统:有哪些常有的Rust库可以为我所用?
- 28|网络开发(上):如何使用Rust处理网络请求?
- 29|网络开发(下):如何使用Rust处理网络请求?
- 30|Unsafe Rust:如何用C++的方式打开Rust?
- 31|FFI:Rust如何和你的语言架起沟通桥梁?
- 32|实操项目:使用PyO3开发Python3模块
并发篇
- 33|并发处理(上):从atomics到Channel,Rust都提供了什么工具?
- 34|并发处理(下):从atomics到Channel,Rust都提供了什么工具?
- 35|实操项目:如何实现一个基本的MPSC channel?
- 用户故事|绝望之谷:改变从学习开始
- 36|阶段实操(4):构建一个简单的KV server-网络处理
- 37|阶段实操(5):构建一个简单的KV server-网络安全
- 39|异步处理:async/await内部是怎么实现的?
- 38|异步处理:Future是什么?它和async/await是什么关系?
- 40|异步处理:如何处理异步IO?
- 41|阶段实操(6):构建一个简单的KV server-异步处理
- 42|阶段实操(7):构建一个简单的KV server-如何做大的重构?
实战篇
- 44|数据处理:应用程序和数据如何打交道?
- 43|生产环境:真实世界下的一个Rust项目包含哪些要素?
- 45|阶段实操(8):构建一个简单的KV server-配置/测试/监控/CI/CD
- 46|软件架构:如何用Rust架构复杂系统?
- 大咖助场|开悟之坡(上):Rust的现状、机遇与挑战
- 大咖助场|开悟之坡(下):Rust的现状、机遇与挑战
- 用户故事|语言不仅是工具,还是思维方式
结束语
- 结束语|永续之原:Rust学习,如何持续精进?
- 期末测试|来赴一场满分之约!
高级篇
- 加餐|代码即数据:为什么我们需要宏编程能力?
- 加餐|宏编程(上):用最“笨”的方式撰写宏
- 加餐|宏编程(下):用 syn/quote 优雅地构建宏
学习锦囊
- 特别策划|学习锦囊(一):听听课代表们怎么说
- 特别策划|学习锦囊(二):听听课代表们怎么说
- 特别策划|学习锦囊(三):听听课代表们怎么说
AIGC加餐
- 特别策划|生成式AI:哪些开发环节可能被颠覆?