mirror of
https://github.com/gnu4cn/rust-lang-zh_CN.git
synced 2025-01-13 13:50:37 +08:00
Improved Ch00
This commit is contained in:
parent
2aa74adb08
commit
ac3fb4fe5f
@ -108,56 +108,51 @@ Rust 是为学生和那些对学习系统概念感兴趣的人准备的。使用
|
||||
|
||||
### 开放源代码开发者
|
||||
|
||||
Rust 是为着那些想要构建 Rust 编程语言本身、Rust 社区、Rust 开发者工具和库而准备的。我们希望你为 Rust 语言做出贡献。
|
||||
|
||||
Rust 是为那些想建立 Rust 编程语言、社区、开发者工具和库的人准备的。我们很希望你能为 Rust 语言做出贡献。
|
||||
|
||||
|
||||
### 看重运行速度与稳定性的人们
|
||||
|
||||
Rust 是为那些渴求某门语言所提供速度与稳定性的人们准备的。这里说的运行速度,指的是使用 Rust 可创建出程序的运行速度,以及 Rust 所能达到的编写这些程序速度。Rust 编译器的检查,确保了功能补充与重构的稳定性。这稳定性是与那些不具备这些检查语言中的脆弱老旧代码相比得出的,开发者通常害怕去修改那些脆弱老旧代码。通过争取实现零代价的抽象,就有了那些在手动编写时,就立即编译到底层代码的上层特性,Rust 致力于实现在构造安全代码的同时,还取得了快速的代码编写与程序运行。
|
||||
Rust 是为那些渴望语言的速度和稳定性的人准备的。我们所说的速度,既指 Rust 代码的运行速度,也指 Rust 让咱们编写程序的速度。Rust 编译器的检查,通过特性补充与重构来确保稳定性。这与没有这些检查的语言中脆弱的遗留代码形成了鲜明的对比,因为开发人员往往害怕修改这些代码。通过努力实现零成本的抽象,更高层次的功能,编译成底层代码,其速度与手工编写的代码一样快,Rust 努力使安全的代码也成为快速的代码。
|
||||
|
||||
Rust 语言也希望带给众多其他用户以支持;这里提到的只是一些最大的相关群体。总体来讲,Rust 最伟大的抱负,是要消除程序员们在过去数十年来,业已被迫接受的在安全性与生产力、开发和运行速度及人机交互上的妥协。请给 Rust 一个机会,然后看看 Rust 的选择是否适合于你。
|
||||
Rust 语言希望也能支持许多其他用户;这里提到的只是一些最大的利益相关者。总的来说,Rust 最大的野心是通过提供安全 *和* 生产力、速度 *和* 人机交互,来消除程序员几十年来所接受的这些方面的权衡取舍。给 Rust 一个尝试,看看他的选择是否适合你。
|
||||
|
||||
## 本书读者群体
|
||||
|
||||
本书假定你曾编写过其他某种编程语言的代码,至于何种编程语言并不重要。本书作者已尽力让其中的教学材料适合到有着宽泛编程背景的读者。这里不会花大量时间来解释编程为何物,以及该怎么来看待编程。若对编程一窍不通,那么最好找一本编程入门的书先看看。
|
||||
本书假设你用另一种编程语言写过代码,但不对哪种语言做任何假设。我们试图让来自不同编程背景的人,都能广泛接触到这些材料。我们没有花很多时间来讨论什么是编程或如何思考他。如果你对编程完全陌生,你最好读一本专门介绍编程的书。
|
||||
|
||||
|
||||
## 怎样使用本书
|
||||
|
||||
大体上,本书假定是要以从前往后的顺序进行阅读。后续章节是建立在较早章节的概念之上,而较早的章节不会深入某个话题的细节;在后续章节通常会回顾到那个话题。
|
||||
大体上,本书假定是要按从前往后的顺序进行阅读。后续章节是建立在较早章节的概念之上,前面的章节可能不会深入研究某个话题;在后续章节通常会回顾到那个话题。
|
||||
|
||||
本书有两种章节:概念性章节与项目性章节。在概念章节,将对 Rust 某个方面的有所了解。而在项目性章节,就会构建出一些在一起的小程序,这些小程序运用了概念性章节中学到的东西。第 2、12 和 20 章,就是项目性章节;而剩下的,全都是概念性章节。
|
||||
在本书中,咱们会发现有两种章节:概念章节和项目章节。在概念章节中,咱们将学习 Rust 的某个方面。在项目章节中,咱们将一起构建小程序,应用咱们到目前为止所学到的知识。第 2 章、第 12 章和第 20 章是项目章节;其余的是概念章节。
|
||||
|
||||
第 1 章讲了怎样安装 Rust、怎样编写出 “Hello, world!” 程序,还有怎样使用 Rust 的包管理器及构建工具 `Cargo`。第 2 章是 Rust 语言的一个实操介绍。这里涵盖了上层的一些概念,而在后续章节则会提供到进一步的细节。若要立即动手编写代码,那么第 2 章就可以开始了。一开始你或许想要跳过第 3 章,这一章涵盖了与那些其他编程语言类似的一些 Rust 特性,而要直接前往到第 4 章,去了解 Rust 的所有权系统。不过若要细致了解 Rust,就应详细掌握 Rust 的每个细节设计之后,在移步到下一章节,或许也会跳过第 2 章直接到第 3 章,然后在想要将学到的细节知识应用到项目时,再回到第 2 章。
|
||||
第 1 章介绍了如何安装 Rust,如何编写 "Hello, world!" 程序,以及如何使用 Rust 的包管理器和构建工具 Cargo。第 2 章是用 Rust 编写程序的实践介绍,让咱们构建出一个数字猜谜游戏。这里咱们从高层次上介绍了一些概念,后面的章节将提供更多的细节。如果咱们想马上动手,第 2 章就是这样的地方。第 3 章介绍了与其他编程语言类似的 Rust 特性,在第 4 章中咱们将了解 Rust 的所有权系统。如果你是一个特别细致的学习者,喜欢在学习每一个细节后再继续学习,你可能想跳过第 2 章,直接学习第 3 章,当你想在一个项目中应用你学到的细节时,再回到第 2 章。
|
||||
|
||||
第 5 章讨论了结构体和方法,同时第 6 章涵盖了枚举、`match` 表达式,和 `if let` 控制流结构。在构造 Rust 中的定制类型时,就会用到这些结构体和枚举。
|
||||
第 5 章讨论了结构和方法,第 6 章包括枚举、`match` 表达式和 `if let` 控制流结构。咱们将使用结构体和枚举来构造 Rust 中的自定义类型。
|
||||
|
||||
第 7 章将了解到 Rust 的模组系统,以及代码组织的隐私规则,还有 Rust 的公共应用编程接口(Application Programming Interface, API)。第 8 章讨论了一些常用的、由标准库提供的集合数据结构,诸如矢量、字符串及哈希图。第 9 章探索了 Rust 的错误处理思想与技巧。
|
||||
在第 7 章中,咱们将了解 Rust 的模组系统,以及组织代码的隐私规则及其公共应用编程接口,Application Programming Interface, API。第 8 章讨论了标准库提供的一些常见的集合数据结构,如向量、字符串和哈希图。第 9 章探讨了 Rust 的错误处理的概念和技巧。
|
||||
|
||||
第 10 章涉及了范型、特质(traits) 与生命周期,他们赋予了定义出应用多种类型代码的能力。第 11 章全都是关于测试的内容,即便有着 Rust 的安全性保证,对于确保程序逻辑正确,测试仍是不可缺少的。第 12 章将构建一个我们自己的、用于在文件中搜索文本的 `grep` 命令行工具功能子集的版本。到这里,就会用到先前章节中所讨论的众多概念了。
|
||||
第 10 章深入探讨了泛型、特性和生命期,他们让咱们有能力定义出适用于多种类型的代码。第 11 章是关于测试的,即便有 Rust 的安全保证,为确保咱们程序逻辑正确,测试仍是必要不可缺少的。在第 12 章中,我们将对 `grep` 命令行工具中的一个子集的功能建立自己的实现,他可以在文件中搜索文本。为此,我们将使用我们在前几章中讨论的许多概念。
|
||||
|
||||
第 13 章对闭包(closures)和迭代进行了探索:闭包和迭代属于 Rust 来自函数式编程语言的特性。第 14 章,将更深入地对 `Cargo` 加以检视,并就如何与他人分享库的最佳实践进行探讨。第 15 章讨论标准库提供的一些灵巧指针,还有实现不同功能的 Rust 特质(traits)。
|
||||
第 13 章探讨了闭包和迭代器:来自于函数式编程语言的 Rust 特性。在第 14 章中,我们将更深入地研究 Cargo,并讲到与他人共享库的最佳实践。第 15 章讨论了标准库提供的智能指针和实现其功能的特质。
|
||||
|
||||
第 16 章,将遍数并发编程的各种不同模型,并探讨 Rust 如何对大胆进行多线程编程的帮助。第 17 章将或许你所熟知面向对象编程的那些原则,与 Rust 下编程的习惯加以对比。
|
||||
第 16 章,咱们将过目不同的并发编程模型,并探讨 Rust 如何帮助咱们大胆地以多线程方式编程。第 17 章着眼于 Rust 习语如何与您可能熟悉的面向对象编程原则进行比较。
|
||||
|
||||
第 18 章是模式与模式匹配的一个参考,这在 Rust 程序中,属于是概念表达的强大方式。第 19 章包含了一个诸多感兴趣的话题大杂烩,包括不安全的 Rust、宏,以及更多有关生命周期、特质(traits)、类型、函数与闭包等等的细节。
|
||||
第 18 章是关于模式和模式匹配的参考,他们是在整个 Rust 程序中表达思想的强大方式。第 19 章包含大量有趣的高级主题,包括不安全的 Rust、宏,以及更多关于生命周期、特征、类型、函数和闭包的内容。
|
||||
|
||||
第 20 章,将完成一个其中实现了底层线程化的 web 服务器!
|
||||
第 20 章,咱们将完成其中实现了底层线程化的 web 服务器!
|
||||
|
||||
最后,还有一些包含了这门语言的有用信息的附录,这些附录则更多的像是参考的形式。附录 A 涵盖了 Rust 的关键字,附录 B 涵盖了 Rust 的运算符和符号,附录 C 涵盖了由标准库所提供的那些派生特质(derivable traits),附录 D 涵盖了一些有用的开发工具,还有附录 E 对 Rust 版本进行了解释。
|
||||
最后,一些附录以更类似于参考的格式包含有关该语言的有用信息。附录 A 涵盖了 Rust 的关键字,附录 B 涵盖了 Rust 的运算符和符号,附录 C 涵盖了标准库提供的可派生特质,附录 D 涵盖了一些有用的开发工具,附录 E 解释了 Rust 版本。在附录 F 中,你可以找到这本书的翻译,在附录 G 中,我们将介绍 Rust 是如何构造的以及什么是每日 Rust, nightly Rust。
|
||||
|
||||
阅读本书并无定法:你要跳着去读,也是可以的!在遇到疑惑时,或许就不得不跳回去看看了。你只要怎么有效就行了。
|
||||
|
||||
掌握 Rust 过程中的一个重要部分,就是要学会怎样去读那些编译器给出的错误消息:这些错误消息将引导你得到运作的代码。由此,本书将提供到许多不编译的示例,以及在各种情况下编译器将给出的错误消息。请知悉在进入到某个随机示例并加以运行时,示例代码可能会不编译!请确保要阅读这些示例周围的文字,来了解正尝试运行的示例,是不是有错误。本书中的虚拟人物 `Ferris` 也会帮助你识别代码是否会工作的:
|
||||
学习 Rust 过程中的一个重要部分是学习如何阅读编译器显示的错误信息:这些信息将指导咱们编写工作代码。因此,我们将提供许多不能编译的例子,以及编译器在每种情况下显示的错误信息。要知道,如果咱们随便输入并运行一个例子,他可能不会被编译!请确保咱们阅读周围的文字,看看咱们试图运行的例子是否是为了出错。
|
||||
|
||||
| Ferris | 意义 |
|
||||
| :-: | :- |
|
||||
| ![不会编译](images/Ch00_01.svg) | 此代码不会编译! |
|
||||
| ![不会运行](images/Ch00_02.svg) | 此代码不会运行! |
|
||||
| ![不会产生期望的行为](images/Ch00_03.svg) | 此代码不会产生出期望的行为。 |
|
||||
|
||||
*表 1 - Ferris 表情含义*
|
||||
|
||||
多数情况下,这里都会给出不会编译代码的正确版本。
|
||||
在大多数情况下,我们会带着找到任何不能编译的代码的正确版本。
|
||||
|
||||
## 本书的源码
|
||||
|
||||
本书所产生的源码,可在 [Github: gnu4cn/rust-lang](https://github.com/gnu4cn/rust-lang) 下载到。
|
||||
本书所产生的源码,可在 [Github: gnu4cn/rust-lang](https://github.com/gnu4cn/rust-lang-zh_CN) 下载到。
|
||||
|
@ -791,6 +791,10 @@ $ rustup component add llvm-tools-preview
|
||||
|
||||
Command-Line Interface,在终端里运行的应用,与在 GUI 窗口中应用不同。
|
||||
|
||||
- 模组系统
|
||||
|
||||
The module system,大型程序中,组织代码的方式。
|
||||
|
||||
|
||||
- 迁移所有权
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user