What's all this fuss about Erlang?
What's all this fuss about Erlang?
原文: http://www.pragprog.com/articles/erlang
作者: Joe Armstrong
译者:许式伟 朱照远没人可以预言未来,但我却打算做一些有依据的推测。
让我们假设 Intel 是正确的,而且 Keifer 项目会获得成功。如果是这样,那么 32 核的处理器在 2009/2010 年就将会出现在市场上。
这毫不奇怪, Sun 已经制造出了 Niagara ,它拥有 8 个核,每个核运行 4 个超线程(这相当于 32 个核)。这是一个令 Erlang 程序员欢呼雀跃的进展。为此,他们已经等待了 20 年,现在,是获得回报的时候了。
对于 Erlang 程序员来说,好消息是:
[quote]你的 Erlang Erlang Erlang 程序在 N 核的处理器上运行将快 N 倍。
这是真的吗?
差不多吧。尽管为时尚早,但我们仍很乐观(相当地乐观,在过去的 20 年里,我从来没见过如此的乐观!)。
有时我们需要对我们的程序作点小调整 ―― 当我在一台 Sun Niagara 机器(拥有相当于 32 个核)上生成 Erlang 文档时,我把我的程序改了一行(我把一个 map 换成了 pmap ―― 不好意思,我在这里提一点技术细节, pmap 只是 “ 并行的 map ” (parallel map )而已)。
这个程序(它根据 wiki 标记生成 63 篇文档)的运行速度提高了 7 倍。不是 32 倍,这一点我承认,但是已经显著的加快了。(后来的工作使我们意识到我们是在写盘时遇到了 I/O 瓶颈,所以除非能够让磁盘的 I/O 也 并行 了,否则我们会停留在这个 7 倍上
在 Ericsson ,这个我工作和 Erlang 被开发出来的地方,我们正在把一些应用程序移植到 4 核处理器上 ―― 你猜怎么着?在作了一些小调整后,它们运行几乎都快了 4 倍。呵呵,对 Intel 在实验中的 80 个核的处理器,我们有点等不及了 …
为什么我们的程序运行得更快了?这全跟可变状态( mutable state )和并发( concurrency )有关。[/quote]
全文见附件,
我是从 PDF 里面粘贴出来的,可能有遗漏的文字,还是看附件吧。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
我简单看过Erlang的一些资料(主要是Joe Armstrong的PhD论文和他写的那本书,以及他接受采访的一个mp3和一个视频讲座),Joe Armstrong推销起Erlang来非常卖力,也很风趣幽默,但我没做过Erlang的实际开发,随便乱说几句。
1、Erlang经常自夸对多核、concurrent的支持(好像大部分Functional Programming语言都会强调这一点),很多时候瓶颈不在CPU,而是内存、硬盘、网络、数据库等等,拿我们自己用的台式机和笔记本来说,CPU占用超过20%的时候有多少?对于服务器来说,多数瓶颈也不在CPU,当然有一些应用确实是CPU bound,Erlang也最可能先用在这些地方。 (除了并发,fault tolerent也是一大优点)
2、concurrent编程比较难,首先是任务的分解与合并,把一个任务分解成并行执行的部分,再把结果合并(有的认为不需要合并结果)没有很成熟的方法,对于程序员的要求也很高。
3、人的惰性很大,用目前的语言也可以解决问题,就很难有动力来学习新的。
4、No Silver Bullet,不是有了Erlang就什么都可以解决了
5、Erlang提供了另外一种思路,但也许目前的其它语言会借鉴学习,甚至会有新的语言冒出来。
总的来说,Erlang在多核时代的应用会越来越广,但也不是灵丹妙药,包治百病,还是慢慢来看吧。(即使不想学Erlang,不想学Functional Programming,他的PhD论文也可以一看)
YAWS用了一下,还不错
正在学习Erlang,很看好Erlang
可惜还没有成熟应用,资源匮乏
普通程序员会写到这么多核心的程序么。。
觉得多核是操作系统CPU调度、进程调度首要考虑的事情。。
前段时间一直在看这个,但是因为没有做这块相关的项目,学到了没用几天就又忘了..
预祝erlang早日出人头地