3 获取 Erlang/OTP 及其相关书籍/文章
3.1 我在哪里可以获得 Erlang/OTP?
可以从 开源 Erlang 站点 下载开源 Erlang/OTP。该站点提供完整的源代码以及 Windows 机器的二进制文件。这可能是确保您获得最新版本的最佳去处。
Erlang Solutions 为各种平台(Ubuntu、CentOS、MacOS X、Debian、Windows、Fedora 和 Raspian)提供 二进制文件。
GNU/Linux 的 Debian 发行版及其衍生版本(如 Ubuntu)在不同的发行版本中包含各种版本的 Erlang,位于 interpreters 下。该版本往往远远落后于 Erlang Solutions 的软件包(如上所述)。
对于 BSD,'ports' 集合包含 Erlang 的最新版本。
爱立信内部用户可以使用爱立信内部支持的 Erlang 版本,网址为 www.erlang.se。
3.2 (开源)Erlang 的当前版本是什么?
Erlang/OTP 19.3 于 2017 年 3 月发布。
在 17.0 之前,Erlang 使用一种略有不同的版本编号方案,例如,之前的版本称为 R16B-3。
主要版本通常在 12 到 18 个月之间发布。
Erlang 的组件有自己的版本号,例如 17.0 中的虚拟机版本为 6.0。
3.3 开源 Erlang 附带哪个许可证?
开源 Erlang 许可证 本质上是 Mozilla(Netscape)公共许可证,进行了一些修改,以使其与瑞典法律兼容。
据我了解,这意味着您可以免费获得 Erlang,使用它来构建很棒的系统,并在不让爱立信向您收费的情况下出售它们。对于权威的声明,您需要一位律师。
3.4 Erlang 文档在哪里?
最好通过 语言参考手册 来描述该语言本身。
开源 erlang 提供的文档(包括手册页和 html)是 OTP 库和 Erlang 本身的最新参考。在 unix 系统上,阅读手册页的简便方法是 erl -man gen_tcp 。
3.5 我应该阅读哪本关于 Erlang 的书?
不同的书籍面向不同的受众,因此很难特别推荐一本。目前提供的英文书籍,从最近出版的开始,包括:
Simon St. Laurent 于 2013 年编写的 Introducing Erlang 是一本非常温和的 Erlang 入门书,适合初学者。可以直接从出版商处购买。
Fred Hebert 于 2013 年出版的 Learn You Some Erlang for Great Good! 是一本关于 Erlang 的初学者书籍。可以直接从 出版商处购买,也可以 在线阅读。
Martin Logan、Eric Merritt 和 Richard Carlsson 于 2010 年出版的 Erlang and OTP in Action。您可以从各种在线书店购买,也可以直接从 出版商处购买。
Francesco Cesarini 和 Simon Thompson 于 2009 年出版的 Erlang Programming (A Concurrent Approach to Software Development)。从 Amazon 等处获取,或直接从 出版商处获取。
Erlang 程序设计:并发世界软件 (Joe Armstrong) 是一本关于 Erlang 的书籍,由最初的发明者之一撰写,于 2007 年出版。您可以从亚马逊和其他在线书店购买纸质版,或者直接从出版商购买。
还有一些其他语言的书籍,而非英语。
法语:Erlang Programmation (Mickaël Rémond) 可以从出版商或通过亚马逊订购。
西班牙语:Erlang/OTP Un Mundo Concurrente (Manuel Rubio) 可以直接从出版商订购。
仅供历史参考:Erlang 并发编程(第二版,1993)(Armstrong, Virding, Wikström & Williams)。考古学家可以从 erlang.org 下载本书的前半部分。
同样仅供历史参考:Maurice Castro 的书,Erlang in Real Time(1998)。
3.6 关于 Erlang 的高级文档有哪些?
要完全了解 Erlang 内部的最新情况,唯一的方法是检查源代码。本节列出了一些可以帮助理解代码的材料,但请记住,它们都会过时,即文章/论文/演示文稿描述了代码在特定时刻的状态,而这个时刻通常是过去的一段时间。
The BEAM book 描述了 Erlang 的虚拟机,称为 BEAM。
标准 Erlang规范 (1999) 旨在定义 Erlang 语言。目前没有编译器可以完全按照 标准 Erlang 规范实现所有内容。该规范非常精确;它旨在作为参考,而不是睡前读物!编译器和工具的实现者会发现它很有用,高级 Erlang 程序员也会如此。
Core Erlang (2004) 是一种定义类似 Erlang 的语言的尝试,这种语言对编译器和语言工具更友好,并且可以从 Erlang 自动生成。从 R10 开始的 Erlang 编译器可以从普通的 Erlang 代码生成 Core Erlang。它们还可以从 Core Erlang 生成 .beam 文件。
来自 Erlang 用户大会 的会议记录包含许多有趣的论文。从 1999 年到 2008 年的会议记录也仍然在线。
BEAM 文件格式的内部结构在 Björn 的主页 (2000) 上进行了描述。最终,这将/可能会包括虚拟机指令的描述。Björn 还包括一些比较不同版本的 BEAM 机器的基准测试。您可能还想查看 beam_lib 模块。
Joe Armstrong 的论文,(2003)在存在软件错误的情况下构建可靠的分布式系统 包含许多有趣的信息,包括对该语言的简要概述、一些案例研究以及对该语言演变的一些讨论,有点类似于 Bjarne Stroustrup 的 C++ 的设计和演变。
SAFEERLANG 中的安全分布式通信 (2000),这是一篇学生论文,其中很好地概述了 Erlang 的分布式机制(第 5 节),尽管已经过时了。
通过集成访问控制来增强分布式 Erlang 的安全性 (2000) 很好地概述了 Erlang 的一些实现方面,包括内存分配(第 7 节)。
(前爱立信)计算机科学实验室收集了一些关于 Erlang 相关主题的论文。
源代码发布版本包含一个目录,其中包含子目录 erts/emulator/internal_doc/ 中一些内部构建文档。
糟糕的事情会发生:Erlang in Anger (2014) 包含一些技巧和窍门,可帮助您了解生产 Erlang 系统中故障的来源,并提供有关如何调试和实时解决它们的指导。
3.7 还有哪些相关主题的文档?
有一些关于使用 Erlang 作为书中主要语言的特定类型应用程序的书籍
使用 Erlang 构建 Web 应用程序,作者:Zachary Kessin
通过 Erlang 进行神经进化的手册,作者:Gene I. Sher
关于函数式语言中数据结构的经典教科书是 Chris Okasaki 的 Purely Functional Data Structures。关于惰性的部分(大约占本书的一半)不适用于 Erlang,但仍然很有趣。本书的早期版本可以在网上找到,本书本身可以从许多在线书商处购买。
计算机程序的构造和解释 是函数式编程的标准入门教材。它既有纸质版,也有在线版。
3.8 是否有 Erlang 源代码的公共存储库?
Erlang 有一个由 Erlang/OTP 小组维护的官方 Git 存储库。还有一个非官方存储库,其中包含追溯到 1999 年的所有历史记录。
3.9 我如何为 Erlang 做贡献?
当您编写想要共享的 Erlang 代码时,有很多方法可以共享它。宣布此类事情的地方是 Erlang Questions 邮件列表,或者,如果是补丁,则是 Erlang Patches 邮件列表。您将实际代码放在哪里取决于您。
如果您的代码是对 OTP 现有部分的更正、修改或扩展,则传播它的常用方法是通过github。
如果您的代码是新的应用程序或库,一些常见的发布方式是
启动您自己的github 或 Google code 项目
将代码放在个人主页上
3.10 我如何提出对语言本身的更改?
即使 Erlang 是一种相当成熟的语言,并且拥有庞大的已建立代码库,仍然会不断进行更改和增强。存在一种称为Erlang 增强提案的机制,该机制使该过程正式化。
3.11 如何报告错误?
使用错误跟踪器。
3.12 在现实世界中哪里可以讨论 Erlang?
会议
Erlang Factory 在世界各地组织定期的 Erlang 会议。按照传统,年度 Erlang 用户大会于 5 月在斯德哥尔摩(Erlang 的诞生地)举行。
Erlang 偶尔也会出现在其他会议上,例如,Strange Loop 通常会有一个或两个关于 Erlang 的演讲。
一些 Erlang 用户也会参加关于函数式编程的学术会议。国际函数式编程会议通常包括一个 Erlang 研讨会。
Erlounge 和用户组
偶尔,有人会在 erlang-questions 上发出邀请,以非正式的方式喝几杯啤酒讨论 Erlang。过去的 Erlounges 在瑞典(斯德哥尔摩)、苏格兰、美国(亚特兰大、纽约、芝加哥、北卡罗来纳州、绍姆堡、西雅图、旧金山湾区、阿灵顿、华盛顿特区)、法国(巴黎)、中国(珠海、上海、杭州)、意大利、德国(亚琛)、波兰(克拉科夫)、新西兰(惠灵顿)等地举行过。在 erlangcentral.org 上的活动页面列出了一些会议,其他会议则在当地组织。
3.13 哪里可以进行在线 Erlang 讨论?
erlang-questions
这旨在用于关于 Erlang 的一般性讨论。任何人都可以发送邮件到 erlang-questions@erlang.org,并且任何人都可以订阅。
erlang-announce
此列表包含关于 Erlang 新版本、补丁等的公告。发送到 erlang-announce 的所有帖子也会出现在 erlang-questions 中。
网络论坛和邮件列表存档
erlang-questions 列表已在 Erlang 网站上存档。
Erlang Central 有一些与 Erlang 相关的论坛。它还有一个很好的 Erlang 活动日历(黑客之夜、当地聚会等)
IRC 频道
在 irc.freenode.net 上有一个 IRC 频道,#erlang
3.14 我在哪里可以找到 Erlang 程序员/雇主?
向erlang-questions@erlang.org发送一条简短的帖子是一个好的开始,尤其是当主题行清楚地将帖子标识为求职/广告时。
有几个网站的 Erlang 工作职位高度集中
一些咨询小组拥有 Erlang 认证人员,包括erlang-solutions.com(总部位于伦敦,在全球范围内接受任务)、Process-one(总部位于法国)和ENEA data(瑞典)
如果您想在此处列出,请发送邮件到 matthias@corelatus.com。
Kontakten(联系人)是爱立信内部报纸,可能也有用,因为它刊登了许多招聘广告。