技术开发 频道

Erlang:真的能成为下一代Java语言吗?



三、另类的设计,将会带给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。
0
相关文章