Erlang官方版是一款优秀的编程语言软件。Erlang最新版支持超大量级的并发进程,并且不需要操作系统具有并发机制。Erlang官方版具有多种基本的错误检测能力,它们能够用于构建容错系统。支持可编程的“软”实时系统,使用了递增式垃圾收集技术。允许程序代码在运行系统中被修改。旧代码能被逐步淘汰而后被新代码替换。在此过渡期间,新旧代码是共存的。
基本简介
Erlang官方版是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。使用Erlang来编写分布式应用要简单的多,因为它的分布式机制是透明的:对于程序来说并不知道自己是在分布式运行。
Erlang运行时环境是一个虚拟机,有点像Java虚拟机,这样代码一经编译,同样可以随处运行。它的运行时系统甚至允许代码在不被中断 的情况下更新。另外如果需要更高效的话,字节代码也可以编译成本地代码运行。
软件特色
● 并发性 - Erlang支官方版持超大量级的并发进程,并且不需要操作系统具有并发机制。
● 分布式 - 一个分布式Erlang系统是多个Erlang节点组成的网络(通常每个处理器被作为一个节点)
● 健壮性 - Erlang具有多种基本的错误检测能力,它们能够用于构建容错系统。
● 软实时性- Erlang支持可编程的“软”实时系统,使用了递增式垃圾收集技术。
● 热代码升级-Erlang允许程序代码在运行系统中被修改。旧代码能被逐步淘汰而后被新代码替换。在此过渡期间,新旧代码是共存的。
●递增式代码装载-用户能够控制代码如何被装载的细节。
●外部接口-Erlang进程与外部世界之间的通讯使用和在Erlang进程之间相同的消息传送机制。
●Fail-fast(中文译为速错),即尽可能快的暴露程序中的错误。
●面向并发的编程(COP concurrency-oriented programming)
●函数式编程
●动态类型
●及早求值或严格求值
●支持脚本运行
软件功能
并发处理
Erlang的并发模型基于轻量级进程,每个进程都有独立的内存空间,通过消息传递进行通信。这种设计使得Erlang能够轻松处理大量并发任务,而不会出现传统线程模型中的锁竞争和资源争用问题。
Erlang进程的创建和上下文切换非常高效,可以在微秒级别完成,适合大规模并发系统。
分布式计算
Erlang内置了对分布式计算的支持,允许开发者通过简单的API实现跨节点的通信。Erlang的分布机制是透明的,程序不需要知道它们是分布式的。
Erlang支持异构网络上的节点通信,可以轻松构建全互联网络。
容错性
Erlang提供了强大的容错机制,采用“让它崩溃”的哲学,通过监控和重启失败的进程来恢复系统的正常运行。
Erlang的监督树(Supervision Tree)机制可以实现进程的分层监控和恢复,确保系统的高可用性。
热代码升级
Erlang支持热代码升级,即在系统运行时可以动态加载新版本的代码。这一特性使得系统能够在不停止服务的情况下进行升级,极大地提高了系统的可用性。
软实时性
Erlang具有软实时性,其垃圾回收机制以单个进程为单位,不会对整个系统造成影响。这使得Erlang能够在高负荷下保持高响应速度。
OTP框架
OTP(开放电信平台)是Erlang的一个大型库集合,提供了从编译ASN.1到提供WWW服务器的各种功能。OTP为网络和电信系统中的许多常见问题提供支持。
软件优势
Erlang在多个方面表现出独特的优势,使其成为构建高并发、高可用性系统的理想选择:
高并发能力
Erlang的轻量级进程模型允许创建数百万个并发进程,每个进程占用极少的内存和CPU资源。这使得Erlang在处理大规模并发任务时表现出色。
强大的容错能力
Erlang的容错机制通过进程间的监控和恢复,确保系统在部分组件故障时仍能正常运行。这种设计使得Erlang能够构建高可靠性的系统。
分布式系统支持
Erlang的分布式特性使得开发者可以轻松实现跨机器的通信和资源共享。这种特性非常适合构建需要横向扩展的分布式应用。
热代码升级
Erlang的热代码升级功能使得系统可以在不停机的情况下进行更新。这一特性对于需要持续运行的系统(如电信系统和在线游戏服务器)尤为重要。
软实时性
Erlang的软实时性使其能够在高负荷下保持高响应速度。这使得Erlang非常适合处理需要快速响应的应用场景。
平台兼容性
Erlang运行在虚拟机上,具有良好的平台兼容性。这意味着Erlang程序可以在多种操作系统上运行,而无需重新编译。
开发效率
Erlang的函数式编程范式和内置的并发支持使得开发高并发系统变得更加简单。这使得开发人员可以专注于业务逻辑的实现,而无需过多关注底层的并发机制。
适用场景
Erlang特别适合以下类型的应用程序:
电信系统:如控制交换机或转换协议。
互联网应用程序服务器:如邮件传输代理、IMAP-4服务器、HTTP服务器或WAP堆栈。
需要软实时行为的数据库应用程序。
分布式系统:如云计算平台、即时通讯系统和大型网络游戏服务器。
更新日志
新的语言特性
根据EEP 70,已添加了用于生成器表达式的新型严格生成器。
comprehensions 已经根据EEP 73扩展了 zip 生成器。
对于各种错误类型,编译器现在尝试通过在错误信息末尾添加“ Did you mean …?” 来建议潜在的修复方法。
[EEP-69: 名义类型] 已经实现。作为副作用,名义类型可以编码不透明类型。我们更改了所有不透明处理逻辑,并改进了Dialyzer的不透明警告。
现在可以使用任何基数作为浮点数的底数,如EEP 75: 基数浮点数字面量中所述。
ERTS / 标准库
模块 [re] 已经更新为使用 PCRE2,这在很大程度上与 PCRE 兼容。
引入了使进程能够接收优先消息的功能,依据EEP 76。
添加了 erlang:hibernate/0,该函数可以将一个进程休眠而不丢弃堆栈。
添加了一个实验性的本地调试器API。
该erl -noshell模式已更新,新增了两个子模式,分别称为raw和cooked,其中cooked是旧的默认行为,raw可以用来绕过本地终端的行编辑支持。

phpstorm 2019 官方版
Rider 2019 最新版