Erlang 程序设计

出版社:人民邮电出版社
出版日期:2008
ISBN:9787115188694
作者:Armstrong
页数:427页

内容概要

Joe Armstrong,Erlang最初的设计者和实现者,也是Erlang OTP系统项目的首席架构师。他拥有瑞典皇家理工学院博士学位,是容错系统开发领域的世界级专家。此外,他还在开发旨在替代XML的标记语言ML9。现任职于爱立信公司。
赵东炜,(Jackyz)独立软件顾问,一直专注于Web应用开发,曾负责设计和维护某大型门户网站的多个核心应用,对高并发大容量的分布式应用领域有独到见解。曾担任过软件开发工程师、系统架构师、技术经理、产品经理、创业者等多种不同的角色。闲暇时以思考技术问题为乐,从事软件行业10余年来,从最初的 ASP/PHP到之后的Java/.NET以及现在的Ajax和Erlang,一直都活跃在技术的最前沿。2006年作为主要译者参与了 AjaxcincAction(中译本《Ajax实战》,由人民邮电出版社出版)的翻译工作。之后为Erlang强大的并发能力所吸引,是国内学习和传播 Erlang技术的第一批人,迄今已有2年多的实际开发经验。在2007年3月创建了Erlang中文社区(erlang-china.org),现在是国内Erlang爱好者聚集和分享资料的主要网站。
金尹,长期从事电信行业的大规模语音通信程序的研发,有丰富的并发/分布式网络系统的开发经验。业余从事于数学与编程语言理论,以及并行计算方面的研究。致力于在国内推广函数式语言的发展,分别在2001年和2006年在《程序员》杂志上介绍 Python、Erlang等前卫的编程理念。

书籍目录

第1章 引言
1.1 路线图
1.2 正式起航
1.3 致谢
第2章 入门
2.1 概览
2.1.1 阶段1:茫然无绪
2.1.2 阶段2:初窥门径
2.1.3 阶段2.5:观其大略,不求甚解
2.1.4 阶段3:运用自如
2.1.5 重中之重
2.2 Erlang安装
2.2.1 二进制发布版
2.2.2 从源代码创建Erlang
2.2.3 使用CEAN
2.3 本书代码
2.4 启动shell
2.5 简单的整数运算
2.6 变量
2.6.1 变量不变
2.6.2 模式匹配
2.6.3 单一赋值为何有益于编写质量更高的代码
2.7 浮点数
2.8 原子
2.9 元组
2.9.1 创建元组
2.9.2 从元组中提取字段值
2.10 列表
2.10.1 术语
2.10.2 定义列表
2.10.3 从列表中提取元素
2.11 字符串
2.12 再论模式匹配
第3章 顺序型编程
3.1 模块
3.2 购物系统——进阶篇
3.3 同名不同目的函数
3.4 fun
3.4.1 以fun为参数的函数
3.4.2 返回fun的函数
3.4.3 定义你自己的抽象流程控制
3.5 简单的列表处理
3.6 列表解析
3.6.1 快速排序
3.6.2 毕达哥拉斯三元组
3.6.3 变位词
3.7 算术表达式
3.8 断言
3.8.1 断言序列
3.8.2 断言样例
3.8.3 true断言的使用
3.8.4 过时的断言函数
3.9 记录
3.9.1 创建和更新记录
3.9.2 从记录中提取字段值
3.9.3 在函数中对记录进行模式匹配
3.9.4 记录只是元组的伪装
3.10 case/if表达式
3.10.1 case表达式
3.10.2 if表达式
3.11 以自然顺序创建列表
3.12 累加器
第4章 异常
4.1 异常
4.2 抛出异常
4.3 try...catch
4.3.1 缩减版本
4.3.2 使用try...catch的编程惯例
4.4 catch
4.5 改进错误信息
4.6 try...catch的编程风格
4.6.1 经常会返回错误的程序
4.6.2 出错几率比较小的程序
4.7 捕获所有可能的异常
4.8 新老两种异常处理风格
4.9 栈跟踪
第5章 顺序型编程进阶
5.1 BIF
5.2 二进制数据
5.3 比特语法
5.3.1 bit色彩的封包与解包
5.3.2 比特语法表达式
5.3.3 高级比特语法样例
5.4 小问题集锦
5.4.1 apply
5.4.2 属性
5.4.3 块表达式
5.4.4 布尔类型
5.4.5 布尔表达式
5.4.6 字符集
5.4.7 注释
5.4.8 epp
5.4.9 转义符
5.4.10 表达式和表达式序列
5.4.11 函数引用
5.4.12 包含文件
5.4.13 列表操作符++和--
5.4.14 宏
5.4.15 在模式中使用匹配操作符
5.4.16 数值类型
5.4.17 操作符优先级
5.4.18 进程字典
5.4.19 引用
5.4.20 短路布尔表达式
5.4.21 比较表达式
5.4.22 下划线变量
第6章 编译并运行程序
6.1 开启和停止Erlang shell
6.2 配置开发环境
6.2.1 为文件加载器设定搜索路径
6.2.2 在系统启动时批量执行命令
6.3 运行程序的几种不同方法
6.3.1 在Erlang shell中编译运行
6.3.2 在命令提示符下编译运行
6.3.3 把程序当作escript脚本运行
6.3.4 用命令行参数编程
6.4 使用makefile进行自动编译
6.4.1 makefile模板
6.4.2 定制makefile模板
6.5 在Erlang shell中的命令编辑
6.6 解决系统死锁
6.7 如何应对故障
6.7.1 未定义/遗失代码
6.7.2 makefile不能工作
6.7.3 shell没有响应
6.8 获取帮助
6.9 调试环境
6.10 崩溃转储
第7章 并发
第8章 并发编程
8.1 并发原语
8.2 一个简单的例子
8.3 客户/服务器介绍
8.4 创建一个进程需要花费多少时间
8.5 带超时的receive
8.5.1 只有超时的receive
8.5.2 超时时间为0的receive
8.5.3 使用一个无限等待超时进行接收
8.5.4 实现一个计时器
8.6 选择性接收
8.7 注册进程
8.8 如何编写一个并发程序
8.9 尾递归技术
8.10 使用MFA启动进程
8.11 习题
第9章 并发编程中的错误处理
9.1 链接进程
9.2 on_exit处理程序
9.3 远程错误处理
9.4 错误处理的细节
9.4.1 捕获退出的编程模式
9.4.2 捕获退出信号(进阶篇)
9.5 错误处理原语
9.6 链接进程集
9.7 监视器
9.8 存活进程
第10章 分布式编程
10.1 名字服务
10.1.1 第一步:一个简单的名字服务
10.1.2 第二步:在同一台机器上,客户端运行于一个节点而服务器运行于第二个节点
10.1.3 第三步:让客户机和服务器运行于同一个局域网内的不同机器上
10.1.4 第四步:在因特网上的不同主机上分别运行客户机和服务器
10.2 分布式原语
10.3 分布式编程中使用的库
10.4 有cookie保护的系统
10.5 基于套接字的分布式模式
10.5.1 lib_chan
10.5.2 服务器代码
第11章 IRC Lite
11.1 消息序列图
11.2 用户界面
11.3 客户端程序
11.4 服务器端组件
11.4.1 聊天控制器
11.4.2 聊天服务器
11.4.3 群组管理器
11.5 运行程序
11.6 聊天程序源代码
11.6.1 聊天客户端
11.6.2 Lib_chan配置
11.6.3 聊天控制器
11.6.4 聊天服务器
11.6.5 聊天群组
11.6.6 输入输出窗口
11.7 习题
第12章 接口技术
12.1 端口
12.2 为一个外部C程序添加接口
12.2.1 C程序
12.2.2 Erlang程序
12.3 open_port
12.4 内联驱动
12.5 注意
第13章 对文件编程
13.1 库的组织结构
13.2 读取文件的不同方法
13.2.1 从文件中读取所有Erlang数据项
13.2.2 从文件的数据项中一次读取一项
13.2.3 从文件中一次读取一行数据
13.2.4 将整个文件的内容读入到一个二进制数据中
13.2.5 随机读取一个文件
13.2.6 读取ID3标记
13.3 写入文件的不同方法
13.3.1 向一个文件中写入一串Erlang数据项
13.3.2 向文件中写入一行
13.3.3 一步操作写入整个文件
13.3.4 在随机访问模式下写入文件
13.4 目录操作
13.5 查询文件的属性
13.6 复制和删除文件
13.7 小知识
13.8 一个搜索小程序
第14章 套接字编程
14.1 使用TCP
14.1.1 从服务器上获取数据
14.1.2 一个简单的TCP服务器
14.1.3 改进服务器
14.1.4 注意
14.2 控制逻辑
14.2.1 主动型消息接收(非阻塞)
14.2.2 被动型消息接收(阻塞)
14.2.3 混合型模式(半阻塞)
14.3 连接从何而来
14.4 套接字的出错处理
14.5 UDP
14.5.1 最简单的UDP服务器和客户机
14.5.2 一个计算阶乘UDP的服务器
14.5.3 关于UDP协议的其他注意事项
14.6 向多台机器广播消息
14.7 SHOUTcast服务器
14.7.1 SHOUTcast协议
14.7.2 SHOUTcast服务器的工作机制
14.7.3 SHOUTcast服务器的伪代码
14.7.4 运行SHOUTcast服务器
14.8 进一步深入
第15章 ETS和DETS:大量数据的存储机制
15.1 表的基本操作
15.2 表的类型
15.3 ETS表的效率考虑
15.4 创建ETS表
15.5 ETS程序示例
15.5.1 三字索引迭代器
15.5.2 构造表
15.5.3 构造表有多快
15.5.4 访问表有多快
15.5.5 胜出的是……
15.6 DETS
15.7 我们没有提及的部分
15.8 代码清单
第16章 OTP概述
16.1 通用服务器程序的进化路线
16.1.1 server 1:原始服务器程序
16.1.2 server 2:支持事务的服务器程序
16.1.3 server 3:支持热代码替换的服务器程序
16.1.4 server 4:同时支持事务和热代码替换
16.1.5 server 5:压轴好戏
16.2 gen_server起步
16.2.1 第一步:确定回调模块的名称
16.2.2 第二步:写接口函数
16.2.3 第三步:编写回调函数
16.3 gen_server回调的结构
16.3.1 启动服务器程序时发生了什么
16.3.2 调用服务器程序时发生了什么
16.3.3 调用和通知
16.3.4 发给服务器的原生消息
16.3.5 Hasta la Vista, Baby(服务器的终止)
16.3.6 热代码替换
16.4 代码和模板
16.4.1 gen_server模板
16.4.2 my_bank
16.5 进一步深入
第17章 Mnesia:Erlang数据库
17.1 数据库查询
17.1.1 选取表中所有的数据
17.1.2 选取表中的数据
17.1.3 按条件选取表中的数据
17.1.4 从两个表选取数据(关联查询)
17.2 增删表中的数据
17.2.1 增加一行
17.2.2 删除一行
17.3 Mnesia事务
17.3.1 取消一个事务
17.3.2 加载测试数据
17.3.3 do()函数
17.4 在表中保存复杂数据
17.5 表的类型和位置
17.5.1 创建表
17.5.2 表属性的常见组合
17.5.3 表的行为
17.6 创建和初始化数据库
17.7 表查看器
17.8 进一步深入
17.9 代码清单
第18章 构造基于OTP的系统
18.1 通用的事件处理
18.2 错误日志
18.2.1 记录一个错误
18.2.2 配置错误日志
18.2.3 分析错误
18.3 警报管理
18.4 应用服务
18.4.1 素数服务
18.4.2 面积服务
18.5 监控树
18.6 启动整个系统
18.7 应用程序
18.8 文件系统的组织
18.9 应用程序监视器
18.10 进一步深入
18.11 我们如何创建素数
第19章 多核小引
第20章 多核编程
20.1 如何在多核的CPU上更有效率地运行
20.1.1 使用大量进程
20.1.2 避免副作用
20.1.3 顺序瓶颈
20.2 并行化顺序代码
20.3 小消息、大计算
20.4 映射—归并算法和磁盘索引程序
20.4.1 映射—归并算法
20.4.2 全文检索
20.4.3 索引器的操作
20.4.4 运行索引器
20.4.5 评论
20.4.6 索引器的代码
20.5 面向未来的成长
附录A 给我们的程序写文档
附录B Microsoft Windows环境下的Erlang环境
附录C 资源
附录D 套接字应用程序
附录E 其他
附录F 模块和函数参考
索引

作者简介

书是讲述下一代编程语言Erlang 的权威著作,主要涵盖顺序型编程、异常处理、编译和运行代码、并发编程、并发编程中的错误处理、分布式编程、多核编程等内容。本书将帮助读者在消息传递的基础上构建分布式的并发系统,免去锁与互斥技术的羁绊,使程序在多核CPU 上高效运行。本书讲述的各种设计方法和行为将成为设计容错与分布式系统中的利器。.
在多核、并发、分布为王的时代,谁将成为下一个主流编程语言?来自全世界的众多专家都认为,Erlang最有可能在竞争中胜出。
Erlang开源语言系出名门,通信巨头爱立信公司用它开发出了可靠性惊人的交换机系统AXD301。它天生就是面向并发、分布和高容错的,兼有函数式语言和脚本语言的各种优点,而且已经用于商业开发多年,具有稳定性极高的虚拟机和平台库。有了这些天时地利,无怪乎Erlang能够迅速成为热门的开发语言,除了广泛应用于通信行业之外,它已经进入了各个领域:Facebook用它实现了聊天系统,Yahoo用它重写了Delicious,Amazon用它开发了云计算数据服务SimpleDB,还有多人游戏、测试工具、电子支付、数据采集与监控、企业消息、电子邮件、空中交通管制……..
本书由Erlang之父Joe Armstrong编写,是毋庸置疑的经典著作。书中兼顾了顺序编程、并发编程和分布式编程,较深入地讨论了开发Erlang应用中至关重要的文件和网络编程、OTP、MNesia、Ets和Dets等主题,更为精彩的是,大师亲自操刀,构建了MapReduce实例和多人聊天实例,一定让你大呼过瘾。...


 Erlang 程序设计下载 更多精彩书评



发布书评

 
 


精彩书评 (总计13条)

  •     Gary Pollice, 实践教授, Worcester Polytechnic Institute2008 年 2 月 15 阅读 Joe Armstrong 的关于用 Erlang 语言进行程序设计的新书如何成为寻求解决并行问题的程序员的无价资源。来自 The Rational Edge.原文:http://www.ibm.com/developerworks/cn/rational/dec07/reader/pollice.html==========================Programming Erlang Software for a Concurrent World 作者 Joe ArmstrongThe Pragmatic Programmers,2007ISBN 19343560X  Erlang 是爱立信计算机科学实验室设计的函数式程序设计语言和运行时系统。它是特别为构建跨网络部署的容错、实时系统而设计的。Erlang 被设计为自然地且容易地支持并行。现在 Erlang 是运行在大部分计算平台上的开源系统。  Joe Armstrong 写了一本关于用 Erlang 进行程序设计的好书。该书适合从函数式语言的初学者到那些有一定 Erlang 经验,并想要提高技能的人中的每一个人。这不是一本参考手册,而是教您学习如何使用 Erlang 编程的书。  Armstrong 将该书组织成二十个中型章节和六个附录。该书似乎比它的 515 页要短。这是对 Armstrong 的简单易读的书写风格的颂词。我发现自己愉快地花了几分钟并且读了一个章节。学习该书的最好方法是在您读的过程中写一些 Erlang 代码。  该书的第一个部分,章节 1-6,介绍了用 Erlang 进行顺序程序设计的基本概念。该部分的内容位于章节 2-6。第一章是序言。第二章告诉您如何获得并安装 Erlang 的开源版本,并且确保它在您的平台上能工作。如果您从未用函数式语言编过程序,那么您应该仔细阅读前六个章节。如果您熟悉函数式语言,那么您可以轻松扫过这些章节,并且开始第 7 章。  依据 Armstrong,第 7 章是“非技术性章节”。他提供了一个简短五页的并行介绍。之后两个技术章节介绍了如何用 Erlang 进行并行程序设计。第 8 章介绍了如何创建进程、在它们之间发送消息,等等。在继续之前,您需要掌握一些基本操作。第 9 章包含了一个关于如何在并行程序中处理错误的详细讨论。  一旦您熟悉了并行,您就准备进行下一步 —— 分布式程序设计。这些是运行在网络上,并且需要消息传递的程序。第 10 章是向您介绍在用 Erlang 书写分布式程序时所需的工具的简短章节。Erlang 有一些特别的需求,例如允许两个 Erlang 程序进行通信的“魔饼”。当您读完该章节时,您就准备成为分布式程序设计大师了。  许多接下来的章节都独立成章。举例来说,第 11 章介绍了 IRC 程序。其他章节着重于具体的主题,例如,处理文件、socket,等等。第 17 章介绍了 Mnesia,它是支持复制型数据库且内嵌入 Erlang 的数据库管理系统。虽然 Armstrong 说 Mnesia 查询很像 SQL,但是他省略掉了这样的事实,只有当您非常熟悉 Erlang 之后,它们的相似性才明显。  最后的两个章节着重于多核计算机的程序设计。这是首先吸引我的地方。这些章节为您提供了帮助您书写用于多核计算机的高性能程序的一些指导和实例。  六个附录覆盖一组主题。如果您打算书写 Erlang 程序,那么在开始前阅读 Appendix A。该附录的题目是 Documenting Our Program,而它真正是关于如何书写易读的代码及遵照已建立的指南的章节。其他的附录提供参考资料和扩展的实例。  如果您已经尝试过函数式程序设计,并且因为任意的原因而对其厌烦,那么您可能想试试 Erlang。如果您正疑惑如何掌握并行及分布式应用程序,那么您会找到非常易读的一些很好的资料。我向所有程序设计人员强烈推荐该书。您将从它中学到东西。
  •     这书前100页左右就已经说完erlang的基本了,其实10页都可以说完了,不过armstrong老头还是挺风趣的,大师风范嘛...后面的章节都是很多很多的例子了,一个个实例来说明了,好与坏就仁者见仁了~不过有些是没有详细代码的,好像要自己上网下载的,太长了。真的,对初学者来多太长了...可惜它没有详述一些erlang的细节,例如...我感兴趣的并发实现的...看过网上有人用c++与它对比10000个并发,根本没可比性,erlang根本就不是用系统的线程之类的...
  •     本书对erlang编程涉及到的各个方面,做了循序渐进的,深入浅出的描述。几乎没有什么废话,每一章都需要看,因为实用的erlang程序几乎要用到这里描述的每一个知识点。花了一周时间看完,边看边敲代码,难度不大。之后作一个实际的项目,把otp使用一下,基本上就掌握了。剩下的就是调优了,这个不是这本书解决的。

精彩短评 (总计50条)

  •     一个实现优雅,高效,扩展性好。。的c/c++程序,基本上就实现了一个Erlang框架
  •     erlang的书里面我就这个能看懂
  •     适合入门
  •     书不错, 就是翻译的有点二。 我就不知道怎么就把 guard 翻译成断了。。。。 翻成守卫都比断言好10000倍。。。
  •     Erlang各种特性很喜欢也很想用,为啥aix就便宜不过呢?
  •     Erlang绝对的入门必读之作,五星级图书,必读!
  •     粗略看了一遍,行文、翻译都不错。Erlang作者自己写的书可以洞悉Erlang的本质,不过目前还没有掌握Erlang,还需努力!
  •     阅读深度:4
  •     新的疆土!//对服务器后端有了一些新的知识,erlang创始人的书必然点赞。但是这个语言真的感觉不是很规整呢,尽管有很多优秀特性,不过他的美还没体会到。。
  •     打开了新的视野
  •     Erlang 为多核,容错而生
  •     入门必读。
  •     真心不错
  •     fb 不用otp 为毛呢
  •     对erlang有较为全面的论述
  •     前几章入门,不过后面几章需要细读,而且也是很值得细读的。
  •     浅显易懂,同类书中拔尖
  •     otp部分没看懂。前面很有意思,函数式编程能做到更好的抽象。至于多核和分布式编程,好像就是rpc吧,感觉是噱头
  •     所以说,想学的话还有很东西可以学呢
  •     新手看这个还不错,本来想用这个当毕业设计的,可是老师想来想去又给我换了一个课题,就没坚持学下去
  •     很不错,Erlang之父经典著作,很基础,适合入门
  •     入门erlang的必看书,找了很久都没找到哪有得卖。最后发现逃宝上有卖,还送了不少erlang相关的电子资料,真心不错 item。taobao。com/item.htm?id=26286504297
  •     没有全部看完,但是 写的确实翔实 适合入门者CSDN 总结:http://blog.csdn.net/u011402918/article/details/10047413
  •     非常适合新手入门阅读
  •     粗读即可。。不要纠结语法~
  •     erlang介绍的很详细,OTP涉及的不多
  •     大致看了下语法章节。OTP部分交给另一本书
  •     通俗易懂,虽然我还不是看的很懂。
  •     总体还行,第一次接触函数式语言,没有让我有拒之门外的感觉。
  •     毕竟是erlang之父写的书,肯定是erlang里面最好的 自己是做C++的,思考了下跟erlang的区别,知道自己在用C++的一些不足,受益匪浅
  •     学习Erlang的敲门砖,创始人胳臂壮写的,已经很全面了,可以一边阅读一边做些实例。想要学习Erlang的人必入!
  •     erlang语言入门首选。相比于armstrong博士论文《Making reliable distributed systems in the presence of sodware errors》,这本书注重语法介绍,理论性少点,实践性强点。
  •     独孤九剑的内功心法
  •     好难好难好难,看了好多遍~~~~
  •     erlang入门必读
  •     erlang就像屠龙刀一样,是牛人锦上添花的武器,要想真正运用的纯熟,需要很深厚的内功。屠龙刀不是谁都能耍的起的。
  •     堪比K&R的The C Programming Language
  •     重点otp
  •     相当好的一本书,可是买不到了。
  •     : TP312ER
  •     赞爆了!!既有FP的传统,又有很好的消息通讯机制,简直是一把屠龙刀...不管做不做高性能方面的应用,这本书都值得一读,当开阔眼界也好啊~~~~~~~
  •     erlang的书真的不多
  •     学习erlang最好的入门书,而且深度足够
  •     上次没看多少就评价了,语言原作者的书是学这门语言一定要读一读的。
  •     作者写的书, 感觉比其他的erlang的书来得好, 具体介绍了erlang内部的实现, 比如讲到Interfacing Technology 会讲解port是如何实现的. 其他的书扫了一下, 只是在介绍如何使用...
  •     新哲学语言
  •     Erlang入门经典,章节思路清晰,很易懂
  •     三年前看过一遍,觉得此书很多地方语焉不详,适合做第一本Erlang读物。
  •     好书,感觉跟之前学习的C系列语言完全不同,颠覆了自己之前的认知
  •     作为一个懒逼码农自从发现Scala中Actor消息的immutable还需要程序猿始终keep in mind去保证后,就转投erlang的怀抱了。目前最想吐槽的是record这种语法糖好蛋疼...
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024