Erlang程序设计05

第一章 引言

  哦,不!别再来一种编程语言了!我一定要再学另外一种语言吗?现在的这些难道还不够吗?我能理解你的反应。程序语言浩如烟海,再学一种理由何在?

学习Erlang的理由,可列出如下5条。

    希望编写能够在多核计算机上运行更快的程序。

    希望编写不停机即可修改的可容错程序。

    希望尝试传闻中的“函数式语言”是否切实可行。

    希望使用一种语言,它即在大规模工业产品中经过实践检验,又不乏优秀的类库与活跃的社区。

    不希望在冗长繁琐的代码中耗费时间。

  我们能够如愿以偿吗?在20.3节中,我们会看到一些能够在32核计算机上以线性增速运行的程序。在第18章中,我们将会关注如何构造可以精力数年全天候运行的高速可靠新个系统。在16.1节中,我们还将讨论编写服务器技术的程序的技术,这些服务器程序可以在不停机的情况下更新软件。

  很多时候,我们会不断地夸耀函数式语言的各种长处。函数式语言禁止代码具有“副作用”,副作用与并发水火不相容。你要么编写有副作用的顺序代码,要么编写无副作用的并发代码。在这两者之间你必须选择,没有中间情况。

  Eralng的并发特性源自语言本身而非操作系统。他把现实世界模拟成一系列的进程,其间仅靠消息进行互动,由此Erlang简化了并行编程。在Erlang世界中,存在并行进程但是没有锁,没有同步方法,也不存在共享内存污染的可能,因为Erlang根本而没有共享内存。

  Erlang程序可以由几百万个超票轻量级的进程组成。这些进程可以运行在单处理器、多核处理器或者处理器网络上。

1.1 路线图

    第二章让你能对Eralng快速起步

    第三章是有关顺序型编程的第一章。他介绍了模式匹配和非破坏性赋值的概念。

    第四章是异常处理。程序总是免不了出错。该章讲述了Erlang顺序型编程中错误的侦测和处理。

    第五章是有关顺序编程的第二章。他从一些高级的主题开始,涵盖了顺序型编程的其他所有细节。

    第六章主要讲述了编译和运行程序的多种不同方法。

    第七章开始新话题。这是一个非技术型章节,主要讨论两个问题:“这种编程方式背后的思想是什么”以及“如何用Erlang的视角来看待世界。”

    第八章主要讲述并发性。如何创建Eralng中的并行进程?如何处理进程间的通信?创建一个并行进程有多快?

    第九章讨论了并行程序序中的错误。当一个进程错误退出时会发生什么?如何检测进程错误,又该如何处理?

    第十章开始讲述分布式编程。在这一章我们会写几个小型分布式程序,来展示如何在Eralng集群节点或者使用基于套接字分布式模型的独立主机上运行他们。

    第十一章是一个纯应用的章节。我们会把并发和基于套接字分布的主题与我们的第一个不平凡的应用紧密联系起来。构造一个迷你的IRC客户/服务器程序。

    第十二章介绍如何将Erlang与外部程序语言衔接起来。

    第十三章给出了几个与文件有关的编程例子。

    第十四章展现如何使用套接字进行编程。我们会看到如何在Erang中构建顺序和并行的服务器。该章的最后部分给出了两个颇具规模的应用:SHOUTcast服务器。这是一个流媒体服务器,他可以用SHOUTcast协议来流化MP3数据。

    第十五章描述了ets和dets两个底层模块。ets模块主要用于快速、可更改的、内存散列表操作,dets则专门针对低级磁盘的存储。

    第十六章专门介绍了OTP。OTP是一批Erlang库和操作过程的总称,用来构建具有工业规模的Erlang应用。该章介绍了行为(behavior,一种OTP的核心概念)思想。通过行为,我们我们可以着眼于模块的功能性分布,而让框架去处理问题的非功能性部分。比如说,框架关心应用的容错和可伸缩性,而行为的回调函数则集中处理细节问题,该章首先概要地论述了如何构建你自己的行为,然后建议不地深入描述作为Eralng标准库一部分的gen_server行为。

    第十七章讨论了Erlang数据库管理系统(DBMS)Mnuesia。Mnesia是一个内建继承数据库管理系统,他极为快速且拥有软实时的响应速度。可以通过配置来让他在数个分散的物理节点上复制数据,从而提供容错功能。

    第十八章再次讨论了OTP。他涵盖了拼接OTP应用所设计的各个实践性层面。实际应用程序中充斥了大量零散的细节,他们必须以一种互相协调的方式来启动和关闭。如果他们自身或者他们的子模块崩溃,就必须重新启动。我们需要依靠错误日志来找出在崩溃前后到底发生了什么。这一章讲述了打造一个真正成熟的OTP应用程序所需要的实质性细节。

    第十九章简要介绍了为什么说Eralng是为多核CPU计算机编程量身定做的。我们将该略的讨论共享内存并发和消息传递并发,并探究为何我们坚信无可变状态且支持并发的语言是切合多核编程的理想选择。

    第二十章讲述多核编程。我们会讨论确保在多核计算机上使得Erlang程序高效运行的各种技术。为在多核计算机上加速顺序型程序,我们会引入一系列与之先关的抽象原则。最后我们会对优化的效果执行一些测量,然后开发第3个主要程序:一个全文检索引擎。为此我们会首先实现mpreduce函数,这是一个高阶函数,可以对一群处理元素进行并行化计算。

    附录A讲述了用于撰写Erlang行数文档的类型系统

    附录B讲述了如何在Windows系统上建立Eralng(以及如何在所有操作系统上配置Emacs)。

    附录C列出了Erlang资源列表

    附录D讲述了Lib_chan,一个用于编写急于套接字分布的库。

    附录E关注与代码的分析、优化、调试和跟踪。

    附录F简要地接受哦啊了Eralng标准库中最常用的模块。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值