请输入您要查询的百科知识:

 

词条 Erlang标准编程指南
释义

基本信息

原书名:ERLANG Programming

原出版社: O'Reilly Media

作者:Francesco Cesarini Simon Thompson

译者:慕尼黑Isar工作组 杨剑

丛书名: 北京华章图文信息有限公司O'Reilly系列

出版社:机械工业出版社

ISBN:9787111303251

出版日期:2011 年3月

开本:16开

页码:444

版次:1-1

内容简介

《erlang编程指南》是对erlang语言的深入介绍。erlang是任何必须并发、容错和快速响应的环境的理想编程语言。随着多核处理器及其针对并发的新的可扩展方式的发展,erlang得到了广泛的使用。通过本书,你将学会如何使用erlang编写复杂的并发程序,不管你是否有编程背景和经验。

本书由国际知名的erlang社区领导者根据他们的培训材料编写而成。本书的重点集中在解释erlang的语法和语义,并且介绍了其模式匹配、规范列表、递归、调试、网络和并发性等内容。

《erlang编程指南》可以帮助你:

·理解erlang的强大功能及其包含的特殊功能。

·学习并发背后的概念以及erlang处理并发的方式。

·编写高效的erlang程序并保持代码整洁和良好的可读性。

·探究erlang如何满足分布式系统的要求。

·轻松添加简单的图形用户界面。

·学习erlang的跟踪机制以调试并发和分布式系统。

·使用内置的mnesia数据库和其他表存储功能。

《erlang编程指南》每章末尾都提供了练习题,并且由简单的示例贯穿全书。

作译者

Francesco Cesarini 14年来一直向学生、开发人员、测试人员、项目和技术经理教授Erlang/OTP技术。他协助在爱尔兰、美国和英国建立起了Erlang开发中心。

Simon Thompson是一位肯特大学计算机实验室的逻辑和计算学教授,在过去25年里,他在那里教授本科生和研究生的计算学课程。

目录

《erlang标准编程指南》

序 1

前言 3

第1章 引言 9

为什么我应该使用erlang 9

erlang语言的历史及发展 11

erlang的特性 12

erlang和多核 17

案例研究 18

应该如何使用erlang 21

第2章 erlang基础 22

整数 22

erlang终端 23

浮点数 23

基元 25

布尔类型 27

元组 28

列表 29

项元比较 34

变量 36

复杂数据结构 38

模式匹配 40

函数 44

模块 46

练习 50

第3章 erlang顺序编程 52

条件评估 52

保护元 57

内置函数 60

递归 66

运行时错误 75

处理错误 77

模块库 84

调试器 87

练习 90

第4章 并发编程 95

创建进程 96

消息传递 98

接收消息 100

注册进程 107

超时 110

性能基准测试 111

进程架构 112

尾递归和内存泄漏 113

面向并发程序设计的个案研究 115

竞争条件、死锁和饥饿进程 116

进程管理器 118

练习 119

第5章 进程设计模式 121

客户端/服务器模型 122

进程模式实例 128

有限状态机 130

事件管理器和句柄 134

练习 141

第6章 进程错误处理机制 143

进程链接和退出信号 143

健壮性系统 152

练习 158

第7章 记录和宏 161

记录 162

宏 168

练习 172

第8章 软件升级 175

升级模块 175

幕后 178

升级过程 184

erlang文件 188

练习 188

第9章 更多数据类型和高级别构造 190

实践中的函数式编程 190

funs和高阶函数 191

列表解析 198

二进制类型和序列化 202

引用 211

练习 212

第10章 ets和dets表 214

ets表 214

dets表 228

移动用户数据库实例 231

练习 242

第11章 erlang中的分布式编程 244

erlang中的分布式系统 244

erlang中的分布式计算:基础 246

epmd进程 259

练习 260

第12章 otp行为包 261

otp行为包介绍 261

通用服务器 264

监控进程 274

应用 278

版本发行的处理 284

其他行为包和更多阅读资源 287

练习 288

第13章 mnesia介绍 290

何时使用mnesia 290

配置mnesia 292

事务处理 296

分区网络 301

扩展阅读 302

练习 303

第14章 图形用户界面编程wxerlang 305

wxwidgets 305

wxerlang:wxwidgets绑定到erlang 306

第一个实例:microblog 309

miniblog实例 313

获取和运行wxerlang 316

练习 317

第15章 套接字编程 319

用户数据报协议 319

传输控制协议 323

inet模块 328

扩展阅读 329

练习 330

第16章 erlang与其他编程语言接口 332

交互运作概况 332

与java交互运作 334

c节点 339

unix终端的erlang调用:erl_call 343

端口程序 343

通信支持库 347

内联驱动程序和ffi 349

练习 350

第17章 跟踪内置函数,dbg跟踪器以及匹配规则 351

引言 351

跟踪内置函数 352

用trace_pattern内置函数跟踪调用 358

dbg跟踪器 362

匹配规则:fun语法 370

匹配规则:螺母和螺栓 379

扩展阅读 387

练习 388

第18章 类型和文档 390

erlang中的类型 390

typer: 成功类型和类型推断 394

使用edoc生成文档 397

练习 405

第19章 eunit和测试驱动开发 406

测试驱动开发 406

eunit 407

eunit的基础架构 411

测试基于状态的系统 413

在erlang中测试并发程序 414

练习 415

第20章 风格和效率 417

应用和模块 417

进程和并发 422

格式约定 425

编码策略 431

效率 433

最后 437

附录 使用erlang 439

前言

促使我们写这本书的主要原因是出于对分享Erlang的热衷。希望我们的工作能对Erlang的学习者有所帮助,这也是我们对Erlang社区给予的一点儿回报。虽然我们两个是出于不同目的而开始学习Erlang的,但结果都是一样:通过付出比学习其他语言更多的努力而获得了更多的乐趣。最妙的是,它不仅仅是以娱乐为目的的工具,而是每天我们工作时都在使用它!

Francesco: 为什么使用Erlang

那是在1994年,我正在Uppsala大学学习计算机科学,我参加的课程之一是并行程序设计。讲师举着“Erlang并行程序设计”(Prentice Hall)第1版,说道:“阅读它吧。”然后他举起讲义又说道,“还有做练习。”之后Erlang就很少被提及。它很快隐没在线程、内存共享、信号量和死锁的理论中。

该课程的主要练习是设计一个模拟胡萝卜、兔子和狼共同居住的环境。在这个环境中,兔子随机在土地上寻找生长的胡萝卜。如果它们吃了足够多的胡萝卜,就会变胖并且由一只分裂为两只。在这个环境中,狼搜寻兔子,如果狼吃了足够多的兔子,也会变胖并且由一只分裂为两只。如果兔子和狼靠近到了一定的距离,就会彼此发布食物和掠食者的消息。如果一只兔子发现了一片生长胡萝卜的土地,其他兔子也会很快知道这个地方。如果狼一旦发现了兔子,马上就开始追逐它。

最后的结果很有趣。一只古怪的兔子直接跑进了狼群,而其他的兔子跑向了其他方向,有时在发现胡萝卜的地方停下来进食。每一块胡萝卜地、每一只兔子和狼都代表了一个Erlang进程,它们之间通过消息传递进行通信。

这个练习花了我大约40个小时。虽然当时我就很喜欢使用Erlang,并且惊讶于Erlang并发模型的简易性和每个进程对操作系统线程极少的占用,但是当时并没有很重视它。毕竟Erlang也只是我为了得到学位而学习的几门语言之一。我在函数式编程中使用了机器语言,并且在实时程序设计中使用了ADA。Erlang对于我来说只是众多语言中的一种。在几个月后,当我开始学习面向对象程序设计时,这一观点得到了改观。

在面向对象程序设计课程中,我们需要模拟同一个环境,不过这一次用Eiffel语言——一种面向对象语言,我们的新讲师认为它极其适合此类模拟。尽管我已经解决过这个问题,可以直接重用其中某些算法,但我还是花费了大约120个人一时来解决它。

这使我惊讶地意识到Erlang的声明性语言和并行处理的特性是软件开发的新方向。当时,我并不确定编程语言是否会向Erlang模式转移,但是我相信,不管是哪种编程语言,将来一定会深受Erlang和它的先驱者的影响。于是我拿起电话打给Joe Armstrong——Erlang的创造者之一。一个星期之后,我拜访了爱立信的计算机科学实验室,从此我再没有回头。

Simon:为什么使用Erlang

我是在20世纪80年代早期开始进行函数式编程工作的,而在Erlang问世20年后才知道它的存在。Erlang最吸引我的地方是,它是为解决实际和复杂问题而设计的,并且通过一种优雅且极其有效的方式解决它们。这也正是近几年人们越来越多地把Erlang应用到的各种系统上的原因。

与Java、C++或Haskell语言相比,Erlang还是一种规模较小的语言,这也使得在Erlang上编写工具更具实用价值。这一点,还有我们在工作中所使用的库的质量,帮助在Kent工作的函数式程序设计组更加有效地为Erlang实现Wrangler重构工具。

谁应该阅读本书

我们写这本书的目的是向你介绍如何使用Erlang进行程序设计。我们并不要求你曾经使用过Erlang,或者熟悉其他函数式编程语言。

我们的确希望你已经拥有Java、C、Ruby或其他编程语言的经验,并且会特别指出Erlang与你所使用的其他语言的不同之处。

怎样阅读本书

我们把这本书分成两部分,第一部分需要顺序阅读,第二部分可以并行(或按照你喜欢的顺序)阅读,因为后一部分各章之间互相独立。

前11章包含了Erlang的核心部分:

·第1章概要介绍了这门语言,其中包含Erlang对于建立高效、健壮的并发系统的关键特性。我们还介绍了Erlang是如何发展到今天这种形式的,并且指出应用Erlang的成功实例,这些实例也就解释了为什么你也许会在你的项目中使用Erlang。

·第2章和第3章包含了在Erlang中的顺序编程的基础知识。在这两章中,我们介绍了Erlang程序设计的核心之一——递归,并且还介绍了Erlang中的单一赋值与C和Java等语言中的变量处理的不同。

·在包含顺序编程的同时,我们也介绍了Erlang的基本数据类型——数字、基元、字符串、列表和元组——并与其他语言的相似类型进行了比较。其他类型的介绍包含在稍后的各章中:记录类型在第7章,函数类型和二进制类型在第9章,ETS表中的大规模的存储在第10章中介绍。

序言

Erlang是我们提供的解决方案,用于解决高并发和分布式“软实时系统”编程中三个方面的问题:

·能够快速且高效地开发软件。

·能够应对各种软件错误和硬件故障。

·能够实现软件的热升级,也就是不停止运行而完成升级。

Erlang刚“发明”的时候主要应用于电信系统。但是,今天大量的应用系统也有这样的需求,并且Erlang已经应用于各种系统,比如各种不同的分布式数据库、财务系统和聊天服务器等。最近由于适合在多核处理器上使用,人们对Erlang的兴趣再次被点燃。当整个世界还在苦苦努力寻找方法以提高使用多核处理器效率的时候,使用Erlang的应用实际上不需要任何改动就可以享受到多核处理器的好处。

一开始Erlang的影响扩展得比较缓慢,也许是因为Erlang一下就大胆引进了函数式编程、轻量级并发性、异步消息传递和独特的故障处理方法等,并且集所有这些功能于一身。显而易见,这就是为什么Ja va作为一种和C++比较相近的语言,却可以相对容易地被大众接受。然而,因为已经达到了前面提到过的目标,我们认为我们的方法经受住了时间的考验。所以目前Erlang的应用也在迅猛增长。

这本书对Erlang进行了精彩和实用的讲解,并结合了大量逸闻趣事来阐述Erlang语言的发展背景和理念。

我相信,这会是一次愉快的、收获颇丰的阅读。

——Mike Williams

Director of Traffic and Feature Software

Product Development Unit WCDMA, Ericsson AB

Erlang语言发明人之一

媒体评论

“即便我已经使用Erlang多年,在编程的时候仍然需要参考《Erlang编程指南》。不同层次的Erlang程序员都会发现本书是有价值的学习和参考资料。”

——Steve Vinoski,《IEEE Internet Computing》专栏作家

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/12/23 6:10:54