3 获取 Erlang/OTP 和相关书籍/文章
3.1 在哪里可以获取 Erlang/OTP?
可以从 开源 Erlang 网站 下载开源 Erlang/OTP。该网站提供完整的源代码以及 Windows 机器上的二进制文件。这可能是确保您获取最新版本的最佳位置。
Erlang Solutions 提供 二进制文件,适用于各种平台(Ubuntu、CentOS、MacOS X、Debian、Windows、Fedora 和 Raspian)。
Debian 发行版 的 GNU/Linux 及其衍生版本(如 Ubuntu)在不同的发行版中包含各种版本的 Erlang,作为 解释器。该版本往往落后于 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 的书籍?
不同的书籍针对不同的受众,因此特别推荐一本很难。目前可用的英文书籍,从最新出版的开始,分别是
Introducing Erlang,作者 Simon St. Laurent,2013 年出版,是面向初学者的 Erlang 入门书。您可以直接从 出版商 处购买。
Learn You Some Erlang for Great Good!,作者 Fred Hebert,2013 年出版,是一本关于 Erlang 的初学者书籍。您可以直接从 出版商 处购买,也可以在 网上 阅读。
Erlang and OTP in Action ,作者 Martin Logan、Eric Merritt 和 Richard Carlsson,2010 年出版。您可以从各种在线书店购买,也可以直接从 出版商 处购买。
Erlang Programming (A Concurrent Approach to Software Development) ,作者 Francesco Cesarini 和 Simon Thompson,2009 年出版。您可以从亚马逊等网站或直接从 出版商 处购买。
Programming Erlang: Software for a Concurrent World(作者 Joe Armstrong)是一本关于 Erlang 的书籍,由其中一位创始人撰写,于 2007 年出版。您可以从亚马逊和其他在线书店购买纸质版,也可以直接从 出版商 处购买。
还有一些其他语言的书籍
法语:Erlang Programmation(作者 Mickaël Rémond)可以从 出版商 或通过 亚马逊 订购。
西班牙语:Erlang/OTP Un Mundo Concurrente(作者 Manuel Rubio)可以从 出版商 处直接订购。
仅具有历史意义:Concurrent Programming in Erlang (2nd. Edition, 1993)(作者 Armstrong、Virding、Wikström & Williams)。考古学家可以从 erlang.org 下载 这本书的前半部分。
同样也只有历史意义:Maurice Castro 的书,Erlang in Real Time (1998)。
3.6 有哪些高级 Erlang 文档?
了解 Erlang 内部信息的唯一方法是检查源代码。本节列出了一些有助于理解代码的资料,但请记住,这些资料都会过时,即文章/论文/演示文稿描述的是代码在某个特定时间点的状态,通常是很久以前了。
BEAM 书籍 描述了 Erlang 的虚拟机,称为 BEAM。
The Standard Erlang spec (1999) aims to define the Erlang language. There is currently no compiler which actually implements everything exactly the way Standard Erlang specifies. This specification is quite precise; it's intended as a reference, not a bedtime read! Compiler and tool implementors will find this useful, as will advanced Erlang programmers.
Core Erlang (2004) is an effort to define an Erlang-like language which is nicer to compilers and language tools and can be automatically generated from Erlang. Erlang compilers from R10 onwards can generate Core Erlang from normal Erlang code. They can also generate .beam files from Core Erlang.
The proceedings from the Erlang User Conferences contain many interesting articles. The proceedings for conferences from 1999 to 2008 are also still online.
The internals of the BEAM file format are described on Björn's homepage (2000) . Eventually this will/might include a description of the virtual machine's instructions. Björn also includes some benchmarks comparing different versions of the BEAM machine. You may also want to take a look at the beam_lib module.
Joe Armstrong's Thesis, (2003) Making reliable distributed systems in the presence of software errors contains a lot of interesting information, including a compact overview of the language, a number of case studies and some discussion of the language's evolution, somewhat similar to Bjarne Stroustrup's Design and Evolution of C++.
Secure Distributed Communication in SAFEERLANG (2000), which was a student thesis, contains a good, if dated, overview of Erlang's distribution mechanisms (Section 5).
Enhancing Security in Distributed Erlang by Integrating Access Control (2000) contains a good overview of some of Erlang's implementation aspects, including memory allocation (section 7).
The (Ex-Ericsson) computer science laboratory has a collection of papers about Erlang-related topics.
The source-code release includes a directory with some of the internal build documentation in the subdirectory erts/emulator/internal_doc/ .
Stuff Goes Bad: Erlang in Anger (2014) contains tips and tricks to help understand where failures come from in production Erlang systems, with pointers on how to debug and solve them live.
3.7 有哪些相关主题的文档?
有几本书籍以Erlang作为主要语言,讲述特定类型的应用程序。
Building Web Applications with Erlang by Zachary Kessin
Handbook of Neuroevolution Through Erlang by Gene I. Sher
关于函数式语言数据结构的标准教材是 Purely Functional Data Structures by Chris Okasaki。关于惰性求值的部分(大约占这本书的一半)不适用于Erlang,但仍然很有趣。在线提供了一个早期版本的书籍,这本书本身可以在许多在线书店购买。
Structure and Interpretation of Computer Programs 是函数式编程的标准入门教材。它既有纸质版,也有在线版。
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 Enhancement Proposal的机制,它正式化了这一过程。
3.11 我该如何报告错误?
使用错误追踪器.
3.12 在现实世界中,人们在哪里讨论Erlang?
会议
Erlang Factory 在世界各地定期组织Erlang会议。按照惯例,年度Erlang用户大会于5月在斯德哥尔摩(Erlang的诞生地)举行。
Erlang偶尔会出现在其他会议上,例如,Strange Loop 通常会有一两个关于Erlang的演讲。
关于函数式编程的学术会议也会吸引一些Erlang用户。通常情况下,国际函数式编程大会 会包括一个Erlang研讨会。
Erlounge 和用户组
偶尔,有人会在erlang-questions上发出邀请,在几杯啤酒中非正式地讨论Erlang。过去的Erlounge曾举办于瑞典(斯德哥尔摩)、苏格兰、美国(亚特兰大、纽约、芝加哥、北卡罗来纳州、沙姆堡、西雅图、旧金山湾区、阿灵顿、华盛顿特区)、法国(巴黎)、中国(珠海、上海、杭州)、意大利、德国(亚琛)、波兰(克拉科夫)、新西兰(惠灵顿)等地。erlangcentral.org上的活动页面 列出了一些会议,其他会议则由当地组织。
3.13 人们在哪里在线讨论Erlang?
erlang-questions
这是用于关于Erlang的一般讨论。任何人都可以发送邮件到 [email protected],任何人都可以订阅.
erlang-announce
该列表发布有关Erlang的新版本、补丁等信息。所有发布到erlang-announce 的帖子也会出现在erlang-questions中。
网络论坛和邮件列表存档
erlang-questions列表在Erlang网站上存档.
Erlang Central 有一些与Erlang相关的论坛。它还有一个关于Erlang活动的日历(黑客之夜、当地聚会等)。
IRC频道
有一个IRC频道,#erlang,在irc.freenode.net上
3.14 我在哪里可以找到Erlang程序员/雇主?
在 [email protected] 上发布简短的通知是一个不错的开始,特别是如果主题行清楚地将帖子识别为求职/招聘广告。
有几个网站集中了大量的Erlang职位
几个咨询小组拥有Erlang认证的人员,包括erlang-solutions.com (总部位于伦敦,在全球范围内接单)、 Process-one (总部位于法国)和 ENEA data (瑞典)
如果你想在这里列出,请发送邮件到 [email protected].
Kontakten(联系),爱立信内部报纸,可能也有用,因为它刊登了许多招聘广告。