cs-self-learning/docs/编程入门/Rust/CS110L.md

33 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CS110L: Safety in Systems Programming
## 课程简介
- 所属大学Stanford
- 先修要求:最好有一定的编程背景并对计算机系统有初步的认识。
- 编程语言Rust
- 课程难度:🌟🌟🌟
- 预计学时30 小时
在这门课中你将会学习 Rust 这门神奇的语言。
如果你学过 C 并接触过一些系统编程的话,应该对 C 的内存泄漏以及指针的危险有所耳闻,但 C 的底层特性以及高效仍然让它在系统级编程中无法被例如 Java 等自带垃圾收集机制的高级语言所替代。而 Rust 的目标则是希望在 C 的高效基础上,弥补其安全不足的缺点。因此 Rust 在设计之初,就有带有很多系统编程的观点。学习 Rust也能让你之后能用 C 语言编写出更安全更优雅的系统级代码(例如操作系统等)。
这门课的后半部分关注在并发concurrency这一主题上你将会系统地掌握多进程、多线程、基于事件驱动的并发等若干并发技术并在第二个 Project 中比较它们各自的优劣。Rust 中 “futures” 的概念非常有趣和优雅,这些基础知识对你后续对计算机系统相关课程的学习很有帮助。另外,清华大学的操统实验 rCore 就是基于 Rust 编写的,具体参见[文档](https://rcore-os.github.io/rCore-Tutorial-Book-v3/index.html)。
## 课程资源
- 课程网站:<https://reberhardt.com/cs110l/spring-2020/>
- 课程视频:<https://youtu.be/j7AQrtLevUE>
- 课程教材:无
- 课程作业:共 6 个 Lab 和 2 个 Project作业文档和代码框架详见课程网站。其中两个 Project 非常有趣,分别是:
1. 用 Rust 实现一个类似于 GDB 的 debugger
2. 用 Rust 实现一个负载均衡器
> [CS 242: Programming Languages, Fall2019](https://stanford-cs242.github.io/f19/) week6 到 week9 关于 Rust 内容的讲解非常细致, 可以作为该课程的讲义补充。 另外, Ryan 在 <https://reberhardt.com/cs110l/spring-2021/> 中补充了 2020 版本缺失的关于 Futures Trait 内容的视频。
## 资源汇总
@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS110L - GitHub](https://github.com/PKUFlyingPig/CS110L) 中。
在2022年 CS110L 没有开源作业源码的背景下Rust 快速演进导致2020版本课程项目中所使用的库过于老旧。对此[@fung-hwang](https://github.com/fung-hwang) 尝试进行了适配时间为2022.11)。其适配过程和作业实现都汇总在 [fung-hwang/CS110L-2020spr - GitHub](https://github.com/fung-hwang/CS110L-2020spr) 中。也许当你开始本课程时 Rust 和这些库又发生了变化,但你仍可以参考并从中获得启发。