Erlang/OTP并发编程实战

当前位置:首页 > 计算机网络 > 程序设计 > Erlang/OTP并发编程实战

出版社:人民邮电出版社
出版日期:2012-7-12
ISBN:9787115285591
作者:[美] Martin Logan,[美] Eric Merritt,[瑞典] Richard Carlsson
页数:356页

作者简介

内容简介:
通过提高CPU时钟频率来制造更快的单核芯片的技术已经到达了极限。多核、并发、分布式等概念和技术也随之走出象牙塔,成为每个一线开发者的必备技能。由通信巨头爱立信研发的Erlang/OTP大放异彩,二十多年来,在传统电信领域高并发、高可靠、高容错的严酷环境下,Erlang语言和OTP平台被锻炼得坚如磐石,浓郁的函数式特质更是恰到好处地弥补了传统命令式语言在并发编程上的固有缺陷,大大降低了构筑并发、容错、分布式应用的门槛。
如果将Erlang语言看成才华横溢的钢琴家,那么OTP平台就是一架能让钢琴家把才能发挥得淋漓尽致的钢琴。本书除了全面介绍Erlang语言和OTP平台的基础知识外,还通过一系列实用案例引领你深入了解OTP的高级特性,一步步构建一个大型生产系统,并加以优化和完善。三位作者在Erlang领域拥有极其丰富的实战经验,细致入微地剖析了OTP开发与部署的全过程。要想真刀真枪地上战场,本书才是你明智的选择!

书籍目录

目  录

第一部分 Erlang起步:OTP基础
第1章 Erlang/OTP平台
2
1.1 基于进程的并发编程
3
1.1.1 理解并发
3
1.1.2 Erlang的进程模型
4
1.1.3 4种进程通信范式
5
1.1.4 用Erlang进程编程
8
1.2 Erlang的容错架构
10
1.2.1 进程链接如何工作
10
1.2.2 监督与退出信号捕捉
10
1.2.3 进程的分层容错
12
1.3 分布式Erlang
13
1.4 Erlang运行时系统和虚拟机
13
1.4.1 调度器
14
1.4.2 I/O与调度
15
1.4.3 进程隔离与垃圾回收器
15
1.5 函数式编程:Erlang的处世之道
16
1.6 小结
16
第2章 Erlang语言精要
18
2.1 Erlang shell
19
2.1.1 启动shell
19
2.1.2 输入表达式
20
2.1.3 shell函数
21
2.1.4 退出shell
21
2.1.5 任务控制基础
22
2.2 Erlang的数据类型
23
2.2.1 数值与算术运算
24
2.2.2 二进制串与位串
25
2.2.3 原子
26
2.2.4 元组
27
2.2.5 列表
27
2.2.6 字符串
28
2.2.7 pid、端口和引用
29
2.2.8 将函数视作数据:fun函数
30
2.2.9 项式的比较
30
2.2.10 解读列表
31
2.3 模块和函数
33
2.3.1 调用其他模块中的函数(远程调用)
33
2.3.2 不同元数的函数
34
2.3.3 内置函数和标准库模块
34
2.3.4 创建模块
35
2.3.5 模块的编译和加载
36
2.3.6 独立编译器erlc
37
2.3.7 已编译模块与在shell中求值
37
2.4 变量与模式匹配
38
2.4.1 变量的语法
39
2.4.2 单次赋值
39
2.4.3 模式匹配:加强版的赋值
41
2.4.4 解读模式
42
2.5 函数与子句
44
2.5.1 带副作用的函数:文本打印
44
2.5.2 用模式匹配在多个子句中进行选择
45
2.5.3 保护式
46
2.5.4 模式、子句和变量作用域
47
2.6 Case和if表达式
48
2.6.1 Erlang的布尔型if-then-else
分支选择
48
2.6.2 If表达式
49
2.7 fun函数
49
2.7.1 作为现有函数别名的fun函数
49
2.7.2 匿名fun函数
50
2.8 异常与try/catch
52
2.8.1 抛出(触发)异常
52
2.8.2 运用try...catch
53
2.8.3 try...of...catch
53
2.8.4 after
54
2.8.5 获取栈轨迹
54
2.8.6 重抛异常
55
2.8.7 传统的catch
55
2.9 列表速构
56
2.9.1 列表速构记法
56
2.9.2 映射、过滤和模式匹配
56
2.10 比特位语法与位串速构
57
2.10.1 构造位串
57
2.10.2 比特位语法中的模式匹配
58
2.10.3 位串速构
59
2.11 记录语法
59
2.11.1 记录声明
60
2.11.2 创建记录
60
2.11.3 记录的字段以及模式匹配
60
2.11.4 更新记录字段
60
2.11.5 记录声明应该放在哪儿
61
2.12 预处理与文件包含
61
2.12.1 宏的定义和使用
61
2.12.2 文件包含
62
2.12.3 条件编译
63
2.13 进程
64
2.13.1 操纵进程
64
2.13.2 消息接收与选择性接收
65
2.13.3 注册进程
66
2.13.4 消息投递与信号
67
2.13.5 进程字典
67
2.14 ETS表
68
2.14.1 为何ETS表被设计成这样
68
2.14.2 ETS表的基本用法
68
2.15 以递归代替循环
69
2.15.1 从迭代到递归
69
2.15.2 理解尾递归
71
2.15.3 累加器参数
72
2.15.4 谈谈效率
72
2.15.5 编写递归函数的窍门
73
2.16 Erlang编程资源
78
2.16.1 图书
78
2.16.2 在线资料
79
2.17 小结
79
第3章 开发基于TCP的RPC服务
80
3.1 你所创建的是什么
81
3.1.1 基础知识提醒
82
3.1.2 行为模式基础
82
3.2 实现RPC服务器
85
3.2.1 行为模式实现模块的典型布局
85
3.2.2 模块首部
85
3.2.3 API段
88
3.2.4 回调函数段
92
3.3 运行RPC服务器
98
3.4 浅谈测试
99
3.5 小结
100
第4章 OTP应用与监督机制
101
4.1 OTP应用
101
4.1.1 OTP应用的组织形式
102
4.1.2 为应用添加元数据
103
4.1.3 应用行为模式
104
4.1.4 应用结构小结
105
4.2 用监督者实现容错
105
4.2.1 实现监督者
106
4.2.2 监督者重启策略
107
4.2.3 编写子进程规范
108
4.3 启动应用
109
4.4 生成EDoc文档
110
4.5 小结
110
第5章 主要图形化监测工具的使用
112
5.1 Appmon
112
5.1.1 Appmon GUI
112
5.1.2 WebTool版Appmon
115
5.2 Pman
116
5.3 调试器
118
5.4 表查看器TV
121
5.5 工具栏
123
5.6 小结
123
第二部分 构建生产系统
第6章 打造一套缓存系统
126
6.1 故事背景
126
6.2 缓存的设计
127
6.3 创建OTP应用的基本骨架
130
6.3.1 应用目录结构的布局
130
6.3.2 创建应用元数据
130
6.3.3 实现应用行为模式
131
6.3.4 实现监督者
131
6.4 从应用骨架到五脏俱全的缓存
133
6.4.1 编写sc_element进程
134
6.4.2 实现sc_store模块
138
6.4.3 打造应用层API模块
142
6.5 小结
144
第7章 Erlang/OTP中的日志与事件
处理
145
7.1 Erlang/OTP中的日志
146
7.1.1 日志概述
146
7.1.2 Erlang/OTP内置的日志设施
147
7.1.3 标准日志函数
147
7.1.4 SASL与崩溃报告
149
7.2 用gen_event编写自定义事件
处理器
153
7.2.1 gen_event行为模式简介
153
7.2.2 事件处理器示例
154
7.2.3 处理错误事件
155
7.3 为Simple Cache添加自定义事件流
157
7.3.1 事件流API
157
7.3.2 将处理器整合进Simple Cache
159
7.3.3 订阅自定义事件流
161
7.4 小结
162
第8章 分布式Erlang/OTP简介
163
8.1 Erlang分布式基础
163
8.1.1 复制式进程间通信
164
8.1.2 位置透明性
165
8.2 节点与集群
166
8.2.1 节点的启动
166
8.2.2 节点的互联
167
8.2.3 Erlang节点如何定位其他节点并与之建立通信
169
8.2.4 magic cookie安全系统
170
8.2.5 互联节点间的消息传递
171
8.2.6 使用远程shell
173
8.3 资源探测攻略
175
8.3.1 术语
175
8.3.2 算法
176
8.3.3 实现资源探测应用
177
8.4 小结
182
第9章 用Mnesia为cache增加分布
式支持
183
9.1 分布式缓存
184
9.1.1 选取通信策略
184
9.1.2 同步缓存和异步缓存
186
9.1.3 分布式表
188
9.2 用Mnesia实现分布式数据存储
189
9.2.1 建立项目数据库
189
9.2.2 初始化数据库
191
9.2.3 建表
192
9.2.4 向表中录入数据
195
9.2.5 执行基本查询
197
9.3 基于Mnesia的分布式缓存
199
9.3.1 用Mnesia取代ETS
199
9.3.2 让缓存识别出其他节点
202
9.3.3 用资源探测定位其他缓存
实例
205
9.3.4 动态复制Mnesia表
206
9.4 小结
209
第10章 打包、服务和部署
210
10.1 从系统的角度看应用
210
10.1.1 结构
211
10.1.2 元数据
211
10.1.3 系统如何管理运行中的
应用
212
10.2 制作发布镜像
213
10.2.1 发布镜像
213
10.2.2 准备发布代码
214
10.2.3 发布镜像的元数据文件
214
10.2.4 脚本与启动文件
216
10.2.5 系统配置
217
10.2.6 启动目标系统
218
10.3 发布镜像打包
219
10.3.1 创建发布镜像包
219
10.3.2 发布镜像包的内容
220
10.3.3 定制发布镜像包
222
10.4 安装发布镜像
223
10.5 小结
223
第三部分 集成与完善
第11章 为缓存添加HTTP接口
226
11.1 实现TCP服务器
226
11.1.1 高效TCP服务器的设计
模式
227
11.1.2 搭建tcp_interface应用的
骨架
228
11.1.3 填充TCP服务器的实现
逻辑
228
11.1.4 简单文本协议
231
11.1.5 文本接口实现
232
11.2 打造一套全新的Web接口
234
11.2.1 HTTP简介
234
11.2.2 实现一套通用的Web服务
器行为模式
237
11.2.3 初识REST
248
11.2.4 用gen_web_server实现
REST式协议
249
11.3 小结
252
第12章 用端口和NIF集成外围代码
253
12.1 端口和NIF
254
12.1.1 普通端口
255
12.1.2 链入式端口驱动
256
12.1.3 原生函数(NIF)
257
12.2 用端口来集成解析器
257
12.2.1 Erlang方面的端口
257
12.2.2 C方面的端口
260
12.2.3 编译运行
271
12.3 开发链入式驱动
272
12.3.1 初识链入式驱动
273
12.3.2 驱动的C语言部分
274
12.3.3 编译驱动代码
278
12.3.4 驱动的Erlang部分
279
12.4 将解析器实现为NIF
280
12.4.1 NIF的Erlang部分
280
12.4.2 NIF的C代码部分
281
12.4.3 编译与运行代码
287
12.5 小结
288
第13章 用Jinterface实现Erlang和
Java间的通信
289
13.1 利用Jinterface在Erlang中集成
Java
290
13.1.1 OtpNode类
290
13.1.2 OtpMbox类
291
13.1.3 Erlang数据结构的Java
映射
291
13.1.4 示例:Java中的消息处理
292
13.1.5 在Erlang中与Java节点
通信
294
13.2 安装和配置HBase
296
13.2.1 下载和安装
296
13.2.2 配置HBase
296
13.3 为Simple Cache和HBase牵线
搭桥
297
13.3.1 Erlang方面:sc_hbase.erl
298
13.3.2 HBaseConnector类
299
13.3.3 Java中的消息处理
301
13.3.4 HBaseTask类
304
13.4 在Simple Cache中整合HBase
306
13.4.1 查询
306
13.4.2 插入
307
13.4.3 删除
307
13.5 运行集成系统
308
13.6 小结
310
第14章 优化与性能
311
14.1 如何进行性能调优
312
14.1.1 设定性能目标
312
14.1.2 设定基线
313
14.1.3 系统性能分析
313
14.1.4 确定需要解决的问题
313
14.1.5 测定优化成果
313
14.2 Erlang代码性能分析
314
14.2.1 用cprof计算调用次数
314
14.2.2 用fprof测定执行时间
316
14.3 Erlang编程语言的缺陷
320
14.3.1 基本数据类型的性能特点
321
14.3.2 内置函数和运算符的性能
324
14.3.3 函数
325
14.3.4 进程
327
14.4 小结
329
附录A 安装Erlang
330
附录B 列表与引用透明性
332

编辑推荐

《Erlang/OTP并发编程实战》讲述了如果将Erlang语言看成才华横溢的钢琴家,那么OTP平台就是一架能让钢琴家把才能发挥得淋漓尽致的钢琴。《Erlang/OTP并发编程实战》除了全面介绍Erlang语言和OTP平台的基础知识外,还通过一系列实用案例引领你深入了解OTP的高级特性,一步步构建一个大型生产系统。并加以优化和完善。三位作者在Erlang领域拥有极其丰富的实战经验,细致入微地剖析了OTP开发与部署的全过程。要想真刀真枪地上战场。《Erlang/OTP并发编程实战》才是你明智的选择!

前言

   本书试图提炼出成就一名专业Erlang程序员所需的最关键的知识,借此我们才能让这门高效的语言发挥出其最大的潜力。Erlang/OTP功能强大,但直到目前为止,对初学者来说,通过研读OTP文档来自学OTP框架仍然是件令人望而生畏的事情(这些文档探究了很多细节,却缺乏全局观)。   本书三位作者长期从事Erlang相关工作,但各自的发展轨迹却很不一样。   Martin:“我是在自己第一份‘真正’的工作中接触到Erlang的。此前我一直从事C和C++开发,也有意思得很。我的第一任老板Hal Snyder甚至在20世纪90年代便对多线程深恶痛绝,后来邂逅了Erlang。我那时还只是个实习生,于是他给了我一个要用Erlang完成的项目。原因嘛,嗯,无非是我的工钱低,即便我搞砸了,公司在这桩买卖上的损失也就不过70美元。最后我并没搞砸,我自己写了一个1000行的监督进程,代码不好看,因为那时候我压根儿不知道OTP是什么东西,手边当然也不会有相关的书。在这个过程中,我爱上了这种‘靠谱’的开发后端系统的方法,也爱上了Erlang。Erlang给了我洞悉未来的机会:我所写的复杂分布式系统,所用的高级算法,都是我那些使唤着命令式语言的同事们所梦寐以求的,不花上两年工夫码上一百万行代码他们压根儿实现不出来。读了数千页文档,写了数万行代码之后,我依然钟情于它。一路走来,我遇到了许多杰出的人物,能与其中的两位共同撰写本书令我激动不已。2004年我在ACM会议上发言时遇到了Richard,四年后我又遇到了Eric,并和他一同创建了Erlware--一个仍在蓬勃发展中的项目。多年来,Erlang在我的职业生涯和个人生活中一直扮演着重要的角色,今后也仍会如此。”   Eric:“我研究Erlang完全是无心插柳。我曾想写一款大规模多人游戏。然而我明白,仅凭一人之力,即便是才华横溢,也干不完所有图形处理的活儿。于是我决定集中精力主攻游戏逻辑部分,觉得借助于合适的工具和语言我应该能解决这部分问题。在我的设计中,我喜欢在游戏中设立多个代理对象,每个代理对象都能随时间自主学习并独立而并发地行动。那时我能想到的唯一可行的办法,就是把每个代理对象都建模为某种并发的东西,但当时我还不知道这个东西是什么。我所掌握的语言没法让一个开发者单枪匹马拿下这么一款游戏。于是,我开始考察各种语言,前前后后一共花了大概五年时间,作了一些深入的研究。我很早就见识过Erlang,虽然很喜欢它的并发特性,但实在受不了它的语法和函数式特质。直到考察了很多编程语言之后,我才重新开始欣赏Erlang并用它编写代码。那款游戏我一直也没能写成,但我确信选择Erlang没有错,经过深入的研究和剖析,我发现这门语言在许多方面都大有用武之地。这大概是2000年或2001年的事情了。后续几年间,我又自学了OTP。后来,在2005的时候,我在发布了Sinan的第一版,还认识了Martin Logan,并和他一起创办了Erlware。2008年,我搬到了芝加哥,开始写书并尽心打理Erlware项目。   Richard:“我大概是在1995年前后接触Erlang的,那时我正在乌普萨拉大学为计算机科学硕士论文选题。这引导我后来成为高性能Erlang研究组的一名博士研究生,就Erlang编译器和运行时系统做了若干年的研究。我在瑞典和美国的会议上结识了Martin Logan和Eric Merritt,他们对Erlang的热情令我印象深刻,尽管那时候Erlang还是一门鲜为人知的语言--尤其是在美国。在攻读博士学位期间,我搞了几个业余项目,其中语法工具库和EDoc应用都源自我在编译器方面的研究成果,而EUnit原本是为了检查我的学生们的并发编程作业是否符合规范而设计的。走出学术界之后,我做了几年和Erlang无关的工作,基本上都是在用Python、Ruby和C++写程序。不过最近,我加盟了瑞典最成功的一家创业公司,再次全职投入Erlang,目前正投身于高速发展的高可用性支付系统领域。”   我们三人努力从共同的经验中提炼出尽可能多的内容,以便让你在迈向大师级Erlang程序员的道路上少走弯路;我们也希望能借助本书,最终让OTP框架成为每个Erlang程序员--而不是少数能将手册翻烂的人--都能掌握的东西。

内容概要

作者简介:
Martin Logan 从1999年开始活跃于Erlang社区,后来全职从事Erlang研发。目前任职于全球最大的在线旅游公司Orbitz Worldwide,为基于大规模分布式服务的基础设施开发解决方案。Erlware联合创始人,核心开发人员,Erlang/OTP软件包管理系统Faxien的主要开发者。
Eric Merritt 专注并发编程和分布式系统。曾任职于Amazon.com,现为eCD Market软件工程师。Erlware联合创始人,Erlang芝加哥用户组核心成员。Erlware团队开源产品核心开发人员,Erlang/OTP构建系统Sinan的主要开发者。
Richard Carlsson 瑞典乌普萨拉大学高性能Erlang计划(HiPE)早期成员,研究Erlang技术达17年,曾为标准库、Erlang编译器、运行时系统和Erlang语言本身都作出过不少贡献。此外,他还是Erlang文档系统EDoc和单元测试框架EUnit的创建者。目前加入了Kreditor,致力于高可用性支付系统的Erlang开发。
译者简介:
连城
百度资深软件工程师,《Erlang并发编程(第一部分)》社区翻译项目组织者及主要译者。对分布式存储、分布式消息系统、程序语言设计实现抱有浓厚兴趣。

名人推荐

“惊艳!不管是对于初学者还是Erlang高手,本书绝对都是不容错过的好书。” ——Amazon.com书评 “多核处理器和并发编程是将来的重头戏。ErIang在下一代编程语言中可谓独领风骚!” ——DZone书评 “Erlang开发者必备两本书,一本是ErIang之父Joe Arrrlstrong的《Erlang程序设计》,另一本就是本书——务实、高效又不失幽默风趣的好书啊!” ——slashdot.org书评

章节摘录

版权页:   插图:   1.4.1 调度器 经过多年的演进,ERTS的进程调度器提供了其他平台无法比拟的灵活性。它最初的设计目标是在单CPU上并发运行轻量级Erlang进程,而不用关心底层用的是什么操作系统。ERTS运行的时候通常就是单个操作系统进程(在操作系统的进程列表中一般名为beam或werl)。这个进程中,就跑着管理所有Erlang进程的调度器。 随着线程在大多数操作系统中的普及,ERTS也有所变化,开始将I/O系统这类东西从运行Erlang进程的线程中拿出来,放到独立的线程中去,但完成主体工作的线程仍然只有一个。如果你用的是多核系统,就必须在同一台机器上运行多个ERTS实例。不过从2006年5月起,Erlang/OTP第11版中增加了对称多处理器(SMP)支持。这是一项重大突破,令Erlang运行时系统可以在内部使用不止一个进程调度器,每个占用一个独立的操作系统线程。 这意味着现在Erlang进程可以以n:m的方式映射到操作系统线程。每个调度器处理一个进程池。可并行运行的Erlang进程最多能有m个(每个调度器线程执行一个),但同一池内的进程仍像之前所有进程共用一个调度器那样分时运行。在此基础之上,进程可以在进程池之间迁移以便维 持可用调度器上的负载均衡。在最新的Erlang/OTP发布版中,甚至可以根据机器上CPU的拓扑情 况将进程绑定到特定的调度器上,从而更好地利用硬件的缓存架构。这意味着,大多数时候,作为一名Erlang程序员你不用担心手头有多少CPU或有多少个核:你只要中规中矩地写程序,并尽量将程序切分为尺寸适中的并行任务就好,负载均衡之类的事情就让Erlang运行时系统去操心吧。不管是单核还是128核——都一样,只会更快。 Erlang新手常犯的一个错误就是过分依赖时序,这往往导致那些在他们的笔记本或工作站上运行良好的程序一迁移到多核服务器上就出错,因为在多核服务器上时序的不确定性要大得多。要发现这类问题,只能借助测试。好在现在的笔记本基本上都至少是双核的了,这类错误也可以被尽早发现。 Erlang的调度器还涉及运行时系统的另一个重要特性:I/O子系统。这正是我们的下一个主题。 1.4.2 I/O与调度 很多并发语言都有的一个毛病就是它们没怎么拿I/O当回事儿。单个进程进行I/O时,它们几乎都存在整个系统或大半系统阻塞的问题。这真是既恼人又没有必要,尤其是Erlang早在二十年前就已经解决了这个问题。在前一节,我们曾讨论过Erlang的进程调度器。除了处理进程调度,调度器还替系统优雅地处理了I/O问题。在系统的最底层,Erlang以事件驱动的方式处理所有I/O,当数据进出系统时,程序可以以非阻塞方式完成数据处理。这降低了连接建立和断开的频次,还避免了OS层面上的加锁开销和上下文切换。 这是一种高效的I/O处理方法。可惜,程序员往往难以分析和理解这种技术,这也是为什么只有在明确要求高可靠性和低延迟的系统中才能见到这种技术。早在2001年,Dan Kegel就在他的论文The C10K Problem中描述过这个问题,虽然现在已经略显过时,但这篇文章仍然很值得一读。它针对这个问题及可能的解决方案给出了良好的综述。这些方案实现起来全都既复杂又痛苦,这正是Erlang运行时系统替你包办这些问题的原因。Erlang在进程调度器中整合了基于事件的I/O系统。事实上,你一点儿都不用操心就能享受一切便利。这让用Erlang/OTP构建高可靠性系统变得轻松了很多。 我们要讲解的最后一个ERTs特性就是内存管理。它对进程所起的作用超出你的想象。 1.4.3 进程隔离与垃圾回收器 如你所想,Erlang跟Java等大部分现代语言一样,会自动管理内存。这儿没有显式的释放操作。相反,垃圾回收器会定期搜寻和回收不再使用的内存。垃圾回收(GC)算法是一片广袤而复杂的研究领域,我们无法在这儿给出详尽的阐述;不过针对那些对此有一定了解又心怀好奇的读者,可以告诉你Erlang当前使用的是一个简单明了的分代复制式垃圾回收器。

图书封面


 Erlang/OTP并发编程实战下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计2条)

  •     这是我第一次写书评,我实在是忍不住了。我第一次见到这么频繁出现的“译者注”,如果译者自己真的有那么东西想说,请另辟蹊径。连“这个……真的是不敢苟同哇”的无营养的吐槽都要写到“译者注”里面,这不知道译者是带着什么样的心态去翻译,且不说学术水平如何,起码对人的尊重都没有。除去“译者注”的部分,个人还是认为是上乘的译作,故荐之。
  •     这是一个可以让我在Erlang学习道路上进阶的书,深入Erlang OTP,学习在实践中如何构建,以及一些技巧,理解OTP原则。但新手莫入,否则一头雾水,找不着北,这不是一本Erlang入门的书,谨记!看之前,需要优先阅读一遍<<Erlang 程序设计>>(http://book.douban.com/subject/3260311/),这是针对新手而言,需要懂得先阅读OTP的设计原则,否则,也是不好理解。另外,本书一个特色是,译者连城加入了自己的一些注解,有些意思;译者连城的博客也是不少优质的文章和心得,非常值得一读!本人也是新手,已阅读到11章。总之,值得推荐,深入Erlang OTP的不可多得之作!

精彩短评 (总计99条)

  •     Erlang学习必备杀器
  •     翻译很好,4,7,10,12,13,14算是精华,遗憾的是深度不够,包括分布式、测试、调试、大规模部署、Rebar等工具的实践等等,总体8分
  •     适合高点层次的erlang程序
  •     很好的一本书,值得一看。。
  •     在看了,为了苦逼的毕业设计!
  •     只能用来入门,这书纸质还不错
  •     好书
  •     不错的书 erlang深入必备
  •     读完前面基础的东西。讲的不够入门。看完前面基础先看programming erlang那本再接着看。
  •     全忘了
  •     OTP居然是Open Telecom Platform的缩写;现在的互联网业务已经堪比电信业务,Erlang也就火起来了;有了进程的概念,Erlang比Java、C++还面向对象;Prolog、函数式设计语言、呼叫处理状态机、容器:Erlang承载了多少历史啊
  •     内容详实,值得购买,作者都是Erlang社区的活跃人物。
  •     翻的不错。
  •     以一个典型的应用例子讲述常用的知识,内容实在,OTP开发的入门好书哟~平时忘了怎么写还可以翻出来看看,哈哈。记忆力不行了
  •     上午下的单,下午四点就收到了,看了几张感觉讲的太深入人心了!
  •     阅读深度:3
  •     书的质量非常好。
    价格略贵了点。不过小众的书籍,可以接受。
    关于Erlang的书并不是很多,学习的话,还是必选这本的。
  •     一部在电信行业的高并发书籍,但是真正要掌握还是要自己去练习
  •     经典的并发编程书,正在学习中。
  •     不错值得一看,学好erlang绝对有前途啊
  •     书弄湿了一点,还把封面的皮刮破了,蛋疼死了。快递速度倒是很快很快。。但是也很蛋疼的包装。。。
  •     这本书是读完erlang programming之后的不二选择。基本上是从对erlang语言的学习到实际应用的承上启下之作,不过也仅仅是承上启下。最重要的还是师傅领进门,修行在个人。
  •     以前没学过,真实数学家写的,全是数学公式
  •     基础和实践 都讲到了 推荐看看
  •     好书,需要细细的去品味,建议多看几遍,我准备多看几遍
  •     书很好,就是感觉纸张一般,有种盗版书的感觉
  •     erlang进阶必读
  •     刚拿到,还没看,翻起来不错。
  •     刚接触。还不是很了解。但是感觉挺好的。。
  •     什么时候到书,等了好几天了!别的书店好像都有了,像**
  •     比起《Erlang 编程指南》,这本书不知道好多少倍。
  •     居然把comprehension翻译为“速构”,有必要吗?不过话说还是中文翻译的实体书比英文电子书看着舒服
  •     翻译水平绝对一流
  •     温故而知新。
  •     不错,对于erlang otp讲解非常清楚,特别是后面的例子讲解,对于初学者一定要细心读
  •     因为工作没有 Erlang 需求,只能翻翻看了。
  •     关于Erlang的书挺少的,这本算是对OTP挺不错的了解。
  •     本人觉得还可,虽然我是刚入门学erlang,刚开始看有些不懂,但慢慢的,随着深入阅读和理解,觉得蛮好的。
  •     很有用的一本书,erlang新手和开发者锻炼自身和认识语言本质的一本好书。
  •     在简要介绍 Erlang 语言的基础上,着重介绍 OTP 框架,并且注重实用。
  •     Java程序员进军Erlang必备书籍,顶起来
  •     一本介绍Erlang理念的经典之作
  •     译者感谢里有我名字,哈哈哈哈
  •     听别人说挺好才买的,不过封面有点划痕,虽然不明显,,不过书还很新,大概是放着的时候不大注意呗
  •     怎么说这本书呢。这本书讲得比较全面,如果想研究更细节的东西,可以通过上网了解。学习不能只靠一本书嘛。总体来说还是值得买的
  •     第一个赞的就是,这本书翻译的真不错!连我这种新手能能流畅看懂自己也看过一些计算机类的书籍,但是跟这本书类似写法的很少,每个章节(尤其是第3章之后)都给人感觉很专业,尤其是对线程结构解析的很多,很详细, 如果能坚持读完,相信收获会不少可能是本人水平太差,我是看过<<七周七语言>>那本中介绍的Erlang,然后买的这本书看,看书过程中觉得自己缺乏的知识很多,并不是仅仅Erlang方面. 因为这并不仅仅是一本简单介绍Erlang的书,而是比较深的切入到Erlang的线程并发机制以及深入OTP, 并且书中还涉及到很多的语言以及时间的算法PS 真的不适合我这种Erlang新手,可能不是Erlang的问题,此书适合对OTP接触的人
  •     书确实不错,偶功力不够,还要多读几遍。
  •     讲解的很明白
  •     粗暴地读完一遍。
  •     浅尝辄止地泛读。收获不是很大。代码还是要实践。
  •     真的很不错,内容丰富,性价比高。
  •     看了基础,继续看这本,结合项目进行,不错
  •     erlang/otp入门的一本好书,原著和翻译都很给力
  •     今天收到书,还没有仔细看,但感觉内容还行
  •     没全看完,后面的不想看了。
  •     帮别人买的,具体内容不知道,不过当当的书还是很好地
  •     去年刚出来的时候买了,59,现在才39,这降得也太离谱了。。
  •     算是起步的书,很详尽,可以尝试拓展以便用在实际项目里
  •     很早以前就想买这本书了,正在阅读中,感觉翻译的还比较风趣,但是200多页的书,感觉内容没有我想象的那么多,其中的内容和其他著作也有一些雷同的地方,总体感觉还是好的!发货比我想象中的要快,本来以为7天才能到的,3天就到了,还比较给力!
  •     用实例介绍了Erlang OTP的使用。对于想要做项目的人来说,这本书不可多得。
  •     Erlang真的没有伤视力啊!而且很简洁优美……
  •     比较实用的书,不错
  •     书的印刷还不错,正在看
  •     看别人都说不错,买本学习学习erlang
  •     此书一天内送达,心情愉悦,正在入门,内容不俗
  •     6月3号买的38,怎么没过几天又卖60啊,晕死。不过书的内容不错,我这种半懂Erlang的人也能看懂,还要多看几遍就是了。
  •     Erlang比较小众,好书不多,这就是一本,值得选择
  •     这书适合有一定基础的人看,一点基础没有的,可能看着比较艰难。
  •     刚开始学Erlang语言,暂时没发现什么不好的。
  •     提炼出成就专业Erlang程序员最关键的知识
  •     把erlang应用到工业环境所需的大部分技术
  •     对于掌握OTP的使用很有帮助,算是其他Erlang书籍的进阶
  •     目前比较好的OTP入门学习材料,包含了一个分布式的缓存系统的设计和实现。没有讨论gen_fsm。
  •     需要有erlang语言基础才能看懂此书,书本身内容不错,翻译得也很好。
  •     看了一下这本书的前面,正是我所想要的书,会继续读下去
  •     一个案例,层层深入,挺好的
  •     粗浅的翻翻。OTP对于erlang来说太重要了。
  •     感觉不错,但是erlang上手还是比较困难
  •     读过有段时间了。感觉就是 Erlang 很简单,OTP 很复杂。
  •     目前为止地球上最好的一本erlang实战书。
  •     等空了再读一遍...erl学起来还是有点生涩...
  •     读了这本书让我对ERLANG的OTP框架有了一定的了解,很好,很满意
  •     原书和翻译都很好
  •     erlang 中文资料很多,这本书讲得很详细。
  •     书的内容好深奥啊
  •     翻译赞,讲原理的少,都是实践性代码,进阶必备。
  •     比较好的Erlang 书籍
  •     看这本书时完全是初学者,语法知识还不懂,看起来有点难度,入门推荐joe的书。书本深入介绍了OPT的其中2个behaviour,对打包、部署等话题也有详细的阐述,是OTP编程的一本力作。
  •     里面的概念性的东西讲的很详细,很受用,是本好书
  •     好高深啊,得慢慢看了,希望可以掌握
  •     现在来看,内容有部分过时,并且也没有足够深入。
  •     深入浅出啊~~, 偏工程,但是好像少了热更新啊
  •     很好的OTP教材
  •     快速扫了一遍,被丑哭了
  •     真不错!
  •     这是一本没有Hello world的书。很少介绍细节,直接去实现一些常见的系统原型。。非常实践化
  •     书本还是可以,男朋友还是满意
  •     OTP讲的好
  •     内容实在,翻译靠谱!
 

农业基础科学,时尚,美术/书法,绘画,软件工程/开发项目管理,研究生/本专科,爱情/情感,动漫学堂PDF下载,。 PDF下载网 

PDF下载网 @ 2024