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 的其他一些公司包括
2600Hz(VoIP 平台)
AdRoll(实时竞价、广告投放)
Bluetab Solutions(事件数据收集)
Corelatus(电信网络中的信令)
dqdp.net(拉脱维亚语)(Web 服务)
EE(英国移动运营商,此前为 T-Mobile 和 one2one)(高级呼叫控制服务)
Facebook(Facebook 聊天后端)
芬兰气象研究所(数据采集和实时监控)
Gambit Research (体育博彩市场的高频交易)
IDT 公司 (实时最低成本路由专家系统)
IEISS。 (电子金融工具交易软件)
Klarna (电子支付系统)
Lindenbaum (大规模语音会议)
Mitel (VoIP 服务)
Mobilearts (GSM 和 UMTS 服务)
Netkit Solutions (网络设备监控和运营支持系统)
Process-one (Jabber 消息)
Quviq (软件测试工具)
RAD (SSL 加速器,先前由 Nortel、Alteon 和 Bluetail 拥有)
Schleibinger (环境测试机器的机器控制)
Smarkets (博彩交易和预测市场)
Telia (电信运营商)
Vail Systems (交互式语音应答系统)
Wavenet (SS7 和 IVR 应用程序)
Whatsapp (智能手机消息)
如果您想在此列出,请给我发送邮件: [email protected]
1.6 谁在研究和教学中使用 Erlang?
许多大学在不同级别使用 Erlang。此列表远非详尽!
本·古里安大学 (以色列) 通信系统工程系。
赫瑞瓦特大学 在英国。
菲律宾棉兰老国立大学伊利根理工学院 在菲律宾。
哥德堡 IT 大学 在哥德堡,瑞典。
KTH 在斯德哥尔摩。
库尔干国立大学 在俄罗斯。
皇家墨尔本理工大学 在澳大利亚。
以色列理工学院 (电气工程学院)。
卡尔斯鲁厄理工大学 在德国,用于研究和分布式系统源代码。
蒙特雷理工学院,墨西哥州分校 在 编程语言课程 中。
科鲁尼亚大学 在西班牙。
肯特大学 在英国
谢菲尔德大学 在英国
悉尼大学,在分布式流处理引擎中。
萨格勒布大学 在克罗地亚,在并发编程课程中,也用于研究。
如果您想在此列出,请给我发送邮件: [email protected]
1.7 我可以获得 Erlang 的商业支持吗?
许多咨询公司提供支持和培训课程,最著名的公司是 Erlang-solutions.com。