12

我即将用 Erlang 构建一个系统(我的问题可以用多个 CPU 更好地解决),我已经浏览了:

  1. 学习一些 Erlang
  2. Erlang/OTP 在行动
  3. Erlang 编程(阿姆斯壮);
  4. Erlang 编程(Cesarini)。

Erlang/OTP in Action 一书 (2) 说:“……编写非 OTP Erlang 代码确实是一个高级主题,只有当你真的必须这样做时才应该这样做。所以也许从来没有做过非 OTP 方式是一种祝福,因为您会立即养成关于 OTP 的正确习惯......”

(2) 坚持商业系统应该仅使用 OTP 构建,而 (4) 温和地表明 OTP 不是唯一的方法。

此外,通过阅读 (4),我发现从 Erlang 的基础知识构建知识有助于理解 OTP 的工作原理(但不是相反)。

那么,问题来了:我应该选择 Erlang/OTP 来构建商业系统还是可以用纯 Erlang 来完成?

4

4 回答 4

36

使用纯 Erlang 学习和玩耍。

在 Erlang/OTP 中构建系统。

于 2011-09-04T10:39:00.063 回答
35

可以用纯Erlang完成吗?

是的,它可以,这与Greenspun 的第十条规则类似:您的系统将包含一个临时的、非正式指定的、充满错误的、缓慢的 OTP 的一半实现。

于 2011-09-04T11:15:12.143 回答
13

OTP 是用 Erlang 编写的,因此绝对可以用纯 Erlang 完成。话虽如此,OTP 为您提供了许多有用的功能,否则您需要自己编写这些功能。@Alexey 是对的,您最终会在此过程中实施一部分 OTP。问题在于,构建容错系统所需的框架(OTP 提供)本身必须非常无故障。

我还将回应@Mazen,在纯 Erlang 中进行实验可以让您很好地了解 OTP 内部发生的事情以及如何在 Erlang 中构建容错系统。之后您将更好地使用 OTP。您将更好地理解何时使用 OTP,以及为什么。

于 2011-09-04T15:46:57.943 回答
3

如果您通读“Learn You Some Erlang”(就像您说的那样),您会注意到作者在“设计并发应用程序”一章中构建了一些在“plain Erlang”中有用的东西。然后在接下来的 2 章中,他基本上将其全部扔掉,并使用 OTP 以更少的代码实现相同的目标(此外,因为它是 OTP 代码,所以它是标准的 - 所以其他熟悉 OTP 的开发人员将会有更好地了解在哪里可以理解它!)

OTP 已经开发和完善了很多年(根据 Wikipedia 于 1998 年首次发布),并得到了大量开发人员的支持,并得到了大型国际公司(爱立信)的支持,并且因为它都是开源的,所以经过同行评审。我认为假设您可以单独构建同样强大和可扩展的东西有点大胆!

所以使用OTP。即使对于“玩”项目,仍然使用 OTP,因为它只能帮助您学习使您的“商业”代码更好:)

于 2012-10-08T14:38:21.503 回答