序言
优质
小牛编辑
128浏览
2023-12-01
Erlang[1]是由Ericsson and Ellemtel Computer Science Laboratories的成员为并发分布式系统编程而开发的一种申明式语言。
对Erlang的开发本是起源于一次为了确认现代的申明式编程范式是否能够用于大型工业电信交换系统的编程的调研。不久,人们便发现适合于电信系统编程的语言同样也非常适合用于解决大量工业嵌入式实时控制问题。
Erlang的许多原语为大型并发实时系统开发的问题提供了解决方案。其模块系统允许将大型系统构建为概念上的可管理单元。其错误检测机制可用于构建容错软件。其代码加载原语允许在不停机的情况下替换运行时系统的代码[2]。
Erlang具备一套基于进程的并发模型。并发性是显示的,用户可以精确地控制哪些计算串行哪些计算并行。进程间的消息传递是异步的,即,发送进程一发完消息就立即继续执行。
Erlang进程交换数据的唯一方式就是消息传递。这样一来,应用可以很容易地做到分布式——为单处理器编写的应用可以容易地迁移到多处理器或单处理器网络上。语言中提供的内建机制简化了分布式应用的编写,使得应用既可运行于单机也可运行于计算机网络中。
Erlang的变量具有单次赋值属性[3]——变量一旦被赋值就不可再被更改。该属性对于调试变更中的应用有重要的影响。
程序是完全以函数的方式编写的——函数的选择通过模式匹配来完成,如此一来程序可以非常的简洁紧凑。
Erlang系统具备内建的时间观念——程序员可以指定一个进程在采取某种行动之前需要等待某条消息多久。这就允许了实时系统的开发。Erlang适用于大多数响应时间为毫秒级的软实时系统。
[1] | Agner Krarup Erlang (1878-1929),丹麦数学家,发展了统计均衡中的随机过程理论——他的理论被广泛地应用于电信业。 |
[2] | 这对于电话交换机或空中交通控制系统等嵌入式实时系统非常重要——通常情况下,这些系统是不能因为软件维护而停机的。 |
[3] | 也叫做write-once variable或non-destructive assignment。 |