<!----><!----><!---->
<!---->
孟岩谈
Erlang
:并行计算和云计算
——写在
《
Erlang
程序设计》
出版之际
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
可以说是为数不多的天然适应多核的可靠计算环境,这不能不说是一种历史的机缘。
中国互动出版网首发:
http://www.china-pub.com/301677
另一个可能更加迫切的变革,就是云计算。
Google
的实践表明,用廉价服务器组成的服务器集群,在计算能力、可靠性等方面能够达到价格昂贵的大型计算机的水准,毫无疑问,这是大型、超大型网站和网络应用梦寐以求的境界。然而,要到达这个境界并不容易。目前一般的网站为了达成较好的可延展性和运行效率,需要聘请有经验的架构师和系统管理人员,手工配置网络服务端架构,并且常备一个高水准的系统运维部门,随时准备处理各种意外情况。可以说,虽然大多数
Web
企业只不过是想在这些基础设施上运行应用而已,但仅仅为了让基础设施正常运转,企业就必须投入巨大的资源和精力。现在甚至可以说,这方面的能力成了大型和超大型网站的核心竞争力。这与操作系统成熟之前人们自己动手设置硬件并且编写驱动程序的情形类似——做应用的人要精通底层细节。这种格局的不合理性一望便知,而解决的思路也是一目了然——建立网络服务端计算的操作系统,也就是类似
Google
已经建立起来的“云计算”那样的平台。所谓“云计算”,指的是结果,而当前的关键不是这个结果,而是作为手段的“计算云”。计算云实际上就是控制大型网络服务器集群计算资源的操作系统,它不但可以自动将计算任务并行化,充分调动大型服务器集群的计算能力,而且还可以自动应对大多数系统故障,实现高水平的自主管理。计算云技术是网络计算时代的操作系统,是绝对的核心技术,也正因此,很多赫赫有名的中外大型
IT
企业都在不惜投入巨资研发计算云。包括我在内的很多人都相信,云计算将不仅从根本上改变我们的计算环境,而且将从根本上改变
IT
产业的盈利模式,是真正几十年一遇的重大变革,对于一些企业和技术人员来说是重大的历史机遇。恰恰在这个主题上,
Erlang
又具有先天的优势,这当然也是归结于其与生俱来的并行计算能力,使得开发计算云系统对于
Erlang
来说格外轻松容易。现在
Erlang
社区已经开发了一些在实践中被证明非常有效的云计算系统,学习
Erlang
和这些系统是迅速进入这个领域并且提高水平的捷径。
由此可见,
Erlang
虽然目前还不是主流语言,但是有可能会在未来一段时间发挥重要的作用,因此,对于那些愿意领略技术前沿风景的“先锋派”程序员来说,了解和学习
Erlang
可能是非常有价值的投资。即使你未来不打算使用
Erlang
,也非常有可能从
Erlang
的设计和
Erlang
社区的智慧中得到启发,从而能够在其他语言的项目中更好地完成并行计算和云计算相关的设计和实现任务。再退一步说,就算只是从开启思路、全面认识计算本质和并行计算特性的角度出发,
Erlang
也值得了解。所以,我很希望这本书在中国程序员社区中不要遭到冷遇。
本书是由
Erlang
创造者
Joe Armstrong
亲自执笔撰写的
Erlang
语言权威参考书,原作以轻松引导的方式帮助读者在实践中理解
Erlang
的深刻设计思路,并掌握以
Erlang
开发并行程序的技术,
在技术图书中属于难得的佳作。两位译者我都认识,他们都是技术精湛而思想深刻的“先锋派”,对
Erlang
有着极高的热情,因此翻译质量相当高,阅读起来流畅通顺,为此书中译本添色不少。有兴趣的读者集中一段时间按图索骥,完全有可能就此踏上理解
Erlang
、应用
Erlang
的大路。
孟岩
CSDN
首席分析师兼《程序员》杂志技术主编
2008
年
10
月
分享到:
相关推荐
他的作品《孟岩谈Erlang:并行计算和云计算》详细解读了Erlang在这些领域的应用,涵盖了语言基础、并发模型、分布式系统设计以及实际案例分析,是学习Erlang和理解其在现代计算领域应用的重要参考资料。 综上所述,...
内容概要:本文档详细介绍了Erlang编程语言及其并行编程模型,并重点阐述了Erlang OTP框架的特性和应用场景。首先,文档简述了Erlang语言的特点,包括轻量级进程、模式匹配和热代码升级等特性,以及它在构建高可用、...
Erlang:RabbitMQ 是用 Erlang 编写的,因此需要 Erlang 运行时。确保安装了兼容的 Erlang 版本;Erlang:RabbitMQ 是用 Erlang 编写的,因此需要 Erlang 运行时。确保安装了兼容的 Erlang 版本;Erlang:RabbitMQ ...
Introducing Erlang: Getting Started in Functional Programming by Simon St. Laurent English | 6 Mar. 2017 | ASIN: B06XHSP5SH | 212 Pages | AZW3 | 1.85 MB If you’re new to Erlang, its functional style...
Erlang OTP 19_win64是一款专为Windows 64位系统设计的Erlang软件开发工具包,它包含Erlang编程语言和OTP(Open Telecom Platform)框架。Erlang是一种强大的、动态类型的函数式编程语言,特别适合构建高可用性、...
9. **实时性与并发性**:Erlang的实时性使其在通信、物联网(IoT)和云计算等领域具有优势,因为这些领域需要快速响应和大规模并发处理能力。 通过对以上知识点的学习和实践,开发者可以利用Erlang的强大功能来创建高...
### Erlang与云计算知识点概述 #### 一、Erlang编程语言 **1.1 阶乘函数实现** 在Erlang中,阶乘函数可以通过...同时,结合上述提到的开源项目,我们可以看到Erlang已经成功地被用于构建多种云计算相关的系统和服务。
erlang 云计算erlang 云计算erlang 云计算
它允许开发者构建出能够优雅处理错误和异常的分布式系统,这是Erlang在高可用性和容错性领域中的强大之处。然而,使用`link`也需要注意,不当的链接可能导致进程意外退出,因此在设计系统时应谨慎考虑进程间的链接...
Erlang B和Erlang C是电信领域中两种重要的流量模型,用于预测和分析通信系统中的呼叫处理能力和拥塞情况。这两个模型由丹麦工程师Agner Krarup Erlang在20世纪初提出,至今仍广泛应用于现代通信网络的设计与优化。 ...
6. **并行算法**:书中可能包含实例,演示如何使用Erlang实现高效的并行算法,提升计算性能。 《Erlang入门手册》则可能包含以下基础内容: 1. **Erlang语法**:涵盖基本的变量、数据类型(如原子、列表、元组和二...
Erlang零成本实现云计算,为初学者提供参考和学习,并为企业建设云提供帮助
5. **语言和库更新**:Erlang的新版本通常会包含语言特性的增强和库的更新,这些改进可能会间接影响到RabbitMQ的性能和功能。 在安装这两个软件时,首先需要下载Erlang的erlang_24.2.exe文件,安装后才能运行...
在本文中,我们将深入探讨如何在CentOS 7系统上安装RabbitMQ,这是一个流行的开源消息代理和队列管理器。RabbitMQ基于Erlang编程语言,因此在安装RabbitMQ之前,我们需要先安装Erlang环境。本文将涵盖以下几个关键...
Erlang零成本实现云计算.pptx
win64位系统 。 erlang24.2.2。
Erlang零成本实现云计算讲义.pptx
2. **分布式计算**:Erlang的BEAM虚拟机支持节点间的通信和数据共享,这使得构建分布式游戏服务器成为可能。在大型游戏中,服务器可以分布在不同的物理机器上,提高系统的可扩展性和容错性。 3. **热更新与容错**:...
Erlang/OTP 19.1 is a service release containing mostly bug fixes, as well as a number of new features and characteristics improvements. Some highlights of the release are: erts: Improved dirty ...