【问题标题】:Advantages of Erlang over (something like) node.js?Erlang 相对于(类似于)node.js 的优势?
【发布时间】:2010-11-19 13:35:40
【问题描述】:

我意识到它们是用于解决不同问题的不同野兽,但我想要求列出 Erlang 相对于 node.js 的优势(反之亦然)。您什么时候会使用其中一种?

【问题讨论】:

    标签: comparison erlang node.js


    【解决方案1】:

    Erlang 是一种语言和运行时。我假设您希望将 erlang 运行时与 node.js 进行比较

    首先我将列出相似之处:

    • 两者都适用于事件驱动编程。
    • 两者都专注于高度异步编程。

    然后是 Erlang 的优势:

    • Erlangs 消息传递抽象了本地和分布式进程之间的差异,使分布式编程更容易。
    • Erlangs 热代码加载允许在不中断任何当前活动的情况下对正在运行的服务进行就地发布。
    • Erlang 具有出色的打包和部署工具。
    • Erlangs supervisor 和 gen_server 行为为构建极其健壮和容错的系统提供了一个卓越的框架。

    【讨论】:

    • Afaik node.js 强制您编写事件驱动的代码,而 erlang 只为您提供选项,因此您可以在需要时回退到不同的代码样式。
    • 热加载是节点社区的热门话题,我们很快就会看到这种可能性。有办法做到这一点,使用现有的 V8 API,问题主要是如何无缝地做到这一点。
    • 这些中的每一个都提供了哪些像 Common Lisp 这样的东西没有也不能做的事情?
    • 好吧,我不是 Common Lisp 方面的专家,所以答案可能是任何一种方式。但我怀疑在 Common Lisp 中,您可能必须实现 erlang 构建到它的 vm 和 stdlib 中的运行时位,这使得它在面对故障时特别健壮。
    【解决方案2】:

    Erlang 已经 20 岁了,经历了多次实战。使用您系统上的所有内核并使集群变得容易。

    node.js 还很年轻,每个运行时只会使用一个核心。

    以及杰里米·沃尔所说的一切。

    【讨论】:

    • 现在怎么样了,现在已经 5 年了,现在告诉我应该使用哪一个。
    • 我仍然是 Erlang 的忠实拥护者,并且随着 Elixir 的出现,VM 现在有了一种有可能变得非常流行的语言。 Phoenix 框架非常棒,ejabberd 可以以非常优雅的方式原生嵌入 Elixir 模块。
    • 我根本不想从这个评论中删除,而且我没有大量的 erlang 经验。然而值得一提的是,nodejs 的核心库非常小(流等),但其中“更大”的部分是 V8,谷歌的 javascript 引擎。所以这些库已经经历了大量的迭代,在这一点上被认为是相当稳定的,但它的主要方面非常坚如磐石,因为 V8 更老,而且经过了更多的实战测试。
    【解决方案3】:

    不要低估 Erlang 模式匹配的威力。尽管我很喜欢 JavaScript,但这种令人上瘾的语言特性根本就没有融入其中。似乎 JS 社区也不太欣赏无共享状态范式。最后,使用多核的多实例对我来说似乎是一种倒退。

    【讨论】:

      猜你喜欢
      • 2011-11-09
      • 2011-10-20
      • 2017-03-19
      • 2010-12-23
      • 2015-07-23
      • 2011-02-26
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      相关资源
      最近更新 更多