2008-06-11

什么是Erlang

Erlang是一个由Ericsson计算机科学试验室设计开发的程序语言。开源的Erlang已经发布以帮助、鼓励在爱立信以外来发展这门语言。

Erlang是一种编程语言,但有着很多与操作系统的相关特性:并发进程、调度、内存管理、分布式、网络,等等。

最初的开源Erlang发行版,所包含的Erlang的实现,相当于一个大型的爱立信的中间件,以用于建立分布式高可用性系统。

Erlang有以下特性:

并发性 - Erlang有着非常经量级进程,它可以动态的改变内存需求。进程没有共享内存和异步消息传递机制。Erlang为应用程序提供了,大量并发进程的支持。而在对于操级系统本身而言,没有并发需求。

分布式 - Erlang也被设计运行于分布式环境。一个Erlang虚拟机被称为一个Erlang节点。一个Erlang节点可以在另一个Erlang节点上建立并行运行的进程,可能用于其它的操作系统。进程位于不同的节点,可是通信方式与本节点的进程间通信方式是的一样的。

健壮性 - Erlang有着多种原始错误检测机制,可以用来构建容错系统。如,一个进程可以监视其它进程的状态,甚至另一个进程可能运行于其它节点上。分布式系统中的进程可以被配置成无效,以迫使它自动迁移到恢复节点上。

软实时性 - Erlang提供软实时性,即在毫秒级别做出反应。在这种系统下,长时间的垃圾回收的时延是不被允许的,所以Erlang使用增量式垃圾回收技术。

代码热升级 - 很多系统无法停下来,来做软件维护,如银行系统。Erlang允许程序代码在程序运行的时候被修改。旧代码可以同步的被替换成新代码。在转输的过程中,无论是旧代码还是新代码,可以共存。这样可以在不打忧机器正常运行的同时,升级并纠正BUG。

增量式代码加载 - 用户可以控制代码加载的详细方式。在嵌入式系统中,所有代码通常在引导的时候被加载的。在开发系统中,代码需要时才加载,甚至当系统运行时加载。如果只是测试遗落的BUG,那么只有有BUG的代码才需要被加载。

外部接口 - Erlang进程与外界通信,使用的是与Erlang进程间通信所使用的相同的消息传递机制。这个机制也常常用于主机操作系统,与使用其它语言开发的程序之间的交互。如果考虑到效率的话,还会用到一些比较特殊的概念,如:直接将C语言连入Erlang运行时系统中。

No comments: