构建商业系统:纯Erlang还是Erlang / OTP?

时间:2011-09-04 09:23:54

标签: erlang otp

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

  1. 了解一些Erlang ;
  2. Erlang / OTP正在行动
  3. 编程Erlang (Armstrong);
  4. Erlang编程(Cesarini)。
  5. Erlang / OTP in Action一书(2)中说:“...编写非OTP Erlang代码实际上是一个高级主题,只有当你真的需要时才应该这样做。所以也许永远不会这样做非OTP方式是一种祝福,因为你会立即就OTP事情找到合适的习惯......“

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

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

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

4 个答案:

答案 0 :(得分:35)

学习和玩纯Erlang。

在Erlang / OTP中构建系统。

答案 1 :(得分:34)

  

可以用纯Erlang完成吗?

是的,它可以使用Greenspun's Tenth Rule的类似物:你的系统将包含一个临时的,非正式指定的,错误缠身的,一半OTP的慢速实现。

答案 2 :(得分:13)

OTP是用Erlang编写的,所以它绝对可以在纯Erlang中完成。据说OTP为您提供了许多有用的功能,否则您需要自己编写。 @Alexey是正确的,你将最终实现一部分OTP。问题在于,构建容错系统所需的框架(OTP提供)本身必须非常无故障。

我也会回应@Mazen,因为在纯Erlang中进行实验可以让你对OTP内部的内容以及如何在Erlang中构建容错系统有一个很好的感觉。之后你会更好地利用OTP。当使用OTP时,您将更好地理解,以及为什么。

答案 3 :(得分:2)

如果你仔细阅读“了解你的一些Erlang”(就像你说的那样),你会注意到作者花了Designing a Concurrent Application章在“普通的Erlang”中构建了一些有用的东西。然后在接下来的两章中,他基本上抛弃了它,并使用OTP以更少的代码实现相同的事情(除此之外,因为它是OTP代码,它是标准的 - 所以其他熟悉OTP的开发人员将拥有更好地了解在哪里理解它!)

OTP已经在批次多年(1998年根据维基百科发布)与大量开发人员以及大型国际公司(爱立信)的支持下开发和完善,以及同行评论,因为它是所有开源的。我认为,假设你可以单一地构建同样强大且可扩展的东西,这有点大胆!

所以使用OTP。即使是“游戏”项目,仍然使用OTP,因为它只能帮助您学会更好地制作“商业”代码:)