未来的计算是并发计算。现今甚至桌面 CPU 也是多核的,当客户给他们的服务器购买了越来越多的 CPU 时,他们期望其应用伸缩自如以利用他们的新投资。但是今天的许多软件系统并不能做到这一点。
处理并发计算是件困难的事情。但是在普遍使用的编程语言中,并发机制与同一语言的许多其他抽象相比是低层机制,对解决这一问题没有帮助。处理并发性需要做许多工作,但是有使其更简单的方法。
Ralph Johnson 撰写了一篇关于 Erlang 将成为 下一个 Java 的博文。Erlang 进程间通讯的视角完全不同,而且 Ralph 说:即便并发性的 Erlan 风格可以很容易的增加到其他语言中,这些语言还是很难竞争。
我不相信其它语言能迅速赶上 Erlang。对它们来说,加入像 Erlang 这样的语言特征是很容易的。但这将花费他们大量的时间来构建这样一个高质量的 VM 和成熟的并发性与可靠性类库。因此 Erlang 很自然会成功。如果你想在未来几年构建一个多核应用,你应该看看 Erlang。
而且可能还能得到更多的额外好处。Erlang 的创造者——Joe Armstrong,写过面对可伸缩性、容错性以及运行时可更新系统所带来挑战的一石三鸟的解决方案。他说即使这些是不同类型的问题,
“一个容错的系统可以很容易成为可伸缩的系统,也很容易成为能够进行热升级(in-service upgrade)的系统”.
Armstrong 把这一切都归功于 Erlang 有一套恰当的故障探测和稳定存储的原语(primitive)。因为 Erlang 是专为电信系统而构建的,所有这些方面都重要,并且爱立信已经构建了一个 Erlang 系统,拥有 99.9999999% 的正常运转时间。即每年 31 毫秒的停机时间。
Erlang 不具有任何共享状态,因而呈现出与主流语言不同的并发性。其进程是非常轻量级的,一个进程与另一个进程通过发送消息进行通讯。与那些使用共享内存来完成进程或线程之间通讯的系统不同,这一架构使伸缩性和分布式系统成为可能。为深入研究这种并发方式,Slava Akhmechet 撰写了对这一概念很好的介绍(不需要有Erlang 知识)。
或许是用不同的方式来解决并行问题的时候了?或许是学习一门新语言的时候了?
评论