登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入 新註冊 | 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / EMS,時效:出貨後2-3日

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

2023年08月出版新書

2023年07月出版新書

2023年06月出版新書

2023年05月出版新書

2023年04月出版新書

2023年03月出版新書

2023年02月出版新書

『簡體書』Rust编程之道

書城自編碼: 3298433
分類: 簡體書→大陸圖書→計算機/網絡程序設計
作者: 张汉东
國際書號(ISBN): 9787121354854
出版社: 电子工业出版社
出版日期: 2019-01-01


書度/開本: 16开 釘裝: 平装

售價:NT$ 806

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
减压七处方
《 减压七处方 》

售價:NT$ 314.0
成为作家
《 成为作家 》

售價:NT$ 269.0
工作文化史 古代卷
《 工作文化史 古代卷 》

售價:NT$ 381.0
像亚马逊一样思考
《 像亚马逊一样思考 》

售價:NT$ 442.0
中国震撼
《 中国震撼 》

售價:NT$ 403.0
以讹传讹:错误信息如何传播
《 以讹传讹:错误信息如何传播 》

售價:NT$ 437.0
大学问·生活中的意义
《 大学问·生活中的意义 》

售價:NT$ 442.0
待客之道:7-Eleven如何把客户体验做到极致
《 待客之道:7-Eleven如何把客户体验做到极致 》

售價:NT$ 386.0

建議一齊購買:

+

NT$ 579
《 深入浅出Rust 》
+

NT$ 1256
《 Rust权威指南 》
+

NT$ 594
《 Spring实战 第5版 》
+

NT$ 672
《 动手学深度学习 》
+

NT$ 708
《 Boost程序库完全开发指南――深入C++”准”标准库(第5版) 》
編輯推薦:
Rust,集安全、高性能、高效率、高可读性于一身,是开发一款优秀产品不得不考虑的编程语言,学习Rust势在必行!
本书作者作为Rust语言的早期实践者,以及中国社区的管理运营者,对Rust的设计理念有深入理解,并有丰富的实践经验。
从设计哲学、源码分析、工程视角、底层原理多个维度,对Rust语言进行系统化梳理,帮助读者理清知识脉络,降低学习曲线。
本书附有随书源码,配套运行,方便读者在实践中巩固理论知识,熟悉Rust在生产环境中的应用,避免纸上谈兵的尴尬。
內容簡介:
Rust 是一门利用现代化的类型系统,有机地融合了内存管理、所有权语义和混合编程范式的编程语言。它不仅能科学地保证程序的正确性,还能保证内存安全和线程安全。同时,还有能与CC语言媲美的性能,以及能和动态语言媲美的开发效率。本书并非对语法内容进行简单罗列讲解,而是从四个维度深入全面且通透地介绍了Rust 语言。从设计哲学出发,探索Rust 语言的内在一致性;从源码分析入手,探索Rust 地道的编程风格;从工程角度着手,探索Rust 对健壮性的支持;从底层原理开始,探索Rust 内存安全的本质。本书涵盖了Rust 2018 的特性,适合有一定编程经验且想要学习Rust 的初学者,以及对Rust 有一定的了解,想要继续深入学习的进阶者。
關於作者:
张汉东,80后,资深软件工程师、企业独立咨询师、技术作者译者。爱好读书、写作,喜欢研究技术、学习之道,以及心智和认知开发模式。曾在互联网行业沉浮十余载,先后效力于电商、社交游戏、广告和众筹领域。作为企业独立咨询师,先后为思科、平安科技和闪迪等公司提供咨询服务。目前在心智教育及创客领域开疆拓土。是《Ruby原理剖析》一书的译者。喜欢Rust语言,为Rust语言提交了三次编译器Bug,并协助修复其中之一。为官方Rust 2018 Guide做过贡献,并数次提出改进意见。参与了国内Rust社区的管理和运营,在2018年打造了《Rust每日新闻》频道,深受Rustacean们的喜爱。为初学者精心打造了Rust必学第一课:知乎Live《如何系统地学习Rust语言》,获得五星好评。
目錄
第1 章 新时代的语言 .................................................................................................. 1
1.1 缘起 ........................................................................................................................... 1
1.2 设计哲学 ................................................................................................................... 3
1.2.1 内存安全....................................................................................................... 3
1.2.2 零成本抽象 ................................................................................................... 4
1.2.3 实用性 .......................................................................................................... 5
1.3 现状与未来 ............................................................................................................... 7
1.3.1 语言架构....................................................................................................... 8
1.3.2 开源社区....................................................................................................... 9
1.3.3 发展前景....................................................................................................... 9
1.4 Rust 代码如何执行 ................................................................................................ 10
1.5 小结 ......................................................................................................................... 10
第2 章 语言精要 ........................................................................................................ 11
2.1 Rust 语言的基本构成 ............................................................................................. 11
2.1.1 语言规范..................................................................................................... 11
2.1.2 编译器 ........................................................................................................ 12
2.1.3 核心库 ........................................................................................................ 12
2.1.4 标准库 ........................................................................................................ 12
2.1.5 包管理器..................................................................................................... 13
2.2 语句与表达式 ......................................................................................................... 13
2.3 变量与绑定 ............................................................................................................. 14
2.3.1 位置表达式和值表达式 ............................................................................. 15
2.3.2 不可变绑定与可变绑定 ............................................................................. 15
2.3.3 所有权与引用 ............................................................................................. 16
2.4 函数与闭包 ............................................................................................................. 17
2.4.1 函数定义..................................................................................................... 17
2.4.2 作用域与生命周期 ..................................................................................... 18
2.4.3 函数指针..................................................................................................... 19
2.4.5 CTFE 机制 .................................................................................................. 20
2.4.6 闭包 ............................................................................................................ 20
2.5 流程控制 ................................................................................................................. 22
2.5.1 条件表达式 ................................................................................................. 22
2.5.2 循环表达式 ................................................................................................. 23
2.5.3 match 表达式与模式匹配 .......................................................................... 24
2.5.4 if let 和while let 表达式 ............................................................................ 25
2.6 基本数据类型 ......................................................................................................... 26
2.6.1 布尔类型..................................................................................................... 26
2.6.2 基本数字类型 ............................................................................................. 26
2.6.3 字符类型..................................................................................................... 27
2.6.4 数组类型..................................................................................................... 28
2.6.5 范围类型..................................................................................................... 29
2.6.6 切片类型..................................................................................................... 29
2.6.7 str 字符串类型 ............................................................................................ 30
2.6.8 原生指针..................................................................................................... 31
2.6.9 never 类型 ................................................................................................... 31
2.7 复合数据类型 ......................................................................................................... 32
2.7.1 元组 ............................................................................................................ 32
2.7.2 结构体 ........................................................................................................ 33
2.7.3 枚举体 ........................................................................................................ 36
2.8 常用集合类型 ......................................................................................................... 38
2.8.1 线性序列:向量 ......................................................................................... 38
2.8.2 线性序列:双端队列 ................................................................................. 39
2.8.3 线性序列:链表 ......................................................................................... 40
2.8.4 Key-Value 映射表:HashMap 和BTreeMap ............................................ 40
2.8.5 集合:HashSet 和BTreeSet ...................................................................... 41
2.8.6 优先队列:BinaryHeap ............................................................................. 42
2.9 智能指针 ................................................................................................................. 42
2.10 泛型和trait ........................................................................................................... 43
2.10.1 泛型 .......................................................................................................... 43
2.10.2 trait ............................................................................................................ 44
2.11 错误处理 ............................................................................................................... 47
2.12 表达式优先级 ....................................................................................................... 48
2.13 注释与打印 ........................................................................................................... 48
2.14 小结 ....................................................................................................................... 50
第3 章 类型系统 ............................................................................................
內容試閱
在我刚开始学习Rust 的时候,在社区里听到最多的声音就是Rust 学习曲线陡。已经有一定编程经验的人在学习一门新语言时,都喜欢直接上手写代码,因为这样可以快速体验这门语言的特色。对于大多数语言来说,这样确实可以达到一定的学习目的。但是当他们在初次学习Rust 的时候,就很难通过直接上手来体验这种快感。
我第一次学习Rust 时就遇到了这样的情况。我按以往的编程经验直接写下了代码,但是编译无法通过;可是有时候简单调换两行代码的顺序,程序就能顺利编译成功了,这让我非常困惑。我想这也是大多数人感觉Rust 学习曲线陡的原因吧。经过和Rust 编译器的多次斗争之后,我不得不重新反思自己的学习方法。看样子,Rust 编译器暗含了某种规则,只要程序员违反了这些规则,它就会检查出来并阻止你。这就意味着,作为程序员,你必须主动理解并遵守这些规则,编译器才能和你化敌为友。
所以,我就开始了对Rust 的第二轮学习,忘掉自己以往的所学,抱着初学者的心态,从零开始系统地学习Rust。然而,事情并没有这么简单。
Rust 官方虽然提供了Rust Book,但是内容的组织非常不友好,基本就是对知识点的罗列,系统性比较差。后来官方也意识到了这个问题,推出了第2 版的Rust Book,内容组织方面改善了很多,对学习者也非常友好,但系统性还是差了点。后来又看了国内Rust 社区组织群友们合著的Rust Primer,以及国外的Programming Rust,我才对Rust 建立了基本的认知体系。
直到此时,我才意识到一个重要的问题:Rust 学习曲线陡的根本原因在于Rust 语言融合了多种语言特性和多种编程范式。这就意味着,Rust 涉及的知识范围非常广泛,涵盖了面向对象、函数式、泛型、底层内存管理、类型系统、设计模式等知识。从底层到上层抽象,从模式到工程化健壮性,无所不包。可以说,Rust 是编程语言发展至今的集大成者。对于大多数Rust 语言的初学者来说,他掌握的知识体系范围是小于Rust 所包含的知识量的,所以在学习Rust 的过程中会遇到无法理解的内容。
我在学习Rust 之前,所掌握的编程语言知识体系大多是和拥有GC 的动态语言相关的,对于底层内存管理知之甚少。所以在我学习Rust 所有权的时候,就很难理解这种机制对于内存安全的意义所在;而我所认识的一些拥有C 语言编程经验的朋友,在学习Rust 时面临的问题是,难以理解Rust 支持的上层抽象,对他们来说,Rust 中融合的类型系统和编程范式就是他们学习道路上的拦路虎;对于拥有Haskell 等函数式编程经验的朋友,会感觉Rust的类型系统很容易理解,但是底层的内存管理和所有权机制又成了需要克服的学习障碍;来自C编程圈的朋友,尤其是懂现代C的朋友,对Rust 所有权机制理解起来几乎没有困难,但是类型系统和函数式编程范式可能会阻碍他们的学习。当然,如果正好你没有上述情况,那说明你的相关知识体系已经很全面了,你在Rust 的学习之路上将会非常顺利。
这是不是意味着,在学习Rust 之前需要把其他语言都学一遍呢?答案是否定的。
Rust 编程语言虽然融合了很多其他语言的特性和范式,但它不是进行简单的内容堆叠,而是有机地融合了它们。也就是说,Rust 遵循着高度的一致性内核来融合这些特性。我们只需要从Rust 的设计哲学出发,牢牢地把握它的设计一致性,就可以把它的所有特性都串起来,从而达到掌握它的目的。这正是本书遵循的写作逻辑。
本书特点
从设计哲学出发,探索Rust 语言的内在一致性。设计哲学是一门优秀编程语言保持语言一致性的关键所在。设计哲学是语言特性和语法要素设计的诱因和准则。理解Rust 语言的设计哲学,有助于把握Rust 语言的内核与一致性,把Rust 看似纷繁复杂的特性都系统地串起来。
从源码分析入手,探索Rust 地道的编程风格。Rust 是一门自举的语言,也就是说,Rust语言由Rust 自身实现。通过阅读Rust 标准库和一些第三方库的源码,不仅可以深入理解Rust提供的数据类型和数据结构,更能体验和学习地道的Rust 编程风格。
从工程角度着手,探索Rust 对健壮性的支持。Rust 通过类型系统、断言、错误处理等机制保证内存安全的同时,还保证了系统的健壮性。从工程角度去看 Rust,才能看到 Rust对系统健壮性的支持是多么优雅。
从底层原理开始,探索Rust 内存安全的本质。只有深入底层,才能理解Rust 所有权机制对于内存安全的意义。而且可以进一步理解Rust 的类型系统,以及Unsafe Rust 存在的必要性。
读者群体
适合本书的读者群体包括:
? 有一定编程经验,想要学习Rust 的初学者。
? 对Rust 有一定了解,还想对Rust 深入学习的进阶者。
本书不适合完全没有编程基础的人学习。
如何阅读本书
对于Rust 初学者,建议按照章节顺序去阅读。因为本书每一章内容基本都依赖于前一章内容的前置知识。
对于Rust 有一定了解的朋友,可以选择你感兴趣的章节去阅读。因为本书的每一章也是对一个垂直主题的深入探讨。
一些章节的开头罗列出了通用概念,这是为了更通透地讲解相关知识的来龙去脉。如果你对这部分内容不了解,那么建议你把这部分内容(属于前置知识)认真看完再去看后面的内容。如果你对这部分内容已经有了充分的了解,那么完全可以跳过,直接选择你最关心的内容去阅读。
章节概述
第1 章 新时代的语言。这一章将从Rust 语言的发展历史概述开始,引出Rust 的设计哲学,通过设计哲学进一步阐述Rust 的语言架构。该语言架构也是本书组织内容时遵循的准则之一。这一章还将介绍Rust 语言社区的现状和未来展望。最重要的是,这一章将介绍Rust代码的执行流程,这对于理解本书后面的章节会有所帮助。
第2 章 语言精要。学习任何一门语言时,首先要做的就是了解其语法。这一章将罗列Rust 语言中的常用语法,但不是简单罗列,而是遵循一定的逻辑进行罗列。在介绍语法之前,这一章会先对Rust 语言的基本构成做整体概述。然后将介绍一个非常重要的概念:表达式。它是Rust 语法遵循的最简单的准则之一。接下来才会依次介绍Rust 中最常用的语法,让读者对Rust 语言有一个初步的了解。
第3 章 类型系统。类型系统是现代编程语言的重要支柱。这一章首先将以通用概念的形式介绍类型系统相关的概念,目的是帮助不了解类型系统的读者建立初步认知。接下来将从三方面阐述Rust 的类型系统。为了理解Rust 基于栈来管理资源的思想,有必要先了解Rust中对类型的分类,比如可确定大小类型、动态大小类型和零大小类型等。这一章还将介绍Rust类型推导功能及其不足。接下来将介绍Rust 中的泛型编程。泛型是Rust 类型系统中最重要的一个概念。最后会介绍Rust 的灵魂,trait 系统。对类型系统建立一定的认知,有利于学习后面的内容。
第4 章 内存管理。这一章首先将介绍底层内存管理的通用概念。在此基础上,围绕内存安全这个核心,从变量定义到智能指针,逐渐阐述Rust 中资源管理的哲学。这部分内容是真正理解Rust 所有权机制的基础。
第5 章 所有权系统。这一章首先会介绍关于值和引用语义的通用概念,然后在此基础上探讨Rust 的所有权机制。读者将看到,Rust 如何结合类型系统和底层内存管理机制,以及上层值和引用的语义形成现在的Rust 所有权系统。然后,进一步围绕内存安全的核心,阐述借用检查和生命周期参数的意义。通过这一章的学习,读者将会对Rust 的所有权系统有全面深入的了解。
第6 章 函数、闭包和迭代器。在对Rust 的类型系统和内存安全机制有了一定了解之后,我们将开始深入学习Rust 编程最常用的语法结构。函数是Rust 中最常用的语法单元。Rust的函数承载了诸多函数式编程范式的特性,比如高阶函数、参数模式匹配等,同时也承载了面向对象范式的特性,比如为结构体及其实例实现方法,实际上就是一个函数调用的语法糖。然后将介绍闭包的用法和特性,帮助读者对闭包建立全面深入的认知,更重要的是,通过学习闭包的实现原理,进一步了解Rust 中零成本抽象的哲学思想。最后介绍迭代器模式,以及Rust 中的迭代器实现机制。迭代器也是Rust 最常用的特性,通过这一章的学习,你将彻底了解迭代器。
第7 章 结构化编程。这一章将对Rust 混合范式编程进行探讨,会重点介绍Rust 中的结构体和枚举体,以及它们如何在日常编程中以面向对象风格编程。同时,还将介绍三种设计模式,前两种是Rust 标准库以及第三方库常用的设计模式,最后是一种合理利用Rust 资源管理哲学的设计模式。通过学习这一章的内容,有利于掌握地道的Rust 编程风格。
第8 章 字符串与集合类型。字符串是每门编程语言最基本的数据类型,Rust 自然也不例外。出于内存安全的考虑,Rust 中的字符串被分为了多种,并且语言自身没有自带正则表达式引擎。这一章将从字符编码开始,围绕内存安全,对Rust 中的字符和字符串做彻底梳理,并且阐述如何在没有正则表达式引擎的情况下,满足字符串进行匹配搜索等的需求。集合类型也是编程中必不可少的数据结构。这一章将着重介绍动态数组Vector 和Key-Value 映射集HashMap 的使用,而且还会深入挖掘HashMap 底层的实现原理,介绍Rust 标准库提供的HashMap 安全性,进一步探讨如何用Rust 实现一个生产级的数据结构。最后将通过探讨一个Rust 安全漏洞的成因,来帮助读者正确理解容量的概念,从而写出更安全的代码。
第9 章 构建健壮的程序。对于如何构建健壮的系统,Rust 给出了非常工程化的解决方案。Rust 将系统中的异常分为了多个层次,分别给出了对应的处理手段。在这一章,读者将学习Rust 是如何以分层的错误处理解决方案来帮助开发者构建健壮系统的。
第10 章 模块化编程。现代编程语言的一大特色就是可以方便地进行模块化,这样有利于系统的设计、维护和协作。Rust 在模块化编程方面做得很好。这一章首先将介绍Rust 强大的包管理系统Cargo。然后会以真实的代码实例阐述Rust 的模块系统,并且将包含Rust 2018版本中模块系统的重大改进。最后将以一个完整的项目为例阐述如何使用Rust 开发自己的crate。
第11 章 安全并发。Rust 从两方面支持并发编程。首先,利用类型安全和内存安全的基础,解决了多线程并发安全中的痛点:数据竞争。Rust 可以在编译时发现多线程并发代码中的安全问题。其次,Rust 为了达成高性能服务器开发的目标,开始全面拥抱异步开发。这一章将从线程安全的通用概念开始,从Rust 多线程并发讲到异步并发支持,带领读者逐步形成全面、深入、通透的理解。
第12 章 元编程。元编程即程序生成程序的能力。Rust 为开发者提供了多种元编程能力。这一章将从反射开始介绍Rust 中的元编程。虽然Rust 的反射功能没有动态语言的那么强大,但是Rust 提供了强大的宏系统。这一章将从Rust 的编译过程出发,带领读者深入理解Rust的宏系统的工作机制,并且以具体的实例帮助读者理解编写宏的技巧。从声明宏到过程宏,再到编译器插件,以及第三方库syn 和quote 最新版的配合使用,都将在本章进行阐述。
第13 章 超越安全的边界。前面的章节内容基本都是建立在Safe Rust 的基础上的。而这一章将主要围绕Unsafe Rust 的内容来构建,主要分为4 大部分。首先将介绍Unsafe Rust 的基本语法和特性。然后,围绕基于Unsafe 进行安全抽象的核心,阐述Unsafe Rust 开发过程中可能引起未定义行为的地方,以及相应的解决方案。然后介绍FFI,通过具体的实例来阐述Rust 如何和其他语言交互,涉及C、C、Ruby、Python、Node.js 等语言,还将介绍相关的第三方库。最后,将介绍未来互联网的核心技术WebAssembly,以及Rust 如何开发WebAssembly 和相关的工具链。
相信通过这13 章的内容,读者将会对Rust 有全面、深入和系统的认识。
勘误及更多资源
有人的地方就有Bug,此书当然也不例外。写书不仅是正确地传播知识和思想的途径,更是一种交流和沟通的方式。如果你发现本书中的任何错误、遗漏和解释不清楚的地方,欢迎提出反馈。
随书源码地址:https:github.comZhangHanDongtao-of-rust-codes
勘误说明:
? 直接提交issues。
? 标明具体的页码、行数和错误信息。
? 积极提出勘误者将获得合金Rust 勋章一枚。
更多的学习资源:
? 官方doc.rust-lang.org 列出了很多学习文档和资源。
? 订阅Rust 每日新闻1,了解Rust 社区生态发展,学习Rust。
致谢
首先,我要感谢Rust 社区中每一位帮助过我的朋友,没有你们的奉献,就没有这本书。感谢Mike 组织社区编写的免费书籍Rust Primer。感谢Rust 社区中不知名的翻译者翻译官方的Rust Book。感谢知乎《Rust 编程》专栏作者辛苦的写作。感谢KiChjang、ELTON、CrLF0710、F001、Lingo、tennix、iovxw、wayslog、Xidorn、42、黑腹喵等其他社区里的朋友们,你们在我学习的过程中给予了我无私的帮助和解答,Rust 社区有你们真好。感谢知道我写作并一直鼓励和支持我的朋友们。衷心希望Rust 社区可以一直这么强大、温柔和友好。然后,我要感谢电子工业出版社的刘恩惠编辑。感谢你给了我这个机会,让这本书从想法成为了现实。
最后,感谢我的妻子宋欣欣,因为她的温柔、大度、包容、信任和支持,才让我能够踏实且满含信心地做我自己想做的事。感谢我的父母,正是他们的培养,才使我具有积极、坚持不懈做事情的品格。
读者服务
轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。
? 下载资源:本书如提供示例代码及资源文件,均可在 下载资源 处下载。
? 提交勘误:您对书中内容的修改意见可在 提交勘误 处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。
? 交流互动:在页面下方 读者评论 处留下您的疑问或观点,与我们和其他读者一同学习交流。
页面入口:http:www.broadview.com.cn35485

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.