[programming-languages] 你为什么决定“反对”使用Erlang?



Answers

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

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

可能还有其他原因我现在无法想到,但这些都是重点。

Question

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




虽然我喜欢Erlang运行时和OTP平台的许多设计方面,但我发现它是一种非常烦人的编程语言,逗号和句号完全是蹩脚的,并且通常需要重写许多行的最后一个字符代码只是改变一行。 另外,一些在Ruby或Clojure中很简单的操作在Erlang中很乏味,例如字符串处理。

对于依赖共享数据库的分布式系统,Mnesia系统非常强大,并且可能是一个不错的选择,但我使用语言进行编程学习并获得乐趣,Erlang令人讨厌的因素一旦超过了基础,就开始超过了趣味因素银行账户教程,并开始为XMPP服务器编写插件。




一些原因:

  • 因为它看起来与任何习惯于C语言系列的人都是陌生的

  • 因为我希望能够在Java虚拟机上运行,以利用我所了解和理解的工具(如JConsole)以及已经进入JIT和GC的多年努力。

  • 因为我不想重写多年来建立起来的所有(Java)库。

  • 因为我不知道Erlang的“生态系统”(数据库访问,配置,构建等)。

基本上我熟悉Java,它的平台和生态系统,我已经投入了很多精力来构建在JVM上运行的东西。 转移到scala 更容易




我已经在一些项目中使用了Erlang。 我经常用它来享受宁静的服务。 然而,我不使用它的地方在于复杂的前端Web应用程序,其中像Ruby on Rails这样的工具要好得多。 但对于幕后的权力经纪人,我知道没有比Erlang更好的工具。

我还使用Erlang编写的一些应用程序。 我使用了CouchDB和RabbitMQ,并且我已经设置了几个EJabberd服务器。 这些应用程序是其领域内功能最强大,最简单且最灵活的工具。

不想使用Erlang是因为它不使用JVM,在我看来很愚蠢。 JVM并不是一个神奇的工具,它是世界上最好的工具。 在我看来,从不同工具库中进行选择,而不是陷入单一语言或框架的能力是将专家与代码猴分开的能力。

PS:在阅读我的评论回到上下文后,我注意到它看起来像我打电话oxbow_lakes一个代码猴子。 如果他这样做,我真的不会道歉。 我正在总结关于程序员的类型,我绝不会根据他的一个评论来称呼这样一个负面的名字。 尽管我鼓励他不要让JVM成为某种交易断​​路器,但他可能是一位优秀的程序员。




对我来说,Erlang动态输入的事实让我很担心。 虽然我确实使用动态类型化语言,因为它们中有些是非常面向问题的(使用Python,我解决了很多问题),但我希望它们是静态类型化的。

也就是说,我实际上打算给Erlang一段时间的尝试,而且我刚开始下载源代码。 所以你的“问题”毕竟取得了成功。 ;-)




将其用于专有的,多层次的二进制协议的消息网关。 用于服务器和服务之间关系的OTP模式以及二进制模式匹配使开发过程变得非常简单。 对于这样的用例,我可能会再次倾向于Erlang。




我甚至不会去看Erlang。

两篇博客文章为我贴上了这篇文章:

  1. Erlang机器遍历整个列表以确定他们是否有要处理的消息,获取消息的唯一方法是指遍历整个列表(我怀疑通过pid过滤消息还涉及到整个消息列表的走动)

    http://www.lshift.net/blog/2010/02/28/memory-matters-even-in-erlang

  2. 事实上,没有奇迹,Erlang并没有提供太多的服务来处理不可避免的重载 - 例如,它仍然留给应用程序员处理检查消息队列中的可用空间(据推测,通过走队列来计算当前长度,我想没有内置的机制来确保发件人之间的公平性)。

    erlang - 如何限制消息队列或模拟它?

在我的书中,(1)和(2)都没有那么天真,我相信在Erlang机器中还有更多类似性质的软件“宝石”。

所以,对我来说没有Erlang。

看来,一旦你必须处理一个需要高性能的大型系统,C ++ + Boost仍然是镇上唯一的游戏。

接下来我要看看D。




Related