Erlang logo

什么是 Erlang

封面

展开所有
收起所有

目录

1 什么是 Erlang

1.1 简而言之,什么是 Erlang?

Erlang 是一种通用编程语言和运行时环境。Erlang 内置支持并发、分布式和容错。Erlang 用于来自 爱立信 的多个大型电信系统。Erlang 可从 https://erlang.ac.cn 获得开源版本。

1.2 什么是 OTP?

OTP(开放电信平台)是 Erlang 的一个大型库集合,可以执行从编译 ASN.1 到提供 WWW 服务器的各种操作。大多数使用“Erlang”的项目实际上是在使用“Erlang/OTP”,即语言和库。OTP 也是开源的。

1.3 Erlang 特别适合哪些类型的应用程序?

分布式、可靠、 软实时 并发系统。

  • 电信系统,例如控制交换机或转换协议。

  • 互联网应用程序服务器,例如邮件传输代理、IMAP-4 服务器、HTTP 服务器或 WAP 堆栈

  • 电信应用程序,例如处理移动网络中的移动性或提供统一消息传递。

  • 需要软实时行为的数据库应用程序。

Erlang 擅长解决这些问题,因为这是它最初设计用于解决的领域。从功能方面来说,上述内容可以总结如下:

  • Erlang 提供了一种简单而强大的模型来进行错误隔离和容错(监督进程)。

  • 并发和消息传递是该语言的基础。用 Erlang 编写的应用程序通常由数百甚至数千个轻量级进程组成。Erlang 进程之间的上下文切换通常比 C 程序中线程之间的切换便宜一个或两个数量级。

  • 编写由在不同机器上执行的部分组成的应用程序(即分布式应用程序)很容易。Erlang 的分布机制是透明的:程序不需要知道它们是分布式的。

  • OTP 库为网络和电信系统中的许多常见问题提供支持。

  • Erlang 运行时环境(一个虚拟机,类似于 Java 虚拟机)意味着在一个架构上编译的代码可以在任何地方运行。运行时系统还允许在不中断程序的情况下更新正在运行的系统中的代码。

1.4 Erlang 不太适合解决哪些问题?

人们使用 Erlang 来做各种令人惊讶的事情,例如在协议级别与 X11 通信,但是,在某些情况下,Erlang 可能不是最佳选择。

最常见的“不太适合”问题类别以性能为主要要求且常数因子对性能有很大影响为特征。典型的例子是图像处理、信号处理、对大量数据进行排序和低级协议终止。

另一类问题以与现有 C 代码的广泛接口为特征。一个典型的例子是实现操作系统设备驱动程序。

大多数(全部?)使用 Erlang 开发的大型系统大量使用 C 来编写低级代码,并将 Erlang 用于管理在其他语言中往往很复杂的部分,例如控制跨多个机器的系统和实现复杂的协议逻辑。

1.5 哪些公司使用 Erlang 进行产品开发?

Erlang 最大的用户是爱立信。爱立信使用它编写用于电信系统的软件。许多(数十个)项目使用了它,一个特别大的项目是可扩展性极高的 AXD301 ATM 交换机。AXD301 有数百人参与开发,代码量已达到约 850 kloc 的 Erlang(以及 1 Mloc 的 C/C++)。

使用 Erlang 的其他一些公司包括

如果您想在此列出,请给我发送邮件: [email protected]

1.6  谁在研究和教学中使用 Erlang?

许多大学在不同级别使用 Erlang。此列表远非详尽!

如果您想在此列出,请给我发送邮件: [email protected]

1.7  我可以获得 Erlang 的商业支持吗?

许多咨询公司提供支持和培训课程,最著名的公司是 Erlang-solutions.com