孟岩谈Erlang:并行计算和云计算

孟岩谈Erlang:并行计算和云计算

——写在Erlang程序设计》出版之际

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

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

2005C++标准委员会主席Herb SutterDr. Dobb’s Journal上发表《免费午餐已经结束》一文以来,人们已经确凿无疑地认识到,如果未来不能有效地以并行化的软件充分利用并行化的硬件资源,我们的计算效率就会永远停滞在仅仅略高于当前的水平上,而不得动弹。因此,未来的计算必然是并行的。Herb Sutter本人曾表示,如果一个语言不能够以优雅可靠的方式处理并行计算的问题,那它就失去了在21世纪的生存权。“主流语言”当然不想真的丧失掉这个生存权,于是纷纷以不同的方式解决并行计算的问题。就C/C++而言,除了标准委员会致力于以标准库的方式来提供并行计算库之外,标准化的OpenMPMPI,以及IntelThreading Building Blocks库也都是可信赖的解决方案;Java5.0版中引入了意义重大的concurrency库,得到Java社区的一致推崇;而微软更是采用了多种手段来应对这一问题:先是在.NET中引入APM,随后又在Robotics Studio中提供了CCR库,最近又发布了Parrallel FXMPI.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

转载于:https://www.cnblogs.com/turingbooks/archive/2008/10/23/1318031.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305140.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php获取域名方法,PHP实现获取域名的方法小结

文章主要介绍了PHP实现获取域名的方法,实例总结了常见的获取域名的方法,非常具有实用价值,需要的朋友可以参考下。方法一(用 系统变量)复制代码 代码如下://缺点不使用传递过来的地址和不支持系统变量的主机echo $_SERVER[HTTP_HOST];方法二(用自带函数)复制代码 代码如下:$url…

逻辑回归算法背后的数学

看完Andrew Ng老师的机器学习公开课后,对于逻辑回归部分,打算写篇学习笔记记录总结一下,也和大家共同分享。 1 基本思能 逻辑回归(Logistic Regression)和线性回归(Linear Regression)的模型和原…

配置DNS辅助服务器:DNS系列之四

配置DNS辅助服务器在前面的博文中,我们介绍了如何在DNS服务器中创建常用的DNS记录,本文中我们要为大家介绍如何配置DNS的辅助服务器,同时也要介绍一下和辅助区域类似的存根区域。DNS辅助服务器是一种容错设计,考虑的是一旦DNS主服…

笑出腹肌的程序猿搞笑趣图

客户需求 vs 最终产品 requirements vs. implementation 程序员的一天 The Programmers life 寂寞的时候干什么? 写程序写程序写程序 失恋的时候干什么? 写程序写程序写程序 发骚的时候干什么? 写程序写程序写程序 剩下的时候干什么&#xff…

Java图形 图像与多媒体基础,十一. 图形、图像与多媒体1.绘图基础

要在平面上显示文字和绘图,首先要确定一个平面坐标系。Java语言约定,显示屏上一个长方形区域为程序绘图区域,坐标原点(0,0)位于整个区域的左上角。一个坐标点(x,y)对应屏幕窗口中的一个像素,是整数。如图12.1所示。窗口大小由超文…

程序员快来看!经典代码替你省去多少时间?

作为一名程序员,每天坐在电脑前敲敲打打那些重复重复再重复的语句,习惯性的思维总是被套进去,有些时候很容易把简单的事情想复杂了!不过,我们反其道而行之,新手们只要是把下面的语句牢记,很多情…

php中sql删除,学习猿地-php sql删除语句是什么

php sql删除语句是“DELETE FROM”,该语句用于从数据库表中删除行,其语法是“DELETE FROM table_name WHERE column_name some_value”。PHP MySQL Delete FromDELETE FROM 语句用于从数据库表中删除行。删除数据库中的数据DELETE FROM 语句用于从数据库…

一张图看懂新一代人工智能知识体系

关于人工智能的前世今生、内涵意义,下图可以说是相当清楚全面了。人工智能是未来一大热点,连腾讯、阿里、百度这些科技公司都各自成立了人工智能实验室,如果你也看好这一趋势,不妨把这张图收藏起来慢慢看。 来源:智能…

android java 面试题,Android java 高级面试题库

(一) java基础面试知识点1,java中和equals和hashCode的区别?1、“”是运算符,用来比较两个值、两个对象的内存地址是否相等。2、“equals()”:equals是Object类的方法,默认情况下比较两个对象是否是同一个对象&#xf…

促进新一代人工智能产业发展三年行动计划_工信部新一代人工智能产业创新重点揭榜任务——中国联通智能化网络基础设施及开放平台启动会成功召开...

4月2日,工信部新一代人工智能产业创新重点揭榜任务(下称“人工智能重点揭榜任务”)——中国联通智能化网络基础设施及开放平台在线启动会成功召开。来自中国联通网络技术研究院、联通集团智能网络中心网络AI中心、中国联通智能城市研究院、广东联通、中讯邮电咨询设…

数学家破解婚恋网站配对程序,90天找到灵魂伴侣

找个合适或者善良的另一半比什么都强,谁说搞技术的情商低?他们可以靠高超的技能来弥补,照样能找到优秀的灵魂伴侣! 凌晨三点,在加州大学洛杉矶分校(UCLA)数学系大楼五楼的一个拥挤小隔间里&…

Appointment over SMS on Windows Mobile

设想这样一个场景,早上出门的时候,手机里一个Appointment提醒弹了出来,恰好昨天还没有来得及通知参与该会议的几个重要成员,而这时候身边又没有可以接入的Wi-Fi。这时,给成员们发送一条短信提醒一下,也算是…

oracle grid需要安装,Oracle 11g Grid for Linux安装指南

Oracle 11g Grid for Linux安装指南1、创建oracle用户及用户组groupadd oinstallgroupadd dbauseradd -g oinstall -G dba -m oracle设置oracle用户的口令:passwd oracle我这里设置为oracle2、创建相关目录mkdir -p /u01chown -R oracle.oinstall /u013、修改oracle用户环境变量…

uc3842开关电源电路图_UC3842 的原理及应用详解 (上)

▲ 点击上方 21Dianyuan 关注我们本文是 21Dianyuan 社区 原创 技术文章,作者伟林电源,感谢作者的辛苦付出。 UC3842内部工作原理图1 示出了 UC3842 内部框图和引脚图。图1 UC3842 内部原理框图UC3842 采用固定工作频率脉冲宽度可控调制方式,…

谁的代码注释我都不服,就服你的!

什么是代码注释,如何在代码中添加注释,相信每一位了解编程的人并不陌生。注释里往往有很多有趣的脑洞和「真心话」。今天我们一起去看看那些6到飞起,被玩坏了的幽默注释吧。 信息量太大的注释系列—— 01 你造么?我是菜鸟&#xf…

墨迹天气语音包_小米有品“智能AI翻译机”评测,还内置了语音助手,随身WiFi功能...

出国旅游时,我们需要面对的最大问题应该就是言语沟通了,毕竟想要掌握一门新的语言不是什么容易的事情。近期,小米科技旗下的小米有品平台上线了一款新品:Langogo智能AI翻译机,对于想出国游玩或工作的朋友们而言&#x…

如何解读决策树和随机森林的内部工作机制?

随机森林在过去几年里得到了蓬勃的发展。它是一种非线性的基于树的模型,往往可以得到准确的结果。但是,随机森林的工作过程大都处于黑箱状态,往往难以解读和完全理解。近日,Pivotal Engineering Journal 网站发表了一篇文章&#…

sql datetime 排序_超全的数据库建表/SQL/索引规范,建议贴在工位上!

作者:浮雷来源:juejin.im/post/6871969929365553165「背景」因为工作岗位的原因,负责制定了关于后端组数据库的规约规范,作为所有产品线的规范,历经几版的修改,最终形成下边的文本。规范在整个后端执行也有…

有了它,从此成为自带BGM的主角~

有了它 自带BGM不是事儿 这还是一篇卖货的文章 welcome 炎热的夏天,一场雷阵雨也浇灭不了的躁动,何不来点音乐啤酒,点燃内心的蠢蠢欲动, 放肆的音乐节奏,张扬的夏日心情。 然而单独用手机音乐播放器听,单薄…

oracle导入视图报错,exp/imp 报错处理(EXP-00003 / IMP-00019 / IMP-00058)

MOS 文章参考OERR: EXP 3 "no storage definition found for segment(%lu, %lu)" (文档 ID 21599.1)EXP-00003 When Exporting From 9.2.0.5.0 Or Any Higher Release With A Pre-9.2.0.5.0 Export Client (文档 ID 274076.1)一、EXP 导出报错(数据库版本 11.2.0.4.0…