[杂谈]Erlang语言简介

发布于:2019-10-08

杂谈

什么是Erlang

Erlang(['ə:læŋ])是一种通用的面向并发的编程语言,其创立者是Joe Armstrong,在1987年由瑞典电信设备制造商爱立信于主持开发。Erlang的开发目的是创造一种可以应对大规模并发活动的编程语言和运行环境,从而简化交换机的开发工作,提高电话交换机的稳定性和可扩展性。

Erlang是一个结构化,动态类型编程语言,内建并行计算支持,非常适合于构建分布式,实时软并行计算系统。使用Erlang编写出的应用运行时通常由成千上万个轻量级进程组成,并通过消息传递相互通讯。Erlang使用用户态抢占式协作线程来完成Erlang进程的调度,这比起C程序的线程切换要高效得多得多了。

Erlang的特点

  • 并发性:Erlang支持超大量级的并发进程,并且不需要操作系统具有并发机制。
  • 分布式: 一个分布式Erlang系统是多个Erlang节点组成的网络。
  • 健壮性:Erlang具有多种基本的错误检测能力,它们能够用于构建容错系统。
  • 软实时性: Erlang支持可编程的“软”实时系统,使用了用户态抢占式协作线程,同时使用了递增式垃圾收集技术。
  • 热代码升级:Erlang允许程序代码在运行系统中被修改。旧代码能被逐步淘汰而后被新代码替换。在此过渡期间,新旧代码是共存的。
  • 递增式代码装载:用户能够控制代码如何被装载的细节。
  • 函数式编程:尾递归优化,变量不可变,可预知的函数输出,匿名函数,闭包等。
  • 动态类型:无需声明变量类型,Erlang会根据情况自动确定变量类型。

什么是OTP

OTP是Open Telecom Platform的缩写,字面上直接的意思就是开放电信平台,这刚接触Erlang/OTP的人感到这玩意好像和一般服务器开发没什么关系。 但是OTP是基于Erlang语言的一个非常强大,且非常通用的平台。

OTP当中提供了大量的工具模块来帮助我们完成日常开发工作,同时该平台抽象了大量的行为模式,例如常见的状态机,通用服务器,进程监控以及内置的Mnesia数据库等。 这些库不单单加快了我们的开发工作,同时也提高了整个系统的稳定性和可扩展性。