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

2024年04月出版新書

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月出版新書

『簡體書』深入浅出Rust

書城自編碼: 3246583
分類: 簡體書→大陸圖書→計算機/網絡程序設計
作者: 范长春
國際書號(ISBN): 9787111606420
出版社: 机械工业出版社
出版日期: 2018-08-01


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

售價:NT$ 579

我要買

share:

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



新書推薦:
孙中山与海南(1905—1913)
《 孙中山与海南(1905—1913) 》

售價:NT$ 429.0
故宫雅趣:紫禁城皇室生活与君臣轶事
《 故宫雅趣:紫禁城皇室生活与君臣轶事 》

售價:NT$ 484.0
金钱、奇珍异品与造物术:荷兰黄金时代的科学与贸易
《 金钱、奇珍异品与造物术:荷兰黄金时代的科学与贸易 》

售價:NT$ 539.0
本该成为女王的姐妹:都铎王朝的一段悲剧
《 本该成为女王的姐妹:都铎王朝的一段悲剧 》

售價:NT$ 539.0
棺材船:爱尔兰大饥荒时期海上的生与死
《 棺材船:爱尔兰大饥荒时期海上的生与死 》

售價:NT$ 484.0
新左派政治经济学:一个局外人的看法(汉译名著本14)
《 新左派政治经济学:一个局外人的看法(汉译名著本14) 》

售價:NT$ 157.0
汗青堂丛书006·十二幅地图中的世界史(2024版)
《 汗青堂丛书006·十二幅地图中的世界史(2024版) 》

售價:NT$ 661.0
英国人:国家的形成,1707-1837年(英国史前沿译丛)
《 英国人:国家的形成,1707-1837年(英国史前沿译丛) 》

售價:NT$ 829.0

建議一齊購買:

+

NT$ 514
《 Clojure编程实战(原书第2版) 》
+

NT$ 514
《 机器学习导论(原书第2版) 》
+

NT$ 644
《 架构整洁之道 》
+

NT$ 569
《 数学与泛型编程:高效编程的奥秘 》
+

NT$ 778
《 现代C++探秘:编码、工程与科研必修(基于C++ 14)(英文版) 》
+

NT$ 593
《 Go程序设计语言(英文版) 》
內容簡介:
本书将详细描述Rust语言的基本语法,穿插讲解一部分高级使用技巧。*部分介绍Rust基本语法。第二部分介绍属于Rust独一无二的内存管理方式。第三部分介绍Rust的抽象表达能力。第四部分介绍并发模型。第五部分介绍一些实用设施。
關於作者:
范长春F001,中国科学院自动化研究所博士,Rust开源项目贡献者,前微软员工。目前就职于synopsys公司参与源代码静态检查工具coverity软件的开发工作。喜欢研究编译器以及源代码静态检查。在网上撰写了大量关于Rust语言的技术文章,得到了不错的反响。
目錄
Contents?目录
前言
第一部分 基础知识
第1章 与君初相见2
1.1 版本和发布策略2
1.2 安装开发环境4
1.3 Hello World7
1.4 Prelude8
1.5 Format格式详细说明8
第2章 变量和类型10
2.1 变量声明10
2.1.1 变量遮蔽12
2.1.2 类型推导13
2.1.3 类型别名14
2.1.4 静态变量15
2.1.5 常量16
2.2 基本数据类型16
2.2.1 bool16
2.2.2 char17
2.2.3 整数类型17
2.2.4 整数溢出19
2.2.5 浮点类型21
2.2.6 指针类型23
2.2.7 类型转换23
2.3 复合数据类型24
2.3.1 tuple25
2.3.2 struct25
2.3.3 tuple struct27
2.3.4 enum29
2.3.5 类型递归定义32
第3章 语句和表达式34
3.1 语句34
3.2 表达式34
3.2.1 运算表达式35
3.2.2 赋值表达式37
3.2.3 语句块表达式38
3.3 if-else39
3.3.1 loop40
3.3.2 while41
3.3.3 for循环42
第4章 函数44
4.1 简介44
4.2 发散函数46
4.3 main函数47
4.4 const fn48
4.5 函数递归调用49
第5章 trait50
5.1 成员方法50
5.2 静态方法53
5.3 扩展方法55
5.4 完整函数调用语法56
5.5 trait约束和继承58
5.6 Derive59
5.7 trait别名60
5.8 标准库中常见的trait简介61
5.8.1 Display和Debug61
5.8.2 PartialOrd Ord
PartialEq Eq62
5.8.3 Sized63
5.8.4 Default64
5.9 总结65
第6章 数组和字符串66
6.1 数组66
6.1.1 内置方法67
6.1.2 多维数组67
6.1.3 数组切片67
6.1.4 DST和胖指针68
6.1.5 Range70
6.1.6 边界检查72
6.2 字符串74
6.2.1 &str74
6.2.2 String75
第7章 模式解构77
7.1 简介77
7.2 match78
7.2.1 exhaustive79
7.2.2 下划线80
7.2.3 match也是表达式82
7.2.4 Guards83
7.2.5 变量绑定84
7.2.6 ref和mut85
7.3 if-let和while-let88
7.4 函数和闭包参数做模式解构89
7.5 总结90
第8章 深入类型系统91
8.1 代数类型系统91
8.2 Never Type94
8.3 再谈Option类型97
第9章 宏102
9.1 简介macro102
9.1.1 实现编译阶段检查102
9.1.2 实现编译期计算103
9.1.3 实现自动代码生成103
9.1.4 实现语法扩展103
9.2 示范型宏103
9.3 宏1.1105
第二部分 内存安全
第10章 内存管理基础110
10.1 堆和栈110
10.2 段错误111
10.3 内存安全112
第11章 所有权和移动语义114
11.1 什么是所有权114
11.2 移动语义116
11.3 复制语义118
11.4 Box类型120
11.5 Clone VS. Copy121
11.5.1 Copy的含义121
11.5.2 Copy 的实现条件121
11.5.3 Clone的含义122
11.5.4 自动derive123
11.5.5 总结123
11.6 析构函数124
11.6.1 资源管理125
11.6.2 主动析构126
11.6.3 Drop VS. Copy129
11.6.4 析构标记129
第12章 借用和生命周期132
12.1 生命周期132
12.2 借用132
12.3 借用规则134
12.4 生命周期标记136
12.4.1 函数的生命周期标记136
12.4.2 类型的生命周期标记138
12.5 省略生命周期标记139
第13章 借用检查141
13.1 编译错误示例142
13.2 内存不安全示例:修改枚举143
13.3 内存不安全示例:迭代器
失效144
13.4 内存不安全示例:悬空指针146
13.5 小结148
第14章 NLL(Non-Lexical-
Lifetime)150
14.1 NLL希望解决的问题150
14.2 NLL的原理154
14.3 小结157
第15章 内部可变性158
15.1 Cell158
15.2 RefCell161
15.3 UnsafeCell164
第16章 解引用169
16.1 自定义解引用169
16.2 自动解引用171
16.3 自动解引用的用处171
16.4 有时候需要手动处理173
16.5 智能指针175
16.5.1 引用计数175
16.5.2 Cow178
16.6 小结180
第17章 泄漏181
17.1 内存泄漏181
17.2 内存泄漏属于内存安全184
17.3 析构函数泄漏185
第18章 Panic190
18.1 什么是panic190
18.2 Panic实现机制191
18.3 Panic Safety192
18.4 小结197
第19章 Unsafe198
19.1 unsafe关键字198
19.2 裸指针199
19.3 内置函数201
19.3.1 transmute201
19.3.2 内存读写202
19.3.3 综合示例204
19.4 分割借用206
19.5 协变209
19.5.1 什么是协变209
19.5.2 PhantomData211
19.6 未定义行为214
19.7 小结215
第20章 Vec源码分析216
20.1 内存申请217
20.2 内存扩容220
20.3 内存释放222
20.3.1 Vec的析构函数222
20.3.2 Drop Check223
20.4 不安全的边界226
20.5 自定义解引用227
20.6 迭代器228
20.7 panic safety231
第三部分 高级抽象
第21章 泛型234
21.1 数据结构中的泛型
內容試閱
Preface?前言A language that doesn’t affect the way you think about programming is not worth knowing.——Alan PerlisRust简介Rust是一门新的编程语言。
我想,大部分读者看到本书,估计都会不约而同地想到同样的问题:现存的编程语言已经多得数不清了,再发明一种新的编程语言有何意义?难道现存的那么多编程语言还不够用吗,发明一种新的编程语言能解决什么新问题?俗话说,工欲善其事,必先利其器。在程序员平时最常用的工具排行榜中,编程语言当仁不让的是最重要的“器”。编程语言不仅是给程序设计者使用的工具,反过来,它也深刻地影响了设计者本身的思维方式和开发习惯。
卓越的编程语言,可以将优秀的设计、先进的思想、成功的经验,自然而然地融入其中,使更多的使用者开阔眼界、拓展思路,受益无穷。
A programming language is a tool that has profound influence on our thinking habits.——Edsger Dijkstra所以说关于这个问题,我认为,如果与现有的各种语言相比,新设计的语言有所进步、有所发展、有所创新,那么它的出现就很有意义。
最近这些年,的确涌现出了一大批编程语言,可以说是百花争艳、繁华似锦。但是在表面的繁荣之下,我们是否可以自满地说,编程语言的设计和发展已经基本成熟、趋于完美了呢?恐怕不尽然吧!
那些优秀的编程语言中,不少都有自己的“绝活”。有的性能非常高,有的表达力非常强,有的擅长组织大型程序,有的适合小巧的脚本,有的专注于并发,有的偏重于科学计算,等等,不一而足。即便如此,新兴的Rust语言面市后依旧展现出了它的独特魅力,矫矫不群,非常值得大家关注。
作为多年来鲜有的新一代系统编程语言,它的设计准则是“安全,并发,实用”。Rust的设计者是这样定位这门语言的:
Rust is a system’s programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety.安全是的,安全性很重要。Rust最重要的特点就是可以提供内存安全保证,而且没有额外的性能损失。
在传统的系统级编程语言(CC++)的开发过程中,经常出现因各种内存错误引起的崩溃或bug。比如空指针、野指针、内存泄漏、内存越界、段错误、数据竞争、迭代器失效等,血泪斑斑,数不胜数。这些问题不仅在教科书中被无数次提起,而且在实践中也极其常见。因此,各种高手辛苦地总结了大量的编程经验,许多代码检查和调试工具被开发出来,各种代码开发流程和规范被制定出来,无数人呕心沥血就是为了系统性地防止各类bug的出现。尽管如此,我们依然无法彻底解决这些问题。
教科书解决不了问题,因为教育不是强制性的;静态代码检查工具解决不了问题,因为传统的CC++对静态代码检查不友好,永远只能查出一部分问题;软件工程解决不了问题,因为规范依赖于执行者的素质,任何人都会犯错误。事后debug也不是办法,解决bug的代价更高。
鉴于手动内存管理非常容易出问题,因此先辈们发明了一种自动垃圾回收的机制(Garbage Collection),故而程序员在绝大多数情况下不用再操心内存释放的问题。新发明的绝大多数编程语言都使用了基于各种高级算法的自动垃圾回收机制,因为它确实方便,解放了程序员的大脑,使大家能更专注于业务逻辑的部分。但是到目前为止,不管使用哪种算法的GC系统,在性能上都要付出比较大的代价。要么需要较大的运行时占用较大内存,要么需要暂停整个程序,要么具备不确定性的时延。当然,在现实的许多业务场景中,这点开销是微不足道的,因此问题不大。可是如果在性能敏感的领域,这是完全不可接受的。
很遗憾,到目前为止,在系统级编程语言中,我们依然被各种内存安全问题所困扰。这些年来,许多新的语言特性被发明出来,许多优秀的编程范式被总结出来,许多高质量的代码库被开发出来。但是内存安全问题依然像一个幽灵一样,一直徘徊在众多程序员的头顶,无法摆脱。再多的努力,也只能减少它出现的机会,很难保证完整地解决掉这一类错误。
Rust对自己的定位是接近芯片硬件的系统级编程语言,因此,它不可能选择使用自动垃圾回收的机制来解决问题。事实证明,要想解决内存安全问题,小修小补是不够的,必须搞清楚导致内存错误的根本原因,从源头上解决。Rust就是为此而生的。Rust语言是可以保证内存安全的系统级编程语言。这是它的独特的优势。本书将用大量的篇幅详细介绍“内存安全”。
并发在计算机单核性能越来越接近瓶颈的今天,多核并行成了提高软件执行效率的发展趋势。一些编程语言已经开始从语言层面支持并发编程,把“并发”的概念植入到了编程语言的血液中。然而,在传统的系统级编程语言中,并行代码很容易出错,而且有些问题很难复现,难以发现和解决问题,debug的成本非常高。线程安全问题一直以来都是非常令人头痛的问题。
Rust当然也不会在这一重要领域落伍,它也非常好地支持了并发编程。更重要的是,在强大的内存安全特性的支持下,Rust一举解决了并发条件下的数据竞争(Data Race)问题。它从编译阶段就将数据竞争解决在了萌芽

 

 

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