重磅推荐
【编辑推荐】
1.经典的Erlang轻松入门指南。 2.原著被广泛认为是学习Erlang的好方法。 3.作者是Erlang专家,有丰富的开发经验。 Erlang是编写健壮的并发应用的优质语言, 但是Erlang语言奇怪的语法和函数式设计让很多初学者望而却步。幸运的是,现在有了一件对抗Erlang恐惧症的新武器——《Erlang趣学指南》! Erlang专家Fred Hébert从简单概念入手,让你轻松掌握Erlang的基础知识:你会学习Erlang的非传统语法、类型系统以及基本的函数式编程技术。一旦你理解了这些简单的概念,就可以学习Erlang语言中核心的内容——并发、分布式计算、代码热加载以及那些能够让Erlang成为当今有见识的开发者之间热门话题的黑魔法了。 随着深入到Erlang语言解决实际问题的奇妙世界,你将学到: ● 使用EUnit和Common Test对应用进行测试; ● 使用OTP框架构建和发布应用; ● 传递消息、抛出错误异常以及在多节点上启动/终止进程; ● 使用Mnesia和ETS存储和读取数据; ● 使用TCP、UDP和inet模块进行网络编程; ● 编写分布式并发应用带来的简单快乐和其中的潜在陷阱。 本书行文轻松、幽默,示例新颖、实用,是你进入偶尔令人抓狂,但一直令人兴奋的Erlang世界的指引!
【内容简介】
这是一本讲解Erlang编程语言的入门指南,内容通俗易懂,插图生动幽默,示例短小清晰,结构安排合理。书中从Erlang的基础知识讲起,融汇所有的基本概念和语法。内容涉及模块、函数、类型、递归、错误和异常、常用数据结构、并行编程、多处理、OTP、事件处理,以及所有Erlang的重要特性和强大功能。
【作者简介】
作者介绍 Fred Hébert是一位自学成才的程序员,具有Web前端、Web 服务开发经验以及全面的后端多语言编程经验。他撰写的Erlang在线教程Learn You Some Erlang for Great Good! 被公认为好的Erlang学习教程。在Erlang Solutions工作期间,他撰写过Erlang培训资料,并在西方国家到处教授Erlang编程。目前,他在用Erlang开发一款实时竞价平台(AdGear),他被提名为2012年度Erlang User。 译者介绍 邓辉 独立咨询顾问,捷中科技首席架构师,有10年Erlang编程经验。《敏捷软件开发:原则、模式与实践》一书的译者,Erlang领域两本重要著作《面对软件错误构建可靠的分布式系统》《硝烟中的Erlang》中文译本的审校者和译者。对指示语义、类型理论、程序语言理论和分布式系统设计有浓厚的兴趣。目前在研究学习TLA 。 孙鸣 中兴通讯杰出架构师,具有丰富的电信软件架构设计经验。《敏捷软件开发:原则、模式与实践》(C#版)、《硝烟中的Erlang》等书的译者。对函数式编程有浓厚的兴趣,平时喜欢设计各种各样的小语言。喜欢的编程语言是Scheme和Erlang,并用Erlang语言重写了Structure and Interpretation of Computer Programs一书中的全部代码。
【媒体评论】
作者Fred Hébert作为活跃在一线的有丰富实战经验的工程师,不仅把入门教程写得清晰易懂、深入浅出,更难能可贵的是从Erlang应用程序的完整生命周期角度把涉及设计、开发、测试、部署、调优的关键特性表现得淋漓尽致。跟着他的节奏,读者会很容易登堂入室,此外,书中配的插图幽默、诙谐、有爱,也为本书增色不少! ——余锋,阿里云研究员负责阿里云数据库
【目录】
目录



第1章 启程 1

1.1 使用Erlang shell 1

1.1.1 输入shell命令 1

1.1.2 退出shell 2

1.2 Erlang基础知识 3

1.2.1 数值类型 3

1.2.2 不变的变量 4

1.2.3 原子 5

1.2.4 布尔代数和比较操作符 6

1.2.5 元组 8

1.2.6 列表 10

1.2.7 列表推导式 13

1.3 处理二进制数据 14

1.3.1 位语法 15

1.3.2 二进制数的按位操作 17

1.3.3 二进制字符串 18

1.3.4 二进制推导式 19

第2章 模块 20

2.1 什么是模块 20

2.2 创建模块 21

2.3 编译代码 23

2.4 定义宏 26

2.5 模块的其他内容 27

2.5.1 元数据 27

2.5.2 环形依赖 28

第3章 函数 29

3.1 模式匹配 29

3.1.1 模式进阶 31

3.1.2 绑定中的变量 31

3.2 卫语句 33

3.3 if表达式 34

3.4 case ... of表达式 37

3.5 如何选择 38

第4章 类型 39

4.1 动态强类型 39

4.2 类型转换 40

4.3 数据类型检测函数 41

4.4 致静态类型爱好者 43

第5章 递归 44

5.1 递归的工作原理 44

5.1.1 列表的长度 45

5.1.2 列表长度的尾递归实现 46

5.2 更多递归函数 47

5.2.1 duplicate函数 47

5.2.2 reverse函数 48

5.2.3 sublist函数 49

5.2.4 zip函数 50

5.2.5 快速排序 51

5.3 不仅仅是列表 53

5.4 递归思维 55

第6章 高阶函数 58

6.1 一切都是函数 58

6.2 匿名函数 60

6.2.1 匿名函数的其他用途 60

6.2.2 函数的作用域和闭包 61

6.3 映射、过滤器、折叠以及其他 63

6.3.1 过滤器 63

6.3.2 折叠一切 64

6.3.3 其他抽象 66

第7章 错误和异常 67

7.1 错误编译 67

7.1.1 编译期错误 67

7.1.2 逻辑错误 69

7.1.3 运行时错误 69

7.2 引发异常 71

7.2.1 出错异常 71

7.2.2 退出异常 72

7.2.3 抛出异常 73

7.3 处理异常 74

7.3.1 处理不同类型的异常 74

7.3.2 catch后的after语句 76

7.3.3 尝试多个表达式 76

7.3.4 更多选择 78

7.4 在树中使用try语句 80

第8章 用函数式思维解决问题 82

8.1 逆波兰式计算器 82

8.1.1 RPN计算器的工作原理 82

8.1.2 实现RPN计算器 84

8.1.3 代码测试 85

8.2 从希思罗到伦敦 87

8.2.1 递归地解决问题 87

8.2.2 编写代码 89

8.2.3 不使用Erlang shell运行程序 93

第9章 常用数据结构简介 95

9.1 记录 95

9.1.1 定义记录 95

9.1.2 读取记录字段值 97

9.1.3 更新记录 99

9.1.4 共享记录定义 99

9.2 键/值存储 100

9.2.1 小数据量存储 100

9.2.2 大数据量存储:字典和通用平衡树 101

9.3 集合 102

9.4 有向图 104

9.5 队列 104

9.6 小结 105

第10章 并发编程漫游指南 106

10.1 不必惊慌 106

10.2 并发概念 107

10.2.1 伸缩性 108

10.2.2 容错 108

10.2.3 并发实现 109

10.3 并非完全不能线性伸缩 110

10.4 再见,谢谢你的鱼 111

10.4.1 创建进程 112

10.4.2 发送消息 113

10.4.3 接收消息 114

第11章 深入多重处理 118

11.1 定义进程状态 118

11.2 隐藏消息实现 120

11.3 超时 121

11.4 选择性接收 123

11.4.1 选择性接收的风险 124

11.4.2 邮箱使用的其他风险 126

第12章 错误与进程 127

12.1 链接 127

12.1.1 捕获退出信号 129

12.1.2 老异常,新概念 130

12.2 监控器 133

12.3 命名进程 134

第13章 并发应用设计 139

13.1 理解问题 139

13.2 设计协议 141

13.3 目录
返回顶部