分享
 
 
 

Erlang程序设计(图灵程序设计丛书)(Programming Erlang software for a concurrent world)

Erlang程序设计(图灵程序设计丛书)(Programming Erlang software for a concurrent world)  点此进入淘宝搜索页搜索
  特别声明:本站仅为商品信息简介,并不出售商品,您可点击文中链接进入淘宝网搜索页搜索该商品,有任何问题请与具体淘宝商家联系。
  參考價格: 点此进入淘宝搜索页搜索
  分類: 图书,计算机与互联网,程序语言与软件开发,语言与开发工具,综合,
  品牌: 阿姆斯特朗

基本信息·出版社:人民邮电出版社

·页码:427 页

·出版日期:2008年

·ISBN:9787115188694

·条形码:9787115188694

·包装版本:1版

·装帧:平装

·开本:16

·正文语种:中文

·丛书名:图灵程序设计丛书

·外文书名:Programming Erlang software for a concurrent world

产品信息有问题吗?请帮我们更新产品信息。

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

作者简介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等前卫的编程理念。

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

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

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

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

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

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

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

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

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

Erlang之父权威著作

领先一步,精通下一代主流编程语言

从这里开始,拥抱未来

目录

第1章引言1

1.1路线图1

1.2正式起航3

1.3致谢3

第2章入门5

2.1概览5

2.1.1阶段1:茫然无绪5

2.1.2阶段2:初窥门径5

2.1.3阶段2.5:观其大略,不求甚解6

2.1.4阶段3:运用自如6

2.1.5重中之重6

2.2Erlang安装7

2.2.1二进制发布版7

2.2.2从源代码创建Erlang8

2.2.3使用CEAN8

2.3本书代码8

2.4启动shell9

2.5简单的整数运算10

2.6变量11

2.6.1变量不变12

2.6.2模式匹配13

2.6.3单一赋值为何有益于编写质量更高的代码14

2.7浮点数15

2.8原子16

2.9元组17

2.9.1创建元组18

2.9.2从元组中提取字段值18

2.10列表19

2.10.1术语20

2.10.2定义列表20

2.10.3从列表中提取元素20

2.11字符串21

2.12再论模式匹配22

第3章顺序型编程24

3.1模块24

3.2购物系统——进阶篇28

3.3同名不同目的函数31

3.4fun31

3.4.1以fun为参数的函数32

3.4.2返回fun的函数33

3.4.3定义你自己的抽象流程控制34

3.5简单的列表处理35

3.6列表解析38

3.6.1快速排序39

3.6.2毕达哥拉斯三元组40

3.6.3变位词40

3.7算术表达式41

3.8断言41

3.8.1断言序列42

3.8.2断言样例43

3.8.3true断言的使用44

3.8.4过时的断言函数44

3.9记录44

3.9.1创建和更新记录45

3.9.2从记录中提取字段值45

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

3.9.4记录只是元组的伪装46

3.10case/if表达式46

3.10.1case表达式47

3.10.2if表达式47

3.11以自然顺序创建列表48

3.12累加器48

第4章异常50

4.1异常50

4.2抛出异常51

4.3try...catch51

4.3.1缩减版本53

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

4.4catch54

4.5改进错误信息55

4.6try...catch的编程风格55

4.6.1经常会返回错误的程序55

4.6.2出错几率比较小的程序56

4.7捕获所有可能的异常56

4.8新老两种异常处理风格56

4.9栈跟踪57

第5章顺序型编程进阶58

5.1BIF58

5.2二进制数据58

5.3比特语法60

5.3.116bit色彩的封包与解包60

5.3.2比特语法表达式61

5.3.3高级比特语法样例62

5.4小问题集锦67

5.4.1apply68

5.4.2属性68

5.4.3块表达式71

5.4.4布尔类型71

5.4.5布尔表达式72

5.4.6字符集72

5.4.7注释72

5.4.8epp73

5.4.9转义符73

5.4.10表达式和表达式序列74

5.4.11函数引用74

5.4.12包含文件75

5.4.13列表操作符++和——75

5.4.14宏76

5.4.15在模式中使用匹配操作符77

5.4.16数值类型78

5.4.17操作符优先级79

5.4.18进程字典79

5.4.19引用80

5.4.20短路布尔表达式80

5.4.21比较表达式81

5.4.22下划线变量82

第6章编译并运行程序83

6.1开启和停止Erlang shell83

6.2配置开发环境84

6.2.1为文件加载器设定搜索路径84

6.2.2在系统启动时批量执行命令85

6.3运行程序的几种不同方法86

6.3.1在Erlang shell中编译运行86

6.3.2在命令提示符下编译运行86

6.3.3把程序当作escript脚本运行88

6.3.4用命令行参数编程89

6.4使用makefile进行自动编译90

6.4.1makefile模板90

6.4.2定制makefile模板92

6.5在Erlang shell中的命令编辑93

6.6解决系统死锁93

6.7如何应对故障93

6.7.1未定义/遗失代码94

6.7.2makefile不能工作94

6.7.3shell没有响应95

6.8获取帮助96

6.9调试环境96

6.10崩溃转储97

第7章并发98

第8章并发编程101

8.1并发原语101

8.2一个简单的例子102

8.3客户/服务器介绍103

8.4创建一个进程需要花费多少时间107

8.5带超时的receive109

8.5.1只有超时的receive109

8.5.2超时时间为0的receive109

8.5.3使用一个无限等待超时进行接收110

8.5.4实现一个计时器110

8.6选择性接收111

8.7注册进程112

8.8如何编写一个并发程序113

8.9尾递归技术114

8.10使用MFA启动进程115

8.11习题115

第9章并发编程中的错误处理116

9.1链接进程116

9.2on_exit处理程序117

9.3远程错误处理118

9.4错误处理的细节118

9.4.1捕获退出的编程模式119

9.4.2捕获退出信号(进阶篇)120

9.5错误处理原语125

9.6链接进程集126

9.7监视器126

9.8存活进程127

第10章分布式编程128

10.1名字服务129

10.1.1第一步:一个简单的名字服务130

10.1.2第二步:在同一台机器上,客户端运行于一个节点而服务器运行于第二个节点131

10.1.3第三步:让客户机和服务器运行于同一个局域网内的不同机器上132

10.1.4第四步:在因特网上的不同主机上分别运行客户机和服务器133

10.2分布式原语134

10.3分布式编程中使用的库136

10.4有cookie保护的系统136

10.5基于套接字的分布式模式137

10.5.1lib_chan137

10.5.2服务器代码138

第11章IRC Lite141

11.1消息序列图142

11.2用户界面143

11.3客户端程序144

11.4服务器端组件147

11.4.1聊天控制器147

11.4.2聊天服务器148

11.4.3群组管理器149

11.5运行程序150

11.6聊天程序源代码151

11.6.1聊天客户端151

11.6.2Lib_chan配置154

11.6.3聊天控制器154

11.6.4聊天服务器155

11.6.5聊天群组156

11.6.6输入输出窗口157

11.7习题159

第12章接口技术160

12.1端口161

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

12.2.1C程序162

12.2.2Erlang程序164

12.3open_port167

12.4内联驱动167

12.5注意170

第13章对文件编程172

13.1库的组织结构172

13.2读取文件的不同方法172

13.2.1从文件中读取所有Erlang数据项174

13.2.2从文件的数据项中一次读取一项174

13.2.3从文件中一次读取一行数据176

13.2.4将整个文件的内容读入到一个二进制数据中176

13.2.5随机读取一个文件176

13.2.6读取ID3标记177

13.3写入文件的不同方法179

13.3.1向一个文件中写入一串Erlang数据项179

13.3.2向文件中写入一行181

13.3.3一步操作写入整个文件181

13.3.4在随机访问模式下写入文件183

13.4目录操作183

13.5查询文件的属性184

13.6复制和删除文件185

13.7小知识185

13.8一个搜索小程序186

第14章套接字编程189

14.1使用TCP189

14.1.1从服务器上获取数据189

14.1.2一个简单的TCP服务器192

14.1.3改进服务器195

14.1.4注意196

14.2控制逻辑197

14.2.1主动型消息接收(非阻塞)197

14.2.2被动型消息接收(阻塞)198

14.2.3混合型模式(半阻塞)198

14.3连接从何而来199

14.4套接字的出错处理199

14.5UDP200

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

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

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

14.6向多台机器广播消息203

14.7SHOUTcast服务器204

14.7.1SHOUTcast协议205

14.7.2SHOUTcast服务器的工作机制205

14.7.3SHOUTcast服务器的伪代码206

14.7.4运行SHOUTcast服务器211

14.8进一步深入212

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

15.1表的基本操作214

15.2表的类型214

15.3ETS表的效率考虑215

15.4创建ETS表216

15.5ETS程序示例217

15.5.1三字索引迭代器218

15.5.2构造表219

15.5.3构造表有多快219

15.5.4访问表有多快220

15.5.5胜出的是……220

15.6DETS222

15.7我们没有提及的部分224

15.8代码清单225

第16章OTP概述228

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

16.1.1server 1:原始服务器程序229

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

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

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

16.1.5server 5:压轴好戏234

16.2gen_server起步236

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

16.2.2第二步:写接口函数237

16.2.3第三步:编写回调函数237

16.3gen_server回调的结构240

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

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

16.3.3调用和通知241

16.3.4发给服务器的原生消息241

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

16.3.6热代码替换242

16.4代码和模板243

16.4.1gen_server模板243

16.4.2my_bank245

16.5进一步深入246

第17章Mnesia:Erlang数据库247

17.1数据库查询247

17.1.1选取表中所有的数据248

17.1.2选取表中的数据249

17.1.3按条件选取表中的数据249

17.1.4从两个表选取数据(关联查询)250

17.2增删表中的数据250

17.2.1增加一行251

17.2.2删除一行251

17.3Mnesia事务252

17.3.1取消一个事务253

17.3.2加载测试数据255

17.3.3do()函数255

17.4在表中保存复杂数据256

17.5表的类型和位置257

17.5.1创建表258

17.5.2表属性的常见组合259

17.5.3表的行为260

17.6创建和初始化数据库260

17.7表查看器261

17.8进一步深入262

17.9代码清单262

第18章构造基于OTP的系统266

18.1通用的事件处理267

18.2错误日志270

18.2.1记录一个错误270

18.2.2配置错误日志270

18.2.3分析错误274

18.3警报管理275

18.4应用服务277

18.4.1素数服务277

18.4.2面积服务278

18.5监控树279

18.6启动整个系统282

18.7应用程序285

18.8文件系统的组织287

18.9应用程序监视器288

18.10进一步深入289

18.11我们如何创建素数290

第19章多核小引292

第20章多核编程294

20.1如何在多核的CPU上更有效率地运行295

20.1.1使用大量进程295

20.1.2避免副作用295

20.1.3顺序瓶颈296

20.2并行化顺序代码297

20.3小消息、大计算300

20.4映射—归并算法和磁盘索引程序303

20.4.1映射—归并算法303

20.4.2全文检索307

20.4.3索引器的操作308

20.4.4运行索引器309

20.4.5评论310

20.4.6索引器的代码310

20.5面向未来的成长311

附录A给我们的程序写文档312

附录BMicrosoft Windows环境下的Erlang环境316

附录C资源318

附录D套接字应用程序321

附录E其他335

附录F模块和函数参考351

索引415

……[看更多目录]

序言Erlang算不上是一种“大众流行”的程序设计语言,而且即使是Erlang的支持者,大多数也对于Erlang成为“主流语言”并不持乐观态度。然而,自从2006年以来,Erlang语言确实在国内外一批精英程序员中暗流涌动,光我所认识和听说的,就有不少于一打技术高手像着了魔一样迷上了这种已经有二十多年历史的老牌语言。这是一件相当奇怪的事情。因为就年龄而言,Erlang大约与Perl同年,比C++年轻四岁,长Java差不多十岁,但Java早已经是工业主流语言,C++和Perl甚至已经进入其生命周期的下降阶段。照理说,一个被扔在角落里二十多载无人理睬的老家伙合理的命运就是坐以待毙,没想到Erlang却像是突然吃了返老还童丹似的在二十多岁的“高龄”又火了一把,不但对它感兴趣的人数量激增,而且还成立了一些组织,开发实施了一些非常有影响力的软件项目。这是怎么回事呢? 。

根本原因在于Erlang天赋异禀恰好适应了计算环境变革的大趋势:CPU的多核化与云计算。

自2005年C++标准委员会主席Herb Sutter在Dr。Dobb’s Journal上发表《免费午餐已经结束》一文以来,人们已经确凿无疑地认识到,如果未来不能有效地以并行化的软件充分利用并行化的硬件资源,我们的计算效率就会永远停滞在仅仅略高于当前的水平上,而不得动弹。因此,未来的计算必然是并行的。Herb Sutter本人曾表示,如果一个语言不能够以优雅可靠的方式处理并行计算的问题,那它就失去了在21世纪的生存权。“主流语言”当然不想真的丧失掉这个生存权,于是纷纷以不同的方式解决并行计算的问题。就C/C++而言,除了标准委员会致力于以标准库的方式来提供并行计算库之外,标准化的OpenMP和MPI,以及Intel的Threading Building Blocks库也都是可信赖的解决方案,Java在5.0版中引入了意义重大的concurrency库,得到Java社区的一致推崇,而微软更是采用了多种手段来应对这一问题:先是在.NET中引入APM,随后又在Robotics Studio中提供了CCR库,最近又发布了Parrallel FX和MPI.NET,可谓不遗余力。然而,这些手法都可以视为亡羊补牢,因为这些语言和基础设施在创造时都没有把并行化的问题放到优先的位置来考虑。与它们相反,Erlang从其构思的时候起,就把“并行”放到了中心位置,其语言机制和细节的设计无不从并行角度出发和考虑,并且在长达二十年的发展完善中不断成熟。今天,Erlang可以说是为数不多的天然适应多核的可靠计算环境,这不能不说是一种历史的机缘。

文摘插图:

Erlang程序设计(图灵程序设计丛书)(Programming Erlang software for a concurrent world)

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有