简介
2019 年 8 月 3 日
您可能已经开始了解 Erlang,阅读了一些教程和书籍,但您会发现没有任何资料真正告诉您应该如何为团队设置一个现代化的项目。最终您找到了这本指南。Erlang 社区多年来一直在编写入门内容,其中很多内容仍然非常棒。那么,这本新书的意义何在呢?
坦率地说,大多数现有的资料在教授 Erlang 基础知识方面都非常扎实,我们无意取代它们,也无意重复讲解它们所包含的相同内容。相反,我们作者认为,虽然它们在很多方面都非常可靠,但我们可以在某些盲点方面提供帮助。
例如,以下是一些有趣的书籍
- Programming Erlang,由 Joe Armstrong 撰写,非常适合了解 Erlang 背后的理念
- Erlang Programming,由 Cesarini & Thompson 撰写,是一本非常全面的实用指南,涵盖了语言学习和 OTP 的一些内容
- Erlang and OTP in Action,由 Logan、Merritt & Carlsson 撰写,是第一本真正尝试以 OTP 为先导并暗示更广泛的系统设计的 Erlang 书籍
- Learn You Some Erlang,由 Fred Hebert 撰写,可能是对 Erlang 和 OTP 最友好的介绍,试图涵盖从 Erlang 基础知识到 OTP 的设计原则、发布以及整个过程的一切
- Études for Erlang,由 J. David Eisenberg 撰写,是一本极好的配套练习书籍,可以与其他一些 Erlang 书籍结合使用,作为一种实用的补充
- Concurrent Programming ERLANG,由 Williams & Armstrong 撰写,是 90 年代的一部伟大的历史作品,展示了 Erlang 的早期版本及其如何在现实世界的问题中得到应用
- Introducing Erlang,由 Simon St. Laurent 撰写,是您可以获得的关于 Erlang 最简洁的书籍介绍
- Erlang in Anger,由 Fred Hebert 撰写,是唯一一本真正包含了在生产环境中调试 Erlang 系统的完整指南的书籍
- Designing for Scalability with Erlang/OTP,由 Cesarini & Vinoski 撰写,可能是对 Erlang/OTP 系统最现代化的处理方法,并具有现实世界的视角。
- The BEAM Book,由 Erik Stenman(以及许多社区贡献者)撰写,是关于虚拟机内部机制最先进的资源
- Property-Based Testing with PropEr, Erlang, and Elixir,由 Fred Hebert 撰写,是唯一一本教授 Erlang 属性测试的书籍
还有一些其他的书籍。
我们无意取代这些书籍。大多数(如果不是全部)这些书籍的一个重大缺失之处在于,它们往往只关注 Erlang/OTP 本身。事实上,其中许多书籍是在社区工作方式发生巨大转变之前撰写的。例如,Learn You Some Erlang 虽然非常完整,但在任何社区驱动的构建工具获得广泛采用之前以及 OTP 发布的概念得到广泛使用之前就已经开始编写了。它们中没有任何一本是在当前容器化平台的新时代下撰写的。而且几乎没有任何一本提到如何构建项目以使其适合 Erlang 开源生态系统。
因此,这就是Erlang 入门 的意义所在。本书(和网站!)旨在填补其他书籍和手册尚未充分涵盖的空白。您将在这些页面中学到的内容将包含一些非常有用的东西,例如
- 如何设置自己以使用多个 Erlang 版本,因为在现实世界中,您最终需要为工作场所或朋友组使用的多个项目运行多个 Erlang 版本。
- 我们还介绍了如何设置编辑器和其他工具,因为即使您已经了解了基础知识,也可能没有一个良好的 Erlang 设置。
- 如何从上至下处理 OTP 系统。大多数现有的资源都采用自下而上的方法,但我们希望您能够从第一天起就拥有正确的项目结构,然后根据需要使用其他资源填补空白。
- 一个好的项目需要什么,包括依赖项处理、一些测试实践、配置和文档处理等等。
- 如何在常见的开放平台上设置良好的持续集成 (CI) 管道,以便代码审查和自动化测试能够获得最佳支持
- 如何处理一些没有人真正正确教授的难题,例如处理字符串(特别是 Unicode)、时间和正确的 SSL/TLS 配置
- 如何将您的 Erlang 系统部署为一个自执行的文件包
- 如何将您的 Erlang 系统正确打包为 Docker 镜像,以及如何使用 Kubernetes 管理其生命周期
- 如何计划设置操作并启动指标之外虚拟机提供的内容;例如日志记录和分布式跟踪、用于获取指标仪表盘的平台等等。
- 如何构建一个团队,使其开始在商业项目中使用 Erlang
- 如何面试您的第一批 Erlang 专家或开发人员
- 如何构建您的实践,例如代码审查、经验分享等等。
相反,我们不会涵盖诸如 Erlang 基础知识、核心 OTP 行为等内容。这些内容在过去的其他资源中已经多次被涵盖,其中许多资源都是免费提供的。我们仍然整理了一个速查表附录,如果您需要复习,可以参考它。
从本质上讲,我们希望Erlang 入门 成为各种入门书籍和更高级资料(如Erlang in Anger,它允许您在生产环境中调试内容)之间的缺失环节。我们希望这本书能教会您如何从“好的,我认为我掌握了基础知识”过渡到“让我们开始这个项目,并使其正确运行”。阅读完本书后,您应该能够准确了解最佳实践,以便与 Erlang 社区的其他成员完美契合。