Erlang-China

erlang 中文社区

Erlang新书及[无责任]前景预测


Programming ErlangErlang 领域最近有一个大好消息,那就是 Joe Armstrong 终于要出第二本书了。

这是一件奇妙的事情,因为距离第一本的出版,好像已经快有10多年了(第一本好像是198x年出的)。说起来,在软件领域,恐怕这也算是比较罕见的了。一门语言的创立着,在多年以后,还像 Joe Armstrong 一样,积极的活跃在第一线。着实让人敬佩。

为什么在这么多年之后,又有了出版这门语言另一本书的必要呢?或许,我们可以从另外一个角度来解读,这种语言与众不同的特质与命运。

先卖个关子,就让我们从计算机目前的发展趋势说起。


2006年,软件或者说互联网技术界,最大的冷门以及最热门的技术话题是什么呢?毫无疑问,就是Ajax。这项在本质上是在炒 Javascript/DHTML 冷饭的技术,仿佛在一夜之间,突然成了炙手可热的香饽饽,成为人人追捧的大明星。当然,这里面有太多 Google 与 M$ 的利益与争斗(要是有人写成书来卖,一定会很精彩)。但,从纯技术的角度来讲,这很简单,这就是 Google Way 的全面胜利。所谓的 Google Way 其实没啥神秘的(其实也就是炒 Sun 的 NetPC 的冷饭),说白了一句话:“咱服务器多,咱气壮如牛,咱啥都放到服务器上去”。而如果说 Google 比 N 年前的 Sun 要高明,那只是因为这把 Google 用的武器是“人人都有”的浏览器,而当的 Sun 所仰仗的 Java 却远没有那么高的普及率。“网络就是计算机”,谁还记得这句宣传口号?如今 Google 已经把它变成了现实。

是的,网络就是计算机,不忽悠。打开浏览器,管你什么 OS ,无论什么浏览器,访问起 Google 的一干应用(在线 Office 系列产品线),用户体验基本一致。而网络提供的巨大存储空间,超强计算能力,则远远超乎个人 PC 的能量极限。试想,谁会想,又怎可能把整个互联网的数据都装在自己的本地硬盘呢?

稍微总结一下,当前来看,软件的发展趋势是什么?是“存储与运算向服务器端的全面转移”,Ajax?只是一个灵巧而通用的界面而已。

随之而来的问题是,对于 Google 来说,大量用户疯狂的涌到你的网站,每天产生几千个 G 的数据,你怎么吃得消呢?你得买成千上万台的机器,来满足这些用户的计算需要。实际上,这么多用户向服务器端转移的计算,可不是转移到黑洞当中去了的,说到底了,都需要你在服务器端满足。对于性能的追求,是永无止境的。Google 为此付出了分布在世界各地的成千上万台服务器 。

计算机工业这颗繁华的星球上,在软件业熙熙攘攘的景象背后,在那遥远的地平线上,作为背景的,从来就是硬件厂商们高大伟岸的身影……。

在 Google 和 M$ 正咬得不可开交的时候,这些硬件厂商们都在做些什么呢?Intel 和 AMD 的 F1 战局正酣,64位和双核的决战,正在紧要的关头。IBM 老大斜靠在真皮的沙发上,SONY 大哥的 PS3 马仔源源不断的送来大笔钞票,而传说中的高端大型机的金砖,依然闪闪发光。悠闲的午后,一如以往的平静。

值得注意的是一则小道消息,据说 Intel 认为 80 是 multicore 堂口的吉利数字,整了一个小试验环境,小范围的发布了一下。而我们听到亚马逊丛林的某只蝴蝶扇了一下翅膀。()

如果说双核只是 Intel 对付 AMD 的小花招的话,那 80 核,就是玩真格的了。 Intel Demo 的 80 core cpu ,只有 60W 的能耗,但其计算能力达到了不可思议的 1TFlop,这等于什么呢?其实也没啥,只是一台超级计算机而已,没错,就是气象台用的那种,之前被称作 MainFrame 的大家伙。而现在他则已经迫不及待的想要跑到你的桌面来呆着了。

对于互联网来说,这意味着原来我要整几十台上百台的机器才有可能提供的性能,现在一台就能满足了。而且没有复杂的网路布线,他们老老实实的呆在一块小小的芯片上面。不过,对此你不用太担心,这是未来的事情,少说也要几年才能看到。如果你想在上面玩“红色警戒” ,可能也不用费心去找“减速器”之类的软件。是的,你的“红色警戒”在 80 核的 CPU 上和 1 核的 CPU 上运行效果很可能没有太大的区别。——问题是,如果是这样的话,我要升级到 80 核的 CPU 来干吗呢,煎鸡蛋?我还嫌 60w 的功率太小了点。

为什么会这样?硬件升级,软件难道不应该自动就跑得更快些么?多了 79 个核心,速度增加 79 倍,似乎很公道。但,可悲的现实是,就算你多了 79 个核心,如果你的软件不是为多核而优化的,性能的提升可能连 79% 也到不了。呵呵,是不是夸张了点?还有更夸张的,在多核的平台上,原有的软件甚至可能会运行得更慢——为了绿色环保 CPU 的每个核心运行在比之前更低的频率上,所以很有可能反而会更慢了。

编译器?关键时刻,总是编译器来拯救世界!能否象 SSE 指令优化一样,让编译器来充当我的救命稻草呢? 有这个可能,但,很可能,这并不能从根本改变整件事情。因为,如果你的程序就是以单核心的CPU为假象前提下的顺序执行而设计,而不是并行的方式,编译器又能够替你优化多少呢?是的,这就是我们现有的软件知识体系所面临问题。在并行计算的词语面前,在我们的大脑中闪现的是诸如“线程”,“锁”,“信号量”,“同步调用”这些东西,他们已经成为我们知识体系中的基础部分。而你是否可曾想过,在多核/并行计算的环境下,这几样武器就像山顶洞人的打制石器一样,笨拙而简陋。

等等……。说了这么多,从 Google 说到 山顶洞人,看着挺热闹的,可这些和 Erlang 有啥关系?莫不是忽悠?

呵呵,不忽悠,这就说到 Erlang 了。

就在这个时候,一些渊博的人们赫然发现,早在1985年就出现在 Ericsson 的实验室里的“古董”,那种有着让人“望而生畏的晦涩难懂语法”的,一直不温不火的小众语言,那种貌似仅仅用于电信领域的专业语言……。似乎就是被设计来专门解决这些问题的。

于是乎,yaws vs apache,ejabberd,RabbitMQ,Erlyweb……。抱歉,恕我浅薄,没啥别的了。这个列表是还比较短,可它正在迅速变长,变长。

下一波,闻到了新鲜海浪的气息,在重重迷雾中,我们隐隐约约的看见了下一波的轮廓……。





Comments



1
Author:  Arbow | Date:  March 30, 2007 | Time:  7:27 am

呵呵,《免费午餐已经结束——软件历史性地向并发靠拢》一文虽然没有谈到Erlang,但是也证明了这是一个趋势。

2
Author:  jackyz | Date:  March 30, 2007 | Time:  11:21 am

是的,并发的时代已经到来,Joe Armstrong的新书也叫“Software for a concurrnt world”。

3
Author:  simohayha | Date:  March 31, 2007 | Time:  2:11 pm

不知道stackless和erlang在并发的性能的差距有多大?

4
Author:  jackyz | Date:  March 31, 2007 | Time:  2:50 pm

python 的 stackless ?
听说过没用过,貌似另外一种 lightweight process 的技术。
两者的性能比较数据目前还没有看到。

5
Author:  jackyz | Date:  March 31, 2007 | Time:  3:59 pm

@simohayha
google 了一下 stackless 和 erlang 找到这么一篇:http://programming.reddit.com/info/u2ng/comments 说来说去也没个结论,不过对你也许是个参考。

PS. 你也喜欢连岳和王小波啊,哈哈,同好。

6
Author:  simohayha | Date:  April 1, 2007 | Time:  7:11 pm

呵呵,谢谢你了.

PS:呵呵,同好,拥抱个,哈哈.

7
Author:  matrixzyy | Date:  July 7, 2007 | Time:  11:47 am

当我们真的进入并行世界之后,必定会出现更多的并行编程语言,就像今天的脚本语言世界那样丰富,也许Erlang能够占到一席之地,但是别忘了,Erlang还没走向面向对象!

8
Author:  allan | Date:  May 14, 2008 | Time:  6:33 pm

我个人有个想法,也许在并发中,不总是需要面向对象



Write a Comment

Note: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>