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

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

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

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

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

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

Rust 的应用面

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

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

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

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

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

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

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

而且说真的,中文的 Rust 资料不多,不适合入门,也不系统,比较有名的是张汉东的《Rust编程之道》,难度系数比较大,我啃得也很艰难。后来看到和张汉东一起研究 Rust 的另一位大佬「陈天」,很早就关注了他的知乎,看过不少他分享的 Rust 的入门难点解读,讲得很透。

最近听说他在极客时间写了个专栏《陈天 · Rust 编程第一课》,第一时间就去订阅了,看了目录和更新的几篇,果然惊喜,真的做到了深入浅出。陈天结合了他 18 年深度使用多种语言的经验,以先行者的身份输出了一份「Rust 学习路径图」,分享给你。

整个专栏由浅入深,对比多种语言,带你攻克 Rust 编程 10 大难点,有 100+ 原理图,详解 Rust 设计理念。最后通过 4 个项目实操训练,理论与实战两手抓,真正让你掌握 Rust 开发精髓。

早鸟 + 口令「Rust66666 」立省 40 元

到手仅 ¥89,新人首单仅 ¥59.9

Rust 吸收了很多语言的优秀特性,所以,不论你是从 OOP 还是 FP 转向 Rust,都能看到优秀编程语言的影子。可以说,掌握了 Rust,就相当于掌握了很多其他语言的精髓;把 Rust 引入你的技术栈,也让自己职业生涯多一门面向未来的利器。

再说说作者「陈天」

陈天,现任北美最大的免费流媒体服务TubiTV 的研发副总裁,18 年始终致力于高性能系统的研发工作。

经验丰富,涵盖网络协议、网络安全、服务端架构、区块链以及云服务等诸多热门领域,他一直主张“以合适的工具解决合适的问题”,所以,当面对不同的工作需求,他坚持深度使用形态和机理都大相径庭的开发语言。

  • 用 C 和汇编打造过各种网络协议,维护过在网络安全领域非常知名的嵌入式操作系统 ScreenOS;

  • 用 Python/Javascript 撰写过曾经的创业项目途客圈;

  • 用 Node.js/Elixir 打造过 TubiTV 高并发的后端核心;

  • 用 Elixir 打造过区块链框架 Forge;

  • 也研究过 Haskell/F#、Clojure/Racket、Swift、Golang 和 C#等其他语言。

可以说,他对各个语言都了如指掌,这种资历的大佬能来开课,把自己独特的 Rust 学习方法和经验共享出来,真的很难得。

Rust 高效学习路径

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

具体来看,整个专栏分成 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 交流群」

点击「阅读原文」,只要 89 元,掌握“Rust 开发" 这个大技能,不亏。

彷徨编程十几年,终于盯上 Rust相关推荐

  1. 游戏编程十年总结(上)(转)

    游戏编程十年总结(上)(转) 一.总结 一句话总结:感觉作者是对游戏的喜爱,对编程的一腔热情,在资料极度匮乏的情况下保持非常好的学习热情,非常值得学习,从这个角度上来说,比之,我是不如的. 这样的故事 ...

  2. 编程十年的十种武学境界

    首先非常感谢大家这么多阅读量,评论和推荐.针对大家评论中的问题,在这里做一下统一回复.首先对于要我介绍程序媛的女朋友问题.我周围有一些没结婚的程序媛.她们对男孩子的物质要求都不高.但是女孩子生性浪漫, ...

  3. 游戏编程十年总结(下)(转)

    游戏编程十年总结(下)(转) 一.总结 一句话总结:看完作者的文章,我的感悟是:不到顶尖,终成废土,而且我要是不居安思危,不能够明确自己的处境和社会的竞争,必挂无疑. 这样的故事,真的需要多看. 作者 ...

  4. 编程十年 (4):步入编程殿堂

    编程十年 (4):步入编程殿堂 本文地址:http://www.cnblogs.com/AndersLiu/archive/2011/04/22/programming10years-04.html ...

  5. 编程十年 (7):科班?自学?

    编程十年 (7):科班?自学? 本文地址:http://www.cnblogs.com/AndersLiu/archive/2011/04/25/programming10years-07.html ...

  6. 编程十年 (10):我不是比尔•盖茨,我只是厌倦了

    编程十年 (10):我不是比尔•盖茨,我只是厌倦了 本文地址:http://www.cnblogs.com/AndersLiu/archive/2011/04/28/programming10year ...

  7. 编程十年 (1):前传1——记我家的电子产品

    编程十年 (1):前传1--记我家的电子产品 本文地址:http://www.cnblogs.com/AndersLiu/archive/2011/04/19/programming10years.h ...

  8. 游戏编程十年总结(下)

    游戏编程十年总结的上篇总结了前五年初学编程的经历,下篇总结的是开始工作之后的经历,前面五年算是一帆风顺,而接下来的经历,则充满了挫折与失败. 第一份工作 由于学历不高,还没毕业,经验不足让我吃了不少闭 ...

  9. 二十岁出头的时候上,你一无所有,你拥有一切

    一篇治愈系的励志文,分享给大家~ (一)嘴上说说的人生 那年我在离家的时候一个劲地往自己的硬盘里塞<灌篮高手>,我妈一副嗤之以鼻的表情看着我,似乎是在说:"这么大的人了居然还这么 ...

最新文章

  1. oracle 字符集 0354,如何查询Oracle的字符集? 爱问知识人
  2. IPSec ***基于ASA的配置(思科)
  3. React Native Windows 环境搭建(适合有Android 开发基础的同学)
  4. 非静态方法可以调用静态变量吗
  5. linux 备份svn
  6. jvm 启动参数设置
  7. RelativeLayout相对布局
  8. css网页favicon_自用代码css获取任意网址的/favicon.ico的方法教程
  9. 服务器mysql_本地如何操作服务器的mysql,详细教程
  10. 加密工具truecrypt 中文版 的加密解密添加文件的方法
  11. 移动互联网APP测试流程及测试点
  12. matlab如何根据历年gdp找增长规律,中国历年GDP统计数据
  13. 前端中适配各种手机模式的一种解决办法
  14. mac双系统w ndows8,U盘如何安装MAC双系统
  15. 如何提升邮箱邮件安全性,邮箱管理制度有哪些?
  16. unshift()向数组的开头添加一个或更多元素,并返回新的长度
  17. Java:String类学习笔记
  18. 金蝶二次开发的常见类型
  19. Teranex AV标准转换器
  20. 【交换机】网络交换机的作用

热门文章

  1. pcie协议_PCIE总线,你不得不知道的信号分布及使用情况
  2. 200903阶段一C++
  3. 【报错笔记】项目中使用ArrayList<>报错:‘<>’operator is not allowed for source level below 1.7
  4. Vim键盘图/Vim快捷键
  5. enum 使用规范及技巧(C# 参考)
  6. 从事UNIX/LInux服务器编程最方便的代码编译工具------(eclipse for c/c++)、(FileZilla)、(Secure CRT) 这三种一定要一起使用 之3...
  7. orleans/Documentation
  8. 【转】新浪微博手机客户端刷新都是手动刷新或者下拉刷新,为什么不设计成自动刷新?...
  9. nodeJS下利用mongdb进行数据库操作
  10. 【MYSQL】总结MySQL中对表内容的关联运算(join)