Rust,云时代的 C++

2021年8月16日 198点热度 0人点赞 0条评论

现有的编程语言非常多,大家都习惯了要在性能、表达力和内存安全之间取舍,直到 Rust 横空出世。

对于 Rust 这门语言,很多人可能都听过,但是没用过。实际上,早从 16 年起,Rust 已经连续六年霸榜,被 Stack Overflow 评选为最受开发者喜爱的语言

当然,它优点确实很多。不夸张地说,用过 Rust 的人都说各种好。

首先 Rust 没有历史包袱,采百家之长。从语言的内核看, Rust 重塑了对基本概念的理解。比如它清晰地定义了变量的生命周期,不仅摒弃GC这样的内存和性能杀手,还不用关心手动内存管理,让内存安全和高性能兼得。

其次,从语言的外观来看,它用起来很像 Python/TypeScript 这样的高级语言,表达能力一流,但性能丝毫不输于 C/C++,表达力和高性能二者兼得

所以,集表达力、高性能、内存安全于一身的 Rust ,在很多场景里都能大施拳脚。除了在传统的系统开发领域,如操作系统、设备驱动、嵌入式等方向高歌猛进之外,Rust 还在服务端高性能、高并发场景遍地开花。

图片

目前国内外不少知名互联网或科技公司,都在采用 Rust 重构技术栈,比如字节的飞书、Google 的 Fuchsia 等,清华大学也开始让本科生学习 Rust 而不是 C/C++。在可预见的未来,Rust 或在大多数领域代替 C/C++,成为开发者的主力语言。

用起来就有多香,学起来就有多难。Rust 也是公认的难入门,学习曲线很陡峭。

除了普遍觉得不好学的所有权和生命周期以外,不同语言背景还会有不同的难点:

  • C 开发者,难点是类型系统和泛型编程;

  • C++ 开发者,难点主要在类型系统;

  • Python/Ruby/JavaScript 开发者,难点在并发处理、类型系统及泛型编程;

  • Java 开发者,难点在异步处理和并发安全的理解上;

  • Golang 开发者,难点在类型系统和泛型编程

我自己在学习 Rust 的过程中,也经历了从一知半解到了然在胸的过程。在深度阅读各种书籍资料(中文书推荐汉东的《Rust 编程之道》)之余,我还广泛阅读 Rust 标准库的源码,从这些源码中汲取第一手的营养。除此之外,我还大量撰写代码,除了在 crates.io 上发布的十多个 crate 外,我还用 Rust 写了不少个人项目,涵盖从后端服务,API,到 Rust 和 swift / elixir / nodejs 等语言的交互,再到用 Rust 开发 web 前端。

在这个过程中,我总结了不少知识和经验,并且尝试着把这些知识经验传授给更多的人。我给我的同事们培训 Rust,也在我的公众号撰写 Rust 系列文章和在 bilibili 上发布《程序君的 Rust 培训》。我希望,通过这些努力,可以让更多的开发者了解和使用 Rust,帮助他们成为更好的程序员,为他们自己的职业生涯开辟更多的可能性。

但是这些内容还不够系统,不够全面,对初学者不够友好。我也一直在思考怎样把我掌握的 Rust 知识以一种更好的方式展现出来。

于是,我和极客时间合作推出了这个专栏《陈天 · Rust 编程第一课》。我希望能通过这个专栏,给你一个系统的 Rust 的入门路径,由浅入深,帮助你攻克 Rust 的主要难点,理解其设计理念:

图片

承担着「Rust 第一课」的使命,在每堂课我尽量讲得通俗易懂,把各个知识点类比到不同的语言中,设计了很多小而美的示例代码,引入 Rust 标准库的源代码进行分析,并且还精心绘制了大量的原理图。每一讲都遵循「表层知识 → 解读源码 → 底层设计」的思路力求帮你理解 Rust 繁多概念背后的设计逻辑。

图片

(我用 excalidraw 绘制的原理图 - 你会在课程中逐渐见到它们)

具体来看,整个专栏分成 5 个模块:

1.前置知识篇

回顾软件开发的基础概念:堆、栈、函数、闭包、泛型、同步和异步等。这些是学好任意一门编程语言都要吃透的概念,因为编程语言不过是这些概念的具体表述和载体。

2.基础知识篇

深入浅出地探讨 Rust 变量的所有权和生命周期,对比几种主流的内存管理方式,包括 C 的手工管理、Java 的 GC、Swift 的 ARC 和 Rust 的独特方案。之后围绕所有权和生命周期,来讨论 Rust 的几大语言特性:函数式编程特性、类型系统、泛型编程以及错误处理。

3.进阶篇

Pascal 之父,图灵奖得主尼古拉斯·沃斯有一个著名的公式:算法 + 数据结构 = 程序,想随心所欲地使用 Rust 构建数据结构,深度掌握类型系统必不可少。所以将重点介绍 Trait、Trait Object、泛型、Unsafe Rust、 FFI,用 Rust 为自己的主力语言在关键路径上提供更高性能。

4.并发篇

学会用最合适的工具解决最合适的问题很重要。这个模块将带你从底层的 atomics 一路向上,历经 Mutex、Semaphore、Channel,直至 actor model,探索不同的并发手段。你会深度了解到,其他语言中被奉为圭臬的并发手段,在 Rust 里,只不过是一种并发工具。

5.实战篇

单纯掌握语言特性,能写出解决一些小问题的代码,就像在游泳池里练习冲浪,算是初窥门径;想要真正把语言融会贯通,还要靠大风大浪中的磨炼。这个模块会带你学习如何把 Rust 应用在生产环境中,以及如何用 Rust 解决实际问题。

有多少干货,来看看目录吧。

图片

再强调一点

专栏刚上线

早鸟 + 口令「Rust66666」

到手 ¥89,立省 ¥40

如果你是新人,只需 ¥59.9

图片

今日订阅,还可以加入这门课程官方的「Rust 语言入门交流群」。

扫描海报中的二维码,或者点击「阅读原文」,使用口令「Rust66666」,只要 89 元,掌握“Rust 开发" 这个大技能,让 Rust 成为你的下一门主力语言,不亏。

14410Rust,云时代的 C++

root

这个人很懒,什么都没留下

文章评论