» «

RSS订阅


    抓虾    pageflakes
    Rojo    google reader
    netvibes    my yahoo
    newsgator    blogdtnes
    鲜果    哪吒
    有道

开源Erlang真能成为下一代Java语言吗?

来源: LUPA开源社区
发布时间: 2007-08-17 09:59 作者: 胡磊 来源: IT168 版权申明 向LUPA投递新闻

字体: | 上一篇 下一篇 | 打印


文章来源于http://www.lupaworld.com
  二、丰富的多处理器的支持,使Erlang如虎添翼

  当使用Erlang构建一个系统的时候,你只能在进程间通过传递消息,来使得一组进程间通信。在Erlang里面没有共享的状态,唯一的方式就是通过发送消息和进程通信。不像Java 或者 Smalltalk,只是在并发操作的时候,写一些线程/进程,Erlang程序员使用进程来模块化,提高可靠性,重用性。以后它们就能自发的并行运行。理论上说,你可以在一个处理器上构建你的系统,但是实际中没有这样的Erlang程序员这么做。他们更喜欢当作有上千个处理器来开发系统。当在一个处理上运行的时候并不影响性能。但是最好利用多处理器,来提高系统的性能。接着,把应用程序放在10个处理器的系统上,你的应用程序就会运行快了十倍(或许八九倍,但是还是不错的)。

  当然,因为你写你的应用程序时候,写了上千个的进程并不能说有伸缩性。像任何一个系统一样,你也有瓶颈的。在等待另外一个进程的时候,你要浪费很多的等待时间,希望得到其它进程提供的结果。为了实现Erlang系统的伸缩性,有许多的设计模式供你选择。

  Erlang自带了很多程序库。大多数的程序库是为了构建应用程序,或者使用不同种类的网络服务。Erlang有web服务和数据库的功能。Erlang社区将Erlang定位为构建可靠性web服务和web服务应用程序的语言。但是自带的程序库名字大多称为OTP,即开源电信平台。毫不奇怪名字为什么这么起,虽然它与电信没有任何关系。但是Erlang构建运行几十年,在需要每天更新软件,或者周期更换硬件而不中断的开发框架和平台。这正是电信应用程序所需要的,同时是在线银行,在线商店等等所需要的。

  Joe Armstrong已经完成了一本关于Erlang的书,已经由Pragmatic Programmers.出版了。Joe还写了一篇关于这本书的文章。这是一本非常好的书,任何对Erlang有兴趣的人应该去读一读。对于这本书,令我很发疯的是它展现的更多的是Erlang最为函数式的语言,而没有很多的关于面向对象的方面。事实上,它否认Erlang是面向对象的。

  三、另类的设计,将会带给Erlang程序员更多的思想圣宴

  Erlang里面的进程就是一个对象。最初我在讲述面向对象的设计的课程上,我从三个角度解释面向对象编程。从表面的角度说,一个面向对象的系统就是它的开发者要认识到程序设计是一个模拟。从更深的角度来说,面向对象的系统就是它有对象构成,通过对象之间的发送消息来通信,通过对象间传来传去的消息来完成计算。从软件工程的角度看面向对象的系统就是它支持数据抽象化,通过函数调用后期绑定,和继承完成多态。

  Erlang是行为驱动模型的完美例子,也是从更新的角度来看的例子。进程当然支持数据抽象多多态。一个Erlang进程就是一个函数,它从消息队列中读取消息,找到自己相匹配的消息,接着做出响应。这种函数式结构处理方法很像Smalltalk中的类。更有甚者,好几个线程共同遵照一个协议,有一些共同的东西,很容易分析出他们有一些相同的函数可以调用。这就很像类的继承性了。因此,你可以说Erlang支持继承的,虽然它和Java 和Smalltalk有很大的区别。我能想象的出很多的Erlang开发者认为程序设计就是模型化。因此,Erlang适合所有的具有面向对象特征的系统,虽然说顺序的Erlang是函数式的语言,不是一种面向对象的语言。

  Erlang唯一和面向对象的语言不同的是它强调失败故障。任何消息的发送可能失败。进程不能引发异常,它们出现失败故障。系统构造出工作进程,在底层有可能出现失败故障,而在它们上面有管理进程,能够重启失败的进程,因为开发者能够预期到失败的进程。

  Joe讲述了Erlang太多的函数式语言特性,他认为Erlang缺乏易变的状态,也就是暗示没有加锁。但是,它的确是缺乏SHARED状态。你可以用Basic, perl, 或者C写进程。我能肯定许多的人会学习Erlang,然后说:“我能把Erlang的优秀特点引入到我们的语言中去”。但是依照我的观点,Erlang的并发程序设计的特点,为并行和可靠性而设计的成熟的实现方法和强大的程序库是它的特别之处。

  相信任何一个其它的语言能追上Erlang。其它的语言也许会增加一些和Erlang相似的语言特点。但是需要它们花很长的时间取构建如此一个高质量的虚拟机和为并发和可靠性开发的程序库。因此,我认为Erlang将会取得成功,并在10年内成为现在Java语言的替代者。如果你想在将来的构建多核的应用程序,你应该学习Erlang。
文章来源于http://www.lupaworld.com

声明:LUPA开源社区刊登此文只为传递信息,并不表示赞同或者反对。
22/2<12

查看全部评论(3) 最新评论

  • 删除 Guest (2007-8-17 16:50:32, 评 0 分) 支持 反对

    至少安装比起ROR来省老了去了。
    我很喜欢Ruby,它实在太灵活了,好用。
    接下来研究一下Yaws,看看如何。

  • 删除 Guest (2007-8-17 13:23:15, 评 0 分) 支持 反对

    用erlang做的web服务器程序比apache性能好20倍

  • 删除 Guest (2007-8-17 11:10:34, 评 0 分) 支持 反对

    听起来这么好的语言,研究了


查看全部评论(3)我来说两句 直接向LUPA提出您的宝贵建议

-5 -3 -1 - +1 +3 +5