Erlang
一种为分布式、容错、软实时系统设计的并发函数式编程语言及运行时生态系统。
最近更新 2026年8月22日
AI 爬虫读取
1次请求
1家公司- Anthropic1
- 词条页
- 1
- 争议页
- 0
- JSON · MD
- 0
- 首次读取
- 2026年11月4日
- 最近读取
- 2026年11月4日
统计自 2026年10月28日 · 数据来自本站服务器日志
概览
Erlang是一种通用、并发、函数式编程语言及运行时系统,最初由爱立信为电信软件开发。其设计核心在于必须长时间保持可用、同时处理大量并发活动、跨机器通信并从组件故障中恢复的应用。该语言通常与Erlang/OTP(开放电信平台)一起讨论,后者将Erlang运行时系统与库、工具、可重用组件以及构建弹性应用的架构原则相结合。 该项目始于1986年的爱立信,当时Joe Armstrong、Robert Virding和Mike Williams致力于开发一种旨在使电话交换软件更易于原型化和维护的语言。Erlang受到早期爱立信系统中使用的PLEX语言的影响,最初用Prolog实现。早期实验表明该方法非常适合电信工作负载,但最初的解释器速度不足以用于生产。随后的实现工作提高了执行性能,最终产生了BEAM虚拟机以及针对轻量级进程、异步消息传递和监督优化的运行时模型。 Erlang程序由许多隔离的进程构建。这些是轻量级运行时实体,而非传统的操作系统进程或共享内存线程。每个进程都有自己的状态和邮箱,进程通过发送消息进行通信。这种无共享模型减少了对应用级锁的需求,并使得进程可以跨节点分布。模式匹配、不可变数据、动态类型、急切求值和函数式编程为描述消息处理和状态转换逻辑提供了语言级基础。 可靠性通过OTP中的监督树架构得到加强。监督者监控工作进程,并在发生故障时重启或重新配置它们。Erlang相关的开发哲学常被概括为“让它崩溃”:不是试图让每个进程内部从每个可能的故障中恢复,而是应用隔离故障并将恢复委托给监督者。运行时还支持系统运行时的代码替换,帮助操作员无需传统完全停机即可更新长期运行的服务。 Erlang最初的商业领域是电信基础设施。它在爱立信的交换和移动网络系统中变得重要,包括与GSM、GPRS、3G、LTE以及后来的支持基础设施相关的产品。该语言在1998年的开源发布将其影响力扩展到爱立信之外,使运行时和OTP生态系统可供更广泛的开发者社区使用。此后,它被用于消息服务器、消息代理、分布式数据库、在线服务以及其他并发和正常运行时间比主流语言熟悉度更重要的系统。 与Erlang生态系统相关的示例包括RabbitMQ、ejabberd XMPP服务器以及WhatsApp等大规模通信服务。Erlang还支撑了Elixir的执行模型:Elixir代码编译为BEAM兼容字节码,并使用许多相同的OTP概念。支付、游戏、医疗保健、汽车、互联网服务和连接设备领域的公司和项目已采用Erlang或相关的BEAM技术。该语言通过爱立信的OTP组织和开源社区持续维护,Erlang/OTP既作为技术平台,也作为项目的主要公共身份。
沿革
Erlang于1986年由Joe Armstrong、Robert Virding和Mike Williams在爱立信创建。该项目旨在解决开发电话系统的困难,这些系统必须处理大量同时呼叫,在故障期间继续运行,并且无需停机即可更新。设计者希望一种方便支持并发、通信和故障隔离的语言,而不是通过库添加这些功能的传统顺序语言。 早期语言用Prolog实现,并受到早期爱立信电话交换机中使用的PLEX语言的影响。到1988年,实验表明Erlang可用于交换应用的原型设计,但Prolog实现被认为太慢,无法用于生产部署。因此工作转向更快的执行环境。在1990年代初期,团队开发了BEAM虚拟机,结合了本地编译和线程解释,以平衡速度、可移植性和可执行文件大小。 一个重要的转折点出现在1990年代中期提出的AXE-N下一代交换机失败之后。Erlang随后被选用于爱立信的AXD异步传输模式交换机,将其从实验室技术转变为主要的商业系统。1998年3月,爱立信宣布了AXD301,这是一款基于Erlang的大型交换机,据称具有极高的可用性。该系统成为Erlang进程模型、监督机制和不停机服务操作方法最显著的展示之一。 同年还带来了重大的组织变革。1998年2月,爱立信无线电系统公司禁止在新内部产品中使用Erlang,倾向于非专有语言。这一决定威胁到Erlang在爱立信内部的未来,并导致Erlang团队成员考虑离开。然而,在12月,爱立信将Erlang作为自由开源软件发布。随后,核心团队大部分成员离开成立了Bluetail AB,而爱立信后来缓和了立场,并于2004年重新雇佣了Joe Armstrong。 开源将Erlang从爱立信技术转变为公共平台。Erlang运行时、标准库和OTP框架可供电信以外的组织使用。OTP提供了可重用的行为和约定,用于监督者、服务器、应用、发布和分布式服务。这些工具共同使得从隔离进程构建系统以及在不影响应用其他部分的情况下重启失败组件变得更加容易。 运行时继续为多核和分布式计算而发展。2006年添加了原生对称多处理支持,提高了平台利用现代处理器的能力。Erlang的轻量级进程、异步消息传递、位置透明通信、垃圾收集和热代码加载能力仍然是其身份的核心。 在2000年代和2010年代,采用范围扩展到电信基础设施之外。Erlang与RabbitMQ、ejabberd消息服务器以及包括WhatsApp在内的通信产品相关联。它也被用于支付处理、在线服务、游戏、医疗保健、汽车系统和连接设备应用。Elixir后来通过提供不同的语法和语言体验,同时编译为Erlang兼容的虚拟机代码并使用OTP的可靠性模式,拓宽了BEAM生态系统。 Erlang仍然是一个活跃的开源语言和运行时生态系统,主要通过爱立信的OTP组织和外部贡献者维护。其影响力在关注并发、分布、弹性和持续运行的系统工程社区中尤为强大。虽然它不如主流通用语言使用广泛,但其独特的架构继续使其成为可靠分布式软件的参考点。
- 2006
原生对称多处理支持到来
[1]Erlang运行时增加了原生对称多处理支持,以改善多核执行。
- 1998
Erlang成为开源
[1]爱立信将Erlang作为自由开源软件发布,将其使用范围扩展到公司及其电信产品之外。
- 1998
AXD301交换机发布
[1]爱立信宣布AXD301交换机,这是Erlang高可用性设计的突出商业展示。
- 1995
Erlang进入主要商业交换工作
[1]在AXE-N项目遇到困难后,爱立信选择Erlang用于AXD异步传输模式交换机。
- 1992
BEAM虚拟机工作开始
[1]开始BEAM虚拟机的实现工作,为Erlang应用提供更快的执行环境。
- 1988
Erlang证明对电信原型设计有用
[1]早期工作表明Erlang适用于电话交换机的原型设计,尽管最初的Prolog实现速度不足以用于生产。
- 1986
Erlang在爱立信开始开发
[1]Joe Armstrong、Robert Virding和Mike Williams开始为电信和电话交换应用开发Erlang。
产品与定位
一个专为并发、分布式、高可用、软实时和容错系统设计的专业编程平台。
编程语言 · 1986
Erlang编程语言
一种动态类型、函数式语言,具有不可变数据、单次赋值、模式匹配、递归以及用于创建隔离进程和交换消息的语言级原语。它专为需要并发、分布、容错和持续运行的应用而设计。
运行时和应用平台
Erlang/OTP
更广泛的Erlang平台将运行时系统与库、工具、可重用组件和设计模式相结合。OTP为服务器、监督者、应用、发布和分布式服务提供标准化行为,使开发者能够从独立监控的进程构建系统。
虚拟机 · 1992
BEAM
BEAM虚拟机执行Erlang和其他BEAM家族语言。它支持轻量级进程、垃圾收集、异步消息传递、多核执行、分布以及运行系统中更改代码的机制。
品牌决策
来源2 个来源
引用本词条: 请引用规范词条页。 /brand-wiki/erlang · 编辑方针 · 词条如何编纂