陈天 · Rust 编程第一课
陈天
Tubi TV 研发副总裁
23195 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 65 讲
基础篇 (21讲)
陈天 · Rust 编程第一课
15
15
1.0x
00:00/00:00
登录|注册

加餐|这个专栏你可以怎么学,以及Rust是否值得学?

Result<T, E>类型
多线程的语言
资源安全缺陷
内存泄漏
内存自动管理的语言
非类型安全的语言
Rust Language Server / Rust Analyzer
Rust和Golang的对比
Rust生态的增长
缺陷的发现时间
代码风格和常见错误引发的缺陷
错误处理缺陷
并发安全缺陷
内存和资源安全缺陷
类型安全缺陷
语法缺陷
视频资源
博客和公众号
书籍
Rust官方练习
Rust代码的文档系统
官方文档
语言发展前景判断
引入缺陷的代价
控制代码缺陷
其他学习资料
官方学习资料
为什么学习Rust
Rust语言学习
文章主题总结

该思维导图由 AI 生成,仅供参考

你好,我是陈天。
离课程上线到现在,确实没有想到有这么多的同学想要学习 Rust,首先谢谢你的支持、鼓励和反馈。
这两天处理留言,有好多超出我预期的深度发言和问题,比如说 @pedro @有铭 @f 等等同学,不仅让我实实在在地感受到了你们的热情,也让我更加坚定了要教好这门课的决心。正好在这篇加餐中,我来详细谈谈同学们比较关心的一些问题。
首先会从控制代码缺陷的角度,聊一聊为什么说 Rust 解决了我们开发者在实践过程中遇到的很多问题,而这些问题目前大部分语言都没有很好地解决;然后我们会再讲讲为什么 Rust 未来可期,顺便比较一下 Rust 和 Golang,这是留言里问的比较多的;最后还会分享一些 Rust 的学习资料。

代码缺陷

从软件开发的角度来看,一个软件系统想要提供具有良好用户体验的功能,最基本的要求就是控制缺陷。为了控制缺陷,在软件工程中,我们定义了各种各样的流程,从代码的格式,到 linting,到 code review,再到单元测试、集成测试、手工测试。
所有这些手段就像一个个漏斗,不断筛查代码,把缺陷一层层过滤掉,让软件在交付到用户时尽善尽美。我画了一张图,将在开发过程中可能出现的缺陷分了类,从上往下看:
(课程里的图片都是用 excalidraw 绘制的)
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Rust语言的学习方法及发展前景 Rust语言的学习方法和优势在本文中得到详细介绍。文章首先从控制代码缺陷的角度出发,讨论了Rust语言在解决开发者在实践过程中遇到的语法、类型、内存和资源、并发、错误处理等方面的问题。通过Rust的类型系统、所有权、借用检查和生命周期检查等特性,能够在编译期间发现并解决大量缺陷,从而保证代码质量。此外,文章还从引入缺陷的代价的角度阐述了Rust语言的优势,指出Rust能够在编译期间检测出缺陷,让开发者能够在秒和分钟级别就发现并修改缺陷,避免将缺陷带入后续环境,最大程度地保证代码质量。总的来说,Rust语言通过其独特的特性和优势,为开发者提供了一种高效、安全的编程语言选择。 此外,文章还对Rust语言的发展前景进行了分析。通过统计数据显示,Rust生态虽然绝对数量不高,但增长率一直遥遥领先,过去两年多的增长速度差不多是第二名NPM的两倍。文章还对Rust和Golang进行了对比,指出了它们各自的优势和适用场景。最后,文章还介绍了一些官方和其他学习资料,为读者提供了学习Rust语言的参考资源。 总的来说,本文通过详细介绍Rust语言的学习方法和发展前景,为读者提供了全面了解Rust语言的概览。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《陈天 · Rust 编程第一课》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(34)

  • 最新
  • 精选
  • leiiiooo
    置顶
    老师好,今天阅读到这段话的时候不是很理解。“Rust 的诞生目标就是取代 C/C++,想要做出更好的系统层面的开发工具,所以在语言设计之初就要求不能有运行时” 这个不能有运行时如何理解,C/C++没有运行时吗?这里我的记忆有些模糊了,也去查了些资料,还是不太理解,Rust也没有运行时吗?没有运行时它是直接由编译器生成到机器码吗?

    作者回复: 对,Rust 和 C/C++ 都是编译成机器码,直接面对具体的 CPU 架构。所以 Rust 代码需要为每个平台单独编译,这是它和 Java/DotNet 等语言的主要区别;但是像 golang 这样的语言,它也直接编译成机器码,但 golang,即便一个最简单的 hello world,编译出来的代码也包含了一个庞大的运行时,处理调度,GC 等工作。Rust 没有这些额外的运行时。

    2021-08-25
    7
    23
  • 小样
    置顶
    再推荐一个和“rustlings”很像的,也是跟着一个个的例子往前走,《通过例子学rust》,有中文版。 另外rust看起来确实很美好,内存安全,无gc,无畏并发。但我不相信这世上有银弹,一门语言就解决了所有问题,继续学习吧,希望陈老师能带我们看看rust这个洞到底有多深😎

    作者回复: 是的,一门语言不能解决所有问题。:)

    2021-08-25
    9
  • pedro
    这里补充一点,即使你看了再多的书,刷了再多的视频,你的rust其实还是一地稀碎。 纸上得来终觉浅,绝知此事要躬行,所以没有什么是比和编译期做斗争,再思考,再斗争更好的学习方式了!

    作者回复: 对的。所以我们强调要实践,要学以致用。

    2021-08-25
    2
    35
  • Geek_8598a7
    在现在(2021年),Rust作为一个良好设计的现代非托管内存编程语言,毫无疑问是有很大的学习价值的,且由于后发优势相比同类的编程语言学习的效率也会更好。 但本篇文章中整体传达出的意思是有些不负责任的,举两个具体的例子:1、增长率高只是增长率高,不能说明潜力高,既没有因果性,也没有相关性;2、“我对 Rust 的前途持非常乐观的态度……”后续一段列举了多个场景,但并没有说剂量,是的,如果抛开剂量这些说法都是成立的,但是作为一个在编码阶段给程序员施加诸多心智开销的语言,注定不可能在业务逻辑开发的场景占到较大的比例,可能存在,但只可能存在很小的部分;绝大部分市场、岗位,仍然属于业务逻辑更方便编写的语言。 以上说的两点我相信作为工程基础扎实的作者其实是能够理解的。 这篇文章整体传达出的倾向,并不是基于现实情况给出的中立预估,而是选择性的说了一部分,最终给读者一种Rust过高的期待。 这种事情在技术传道的时候其实是非常常见的,可以说是一种通用的做法,我不觉得算是有问题。大部分资深的人也习惯了,并在心里会有一个正确的预估。 但看到这个课程的评论,我还是担心,会有新人给予Rust过高的期待,进而影响后续的学习路线,导致真正面临职业选择的时候,可选择的面变得非常的窄,即使最终能来得及调整自己的选择,但职业发展已经太晚了,毕竟技术人员的成长是一个复利的事情,晚个几年可以说是人生级的损失也不为过————我们在过去很多语言/技术栈上都见过这样的人。 希望作者能够多做一步,不仅限于按照业界常见的手法去传播相关技术,而是给读者一个比较现实、中立的描述。我觉得还是有这种可能性的,因为和很多传播技术的人不一样,首先作者具有广泛的技术视野和工业经验,能给出一个更合理的说法;同时不像很多其他技术的推广者就是开发者本身,作者没有和推广的技术(这里是Rust)有任何利益绑定,是通过热爱在这边更新教程,那么能不能更进一步,留给真正的萌新们一个更好的启蒙呢?

    作者回复: 谢谢你的回复!你可以看接下来的三篇,我分别用一个 CLI,一个 web 服务,一个对 csv 做 sql 查询的工具把 Rust 引入给 Python3/javascript,从几个方面展示 Rust 的巨大能力。所谓 talk is cheap, show me the code,你可以在看这些真实世界里的需求如何通过 Rust 实现,再想想自己的主力语言如何实现,两相对比,自己感受 Rust 的能力和潜力,是否适合做业务逻辑,职业面是否会窄,它会不会让你成为一个更好的程序员。 潜力这事,本就是仁者见仁智者见智的。我只是给出数据抛砖引玉。如果增长率不可以佐证潜力,stackoverflow 连续六年用户最爱不可以佐证潜力,良好的用户体验和稳定的六周发布周期不能佐证潜力,linux kernel,android 以及很多大厂在业务系统中都在引入 Rust 不能佐证潜力,那么我不知道什么可以佐证潜力。当然潜力不一定能兑现成未来的即战力,就像不少 NBA 新秀高光之后慢慢沦为路人。但作为一个在生产环境中使用过多种语言的工程师,我觉得 Rust 有很大的概率兑现它的这些潜力: 1. 在很多场合下,成为其他语言要做高性能组件的首选语言(比如做一个库给 Python/Elixir/nodejs 使用) 2. 成为业务流程中核心服务的首选语言(比如 in-memory 状态处理服务) 3. 成为多端共享核心逻辑的首选语言(比如 iOS/android 共享一个 engine) 4. 成为系统开发的重要语言

    2021-09-08
    7
    30
  • byemoto
    学习资料推荐一个: cheats.rs 里面有语法特性概览, 适合速查

    作者回复: 对,这个非常棒,我在后续的讲解中还引用了其中的图。还有一个类似的是:https://docs.google.com/presentation/d/1q-c7UAyrUlM-eZyTo1pd8SZ0qwA_wYxmPZVOQkoDmH4/

    2021-08-25
    21
  • MacJayLee
    太值得学习了,为数不多的性能与内存安全并存的语言, 我是重度golang开发者,golang很优秀,网络io型程序开发的绝对利器,开发效率和性能可以达到一个很好的平衡,但是面对内存的过高占用以及cpu密集型计算的场景,深感无力,所以必须掌握rust。相信go和rust的结合一定会有光明的未来

    作者回复: 👍 的确如此

    2021-08-25
    2
    17
  • ecafkoob
    现在一些cncf的项目就是go+rust这种模式。比如tidb 还有linkerd 2。感觉这种相互配合的模式就挺好的。rust未来可期。

    作者回复: 嗯,很多项目一开始是纯 golang,后来会把一些核心的,需要高性能的部分抽取出来用 rust 实现。

    2021-08-25
    2
    9
  • 常常
    基础语法了解之后,感觉还是照猫画虎,老师有什么好的建议么,虽然语法都熟悉,但是感觉还是很陌生。

    作者回复: 多看那些优秀的项目,多尝试着自己写一些东西。比如把一篇文字(如战争与和平)的词汇的 frequency 表生成出来,打印前 10,这样的简单问题,尝试用 Rust 实现,然后不断优化(使用 rayon,使用 tokio + channel,甚至使用 datafusion),把性能做到极致。

    2021-12-11
    5
  • 王硕尧
    Jon Gjengset 正在写的 Rust for Rustaceans 不错,还有Rust in Motion,Rust in Action

    作者回复: 嗯,Rust for Rustaceans 比较适合有一定基础的,我也期待这本书。

    2021-08-25
    5
  • Sports
    听音频最后有惊喜哦:)

    作者回复: :)

    2021-08-25
    2
    4
收起评论
显示
设置
留言
34
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部