你为什么决定“反对”使用Erlang?

你是否真的“试过”(意味着编程,而不只是阅读一篇文章)Erlang并决定反对它的一个项目? 如果是这样,为什么? 另外,如果你选择回到你的旧语言,或者使用F#,Haskell,Clojure,Scala或其他功能语言,那么这也很重要,并说明原因。


我回到哈斯克尔为我的个人项目从Erlang的简单美德Haskell的惊人的类型系统。 Erlang为您提供了大量工具来处理出现问题的时间。 Haskell为您提供工具,以防止您首先出错。

当使用强类型系统的语言工作时,您每次编译时都会有效地证明有关代码的自由定理。

你还从Haskell的类型机制中获得了一堆重载糖,但是这对我来说基本上是次要的 - 即使它允许我表达一些在Erlang中非常冗长或非惯用且不可用的抽象(例如Haskell's类别的演员)。

我喜欢Erlang,我喜欢它的频道和轻松的可扩展性。 当这些是我需要的东西时,我会转向它。 哈斯克尔不是万能的。 我放弃了对空间消费更好的操作理解。 我放弃了神奇的一通垃圾回收器。 我放弃OTP模式和所有这些毫不费力的可扩展性。

但是,正如通常所说的,在Haskell中,如果它敲诈,它对我来说很难放弃安全毯,这可能是正确的。


我们使用Haskell,OCaml和(现在的)F#,因此对于我们来说,它与缺乏类C语法无关。 我们跳过Erlang是因为:

  • 它是动态类型的(我们是Haskell的类型系统的粉丝)
  • 不提供'真正'的字符串类型(我理解为什么,但是令人讨厌的是,这还没有在语言层面得到纠正)
  • 往往会有差(不完整或无法维护)的数据库驱动程序
  • 这不包括电池,似乎没有社区正在纠正这一问题。 如果是这样,它不是很明显。 Haskell至少拥有Hackage,我猜想这就是我们选择这种语言的原因。 在Windows环境中,F#在这里将具有极大的优势。
  • 可能还有其他原因我现在无法想到,但这些都是重点。


    避免Erlang的最好理由是当你无法承担编程的功能。

    我几周前读了一篇反Erlang博客的文章,作者对Erlang的批评之一是他无法弄清楚如何在每次用相同的参数调用函数时使函数返回不同的值。 他真正没有想到的是,Erlang是故意的。 这就是Erlang如何在没有明确锁定的情况下在多处理器上运行得如此之好。 纯功能编程是无副作用的编程。 你可以用胳膊扭曲Erlang,像我们咆哮的博主想要的那样工作,增加副作用,但是这样做可以抛弃Erlang提供的价值。

    纯函数式编程并不是唯一正确的编程方式。 不是每件事都需要数学严谨。 如果您确定您的应用程序最好是用错误使用术语“功能”的语言编写的,那么最好将Erlang从列表中删除。

    链接地址: http://www.djcxy.com/p/47737.html

    上一篇: Why did you decide "against" using Erlang?

    下一篇: Functional programming in nuclear plants?