分享
 
 
 

Erlang程序设计

Erlang程序设计  点此进入淘宝搜索页搜索
  特别声明:本站仅为商品信息简介,并不出售商品,您可点击文中链接进入淘宝网搜索页搜索该商品,有任何问题请与具体淘宝商家联系。
  參考價格: 点此进入淘宝搜索页搜索
  分類: 图书,计算机/网络,程序设计,其他,

作者: (瑞典)阿姆斯特朗著,赵东伟,金尹译

出 版 社: 人民邮电出版社

出版时间: 2008-12-1字数: 691000版次: 1页数: 427印刷时间: 2008/12/01开本: 16开印次: 1纸张: 胶版纸I S B N : 9787115188694包装: 平装编辑推荐

Erlang之父权威著作,领先一步,精通下一代主流编程语言,从这里开始,拥抱未来。

在多核、并发、分布为王的时代,谁将成为下一个主流编程语言?来自全世界的众多专家都认为,Erlang最有可能在竞争中胜出。

Erlang开源语言系出名门,通信巨头爱立信公司用它开发出了可靠性惊人的交换机系统AXD301。它天生就是面向并发、分布和高容错的,兼有函数式语言和脚本语言的各种优点,而且已经用于商业开发多年,具有稳定性极高的虚拟机和平台库。有了这些天时地利,无怪乎Erlang能够迅速成为热门的开发语言,除了广泛应用于通信行业之外,它已经进入了各个领域:Facebook用它实现了聊天系统,Yahoo用它重写了Delicious,Amazon用它开发了云计算数据服务SimpleDB,还有多人游戏、测试工具、电子支付、数据采集与监控、企业消息、电子邮件、空中交通管制……

本书由Erlang之父Joe Armstrong编写,是毋庸置疑的经典著作。书中兼顾了顺序编程、并发编程和分布式编程,较深入地讨论了开发Erlang应用中至关重要的文件和网络编程、OTP、MNesia、Ets和Dets等主题,更为精彩的是,大师亲自操刀,构建了MapReduce实例和多人聊天实例,一定让你大呼过瘾。

内容简介

本书是讲述下一代编程语言Erlang 的权威著作,主要涵盖顺序型编程、异常处理、编译和运行代码、并发编程、并发编程中的错误处理、分布式编程、多核编程等内容。本书将帮助读者在消息传递的基础上构建分布式的并发系统,免去锁与互斥技术的羁绊,使程序在多核CPU 上高效运行。本书讲述的各种设计方法和行为将成为设计容错与分布式系统中的利器。

作者简介

Joe Armstrong,Erlang最初的设计者和实现者,也是Erlang OTP系统项目的首席架构师。他拥有瑞典皇家理工学院博士学位,是容错系统开发领域的世界级专家。此外,他还在开发旨在替代XML的标记语言ML9。现任职于爱立信公司。

目录

第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.2Erlang安装

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.4fun

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.3true断言的使用

3.8.4过时的断言函数

3.9记录

3.9.1创建和更新记录

3.9.2从记录中提取字段值

3.9.3在函数中对记录进行模式匹配

3.9.4记录只是元组的伪装

3.10case/if表达式

3.10.1case表达式

3.10.2if表达式

3.11以自然顺序创建列表

3.12累加器

第4章异常

4.1异常

4.2抛出异常

4.3try...catch

4.3.1缩减版本

4.3.2使用try...catch的编程惯例

4.4catch

4.5改进错误信息

4.6try...catch的编程风格

4.6.1经常会返回错误的程序

4.6.2出错几率比较小的程序

4.7捕获所有可能的异常

4.8新老两种异常处理风格

4.9栈跟踪

第5章顺序型编程进阶

5.1BIF

5.2二进制数据

5.3比特语法

5.3.1bit色彩的封包与解包

5.3.2比特语法表达式

5.3.3高级比特语法样例

5.4小问题集锦

5.4.1apply

5.4.2属性

5.4.3块表达式

5.4.4布尔类型

5.4.5布尔表达式

5.4.6字符集

5.4.7注释

5.4.8epp

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.1makefile模板

6.4.2定制makefile模板

6.5在Erlang shell中的命令编辑

6.6解决系统死锁

6.7如何应对故障

6.7.1未定义/遗失代码

6.7.2makefile不能工作

6.7.3shell没有响应

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.2on_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.1lib_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.2Lib_chan配置

11.6.3聊天控制器

11.6.4聊天服务器

11.6.5聊天群组

11.6.6输入输出窗口

11.7习题

第12章接口技术

12.1端口

12.2为一个外部C程序添加接口

12.2.1C程序

12.2.2Erlang程序

12.3open_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.5UDP

14.5.1最简单的UDP服务器和客户机

14.5.2一个计算阶乘UDP的服务器

14.5.3关于UDP协议的其他注意事项

14.6向多台机器广播消息

14.7SHOUTcast服务器

14.7.1SHOUTcast协议

14.7.2SHOUTcast服务器的工作机制

14.7.3SHOUTcast服务器的伪代码

14.7.4运行SHOUTcast服务器

14.8进一步深入

第15章ETS和DETS:大量数据的存储机制

15.1表的基本操作

15.2表的类型

15.3ETS表的效率考虑

15.4创建ETS表

15.5ETS程序示例

15.5.1三字索引迭代器

15.5.2构造表

15.5.3构造表有多快

15.5.4访问表有多快

15.5.5胜出的是……

15.6DETS

15.7我们没有提及的部分

15.8代码清单

第16章OTP概述

16.1通用服务器程序的进化路线

16.1.1server 1:原始服务器程序

16.1.2server 2:支持事务的服务器程序

16.1.3server 3:支持热代码替换的服务器程序

16.1.4server 4:同时支持事务和热代码替换

16.1.5server 5:压轴好戏

16.2gen_server起步

16.2.1第一步:确定回调模块的名称

16.2.2第二步:写接口函数

16.2.3第三步:编写回调函数

16.3gen_server回调的结构

16.3.1启动服务器程序时发生了什么

16.3.2调用服务器程序时发生了什么

16.3.3调用和通知

16.3.4发给服务器的原生消息

16.3.5Hasta la Vista, Baby(服务器的终止)

16.3.6热代码替换

16.4代码和模板

16.4.1gen_server模板

16.4.2my_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.3Mnesia事务

17.3.1取消一个事务

17.3.2加载测试数据

17.3.3do()函数

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给我们的程序写文档

附录BMicrosoft Windows环境下的Erlang环境

附录C资源

附录D套接字应用程序

附录E其他

附录F模块和函数参考

索引

媒体评论

“Erlang让我有醍醐灌顶之感,它促使我开始以完全不同的方式思考问题。Amstrong能够亲自写作本书,实乃社区之福。”

——Dave Thomas,软件开发大师,《程序员修炼之道》艺术作者

“向所有程序员强烈推荐本书,我们都将从中获益匪浅。”

——Gary Pollice,IBM Rational开发团队前核心成员,Worcester理工学院教授

Erlang是目前唯一成熟可靠的能够开发高扩展性并发软件系统的语言,它将成为下一个Java。

——Ralph Johnson,软件开发大师《设计模式》作者之一

书摘插图

第1章引言

1.2正式起航

从前,一名程序员偶然读到了一本古怪的程序语言图书。相等其实不是相等,变量实际上不能改变,它的语法一切都那么陌生。更糟糕的是,它甚至都不是面向对象的。这些程序,呃,实在太另类了……

另类的不仅仅是程序,编程的教学步骤也特立独行。它的作者一直喋喋不休地教授并发、分布和容错,不断地唠叨着一种叫做COP(Concurrency Oriented Programming,面向并发编程)的方法——管它叫什么呢。

不过有些例子看上去很好玩。那天夜里,这个程序员注视着那个聊天程序的小例子。它是多么的小巧可爱而又通俗易懂,只是那些语法有那么一丁点儿古怪,但它确实简单到不能再简单了。

开始编程并不困难,用不了几行代码,文件共享和加密通信便跃然纸上。于是这个程序员开始敲起了他的键盘……

……

Erlang程序设计

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
>>返回首頁<<
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有