diff --git a/code-language/go/README.md b/code-language/go/README.md index eea369d..fc6b601 100644 --- a/code-language/go/README.md +++ b/code-language/go/README.md @@ -110,18 +110,9 @@ - gofmt,它统一了 Go 语言的代码风格,在其他语言开发者还在为代码风格争论不休的时候,Go 开发者可以更加专注于领域业务中。 - 在提供丰富的工具链的同时,Go 在标准库中提供了官方的词法分析器、语法解析器和类型检查器相关包,开发者可以基于这些包快速构建并扩展 Go 工具链。 +## 2. 基础 - - - - - - - - - -## 基础 - +### 2.1 diff --git a/code-language/rust/README.md b/code-language/rust/README.md index 37f35a3..d5b5e97 100644 --- a/code-language/rust/README.md +++ b/code-language/rust/README.md @@ -1,6 +1,45 @@ # Rust -## Rust 基础 + +## 0. 目录 + + +## 1. 背景 + +### 1.1 前置知识 +- 使用合适的工具解决合适的问题 +- 首先,你使用起来就会感受到,**Rust 是一门非常重视开发者用户体验的语言** +- 一门语言的编译器在告知你的代码错误的同时,还会极尽可能,给你推荐正确的代码。 +- 这种程度的体验,一旦你适应了 Rust,就很难离得开。Rust 语言的这种极致用户体验不仅仅反映在编译器上,整个语言的工具链包括 rustup、cargo 等,都是如此简单易用、善解人意。 +- 众所周知的优异性能和强大的表现力,让 Rust 在很多场合都能够施展拳脚 +- 截止 2021 年,主流的互联网公司都把 Rust 纳入主力语言,比如开发操作系统Redox/Fuchsia、高性能网络 Tokio、应用的高并发后端 TiKV,甚至客户端软件本身(飞书) +- Rust 除了在其传统的系统开发领域,如操作系统、设备驱动、嵌入式等方向高歌猛进之外,还在服务端高性能、高并发场景遍地开花。 +- 公司都是业务层面驱动自然使用到 Rust 的 + - 比如 Discord 原先使用 Golang 的状态服务,一来会消耗大量的内存,二来在高峰期时不时会因为垃圾回收导致巨大的延迟,痛定思痛后,他们选用 Rust 重写。 + - 官方说法,Rust 除了带来性能上的提升外,还让随着产品迭代进行的代码重构变得举重若轻。 +- 学习 Rust 的难点 + - Rust 被公认是很难学的语言,学习曲线很陡峭。 + - 所以如果你想从其他语言迁移到 Rust,必须要经过一段时期的思维转换(Paradigm Shift)。 + - 从命令式(imperative)编程语言转换到函数式(functional)编程语言、从变量的可变性(mutable)迁移到不可变性(immutable)、从弱类型语言迁移到强类型语言,以及 + 从手工或者自动内存管理到通过生命周期来管理内存,难度是多重叠加 + - Rust 中最大的思维转换就是**变量的所有权和生命周期** + - 在所有权和生命周期之外,语言背景不同的工程师也会有不同难点,你可以重点学习: + - C 开发者,难点是类型系统和泛型编程; + - C++ 开发者,难点主要在类型系统; + - Python/Ruby/JavaScript 开发者,难点在并发处理,类型系统及泛型编程; + - Java 开发者,难点在异步处理和并发安全的理解上; + - Swift 开发者,几乎没有额外的难点,深入理解 Rust 异步处理即可。 +- 从语言的内核来看,它重塑了我们对一些基本概念的理解。比如 Rust 清晰地定义了变量在一个作用域下的生命周期,让开发者在摒弃垃圾回收(GC)这样的内存和性能杀手的前提 + 下,还能够无需关心手动内存管理,让内存安全和高性能二者兼得。 +- 从语言的外观来看,它使用起来感觉很像 Python/TypeScript 这样的高级语言,表达能力一流,但性能丝毫不输于 C/C++,从而让表达力和高性能二者兼得。 +- 如何学好 Rust? + - 精准学习 + 刻意练习 + - 所谓精准学习,就是深挖一个个高大上的表层知识点,回归底层基础知识的本原,再使用类比、联想等方法,打通涉及的基础知识;然后从底层设计往表层实现,一层层构建知识 + 体系,这样“撒一层土,夯实,再撒一层”,让你对知识点理解得更透彻、掌握得牢固。 + + + +## 2. Rust 基础 ## Rust 核心概念