下一个Java?
Erlang将会成为一个非常重要的语言。如果有了大公司的支持,它甚至可能成为下一个Java。因为它是个开源项目,非常适合多核处理、Web服务等领域。事实上,它也是编写在多核机器上运行的高可靠性系统的唯一成熟语言。
Erlang始于20年前,是一个并发性Prolog,Joe Armstrong创造了它。第一个大型Erlang项目是一个由几百人创建的电信交换系统,系统有数百万行代码。系统主要关注的就是可靠性,并且系统有难以置信的可靠性历史。据Joe介绍,“它有99.9999999%的可靠性”。
这意味着每10亿秒才有1秒宕机时间,或者说10亿分钟有1分钟宕机时间。十亿秒大概是30年,10亿分钟大概有2000年。99.999%的可靠性大概是每年宕机5分钟,这已经是很好的了。了解可靠性的人都知道,可靠性系统有 99.9999%的,甚至99.99999%的,但是估计没听过有99.9999999%可靠性的,可基于Erlang的系统实现了。
但这还不是令Erlang壮大的理由,因为不是什么人都关注可靠性。也不是因为 Erlang是一个函数式语言,更不是并行Erlang是个面向对象语言。其发展迅速的主要原因是唯一一个有可靠实现和完善类库的成熟的并行开发语言,在不久的将来所有的桌面系统、笔记本电脑都将是多核的,而要让程序在多核上更快的运行就要使程序能充分利用多核处理的能力。
Erlang带有一组类库。多数类库是用于构建各类Internet服务的。 Erlang有Web服务器和数据库。Erlang社区认为它是构建可靠Web服务器和Web服务的首选语言。Erlang是一个构建可靠系统的框架/平台,它构建的平台可以持续运行而无需关闭,可以每天更新软件,甚至可以定期的更换硬件。这些特性是电信应用所需要的,它还是在线银行、在线商城等各类在线应用所迫切需要的。
Joe Armstrong最近写了本书《Programming.Erlang》,所有关注Erlang的人都值得一读。Erlang符合所有面向对象语言特性,虽然它是个函数式语言,而不是面向对象语言。Erlang区分与面向对象语言的一个方面就是它的错误处理。在某消息出错时,进程不是抛出出错的部分,而是直接进程纠错。系统结构被设计为底部是工作进程(它们可能会失败),上层是管理进程,它们可以重新启动失败的进程。
我不相信其它语言能迅速赶上Erlang。对其它语言而言,加入像Erlang这样的语言特征是很容易的。但这将花费他们大量的时间构建一个高质量的VM和成熟的并发性与可靠性类库。因此Erlang很自然会成功。如果将来要在多核系统上进行开发,Erlang是非常理想的选择。
Erlang在中国
目前,Erlang在全球都还是个小众语言,其在中国影响力就更小了,好在有国内的 Erlang爱好者已经组织起来,在进行相关的工作,成立了Erlang-china.org,发布了部分Erlang相关中文文档,并且组织了两次 Erlang爱好者聚会,Erlang-China.org将继续为对Erlang感兴趣的中文用户提供便利,促进用户彼此之间的交流,推动对这一语言的深入研究,促成一些Erlang开源项目,帮助中文用户为整个Erlang社区做出贡献。
Erlang没有类似Java、C++的语法,它不是面向对象语言,它是函数编程语言(Functional programming Language)。大量程序员并不熟悉函数式编程,我们的计算机教育里也都是基于面向对象和面向过程语言的,这会是所有想尝试Erlang的用户遇到的首要问题,这会使得培训成本加大,决策人员也需要足够勇气来选择一个新语言来构建应用。
另外,Erlang虽然内建了并行、分布的支持,但是程序员还需要学习和掌握并行的思维模式,并行的思维模式也许是更加难以跨越的门槛。
要解决计算时代,可伸缩性、容错性以及运行时可更新系统需求,就目前而言,只有 Erlang语言可以很好的解决。Erlang语言也正面临这一场大的变革,从默默无闻走向更多人视野,会向更广的网络应用领域渗透。也许,不久的将来,当你听到Erlang时,就如同听说Java一样平常。
声明:LUPA开源社区刊登此文只为传递信息,并不表示赞同或者反对。





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