首页 文章

未来投资:Erlang vs. Scala [已结束]

提问于
浏览 1050
65

由于并发编程变得越来越重要,我想知道你在这方面对Erlang与Scala的看法 . 在我看来,Scala拥有更大的用户群,并且可能比Erlang更加光明 . 此外,Scala是一种java .

我知道这些问题总是有点主观,但未来的投资会更好:Erlang或Scala . 甚至是另一种语言?

3 回答

  • 86

    两种语言的核心并不难以学习,也学习它们提供的并发功能 . 事实上,Scala演员受到Erlang演员的影响 . 我会去他们两个,花时间看他们的构造,做并发问题的一些测试等 .

    如果你了解Java,Scala会更自然,因为Erlang更像是prolog . 相反,如果你更倾向于数学或逻辑类型的语言,那么从Erlang开始 .

  • 37

    Erlang专为并发容错通信系统而设计 . 您可以轻松编写处理大量网络连接的服务器(并且由于每个Erlang进程有一个垃圾收集器),服务器可以保留软实时特性(即,在GC完成之前,整个服务器不会暂停) . 您还可以热交换Erlang代码,将其分布在多个节点上等 . 这就是为什么(可以说)最可扩展的XMPP服务器(ejabberd)是用Erlang编写的 . Yaws(Web服务器)是Erlang擅长的另一个例子,请参阅:http://www.sics.se/~joe/apachevsyaws.html . Riak / Couch是使用Erlang构建NoSQL DB的示例 . 这些是Erlang是一个很好的选择的问题 .

    但是在原始计算方面,Erlang VM并不像JVM那么快,因此只要你需要做一些计算密集型工作(例如财务建模),JVM就会成为你的首选平台 . 此外,Erlang的并发模型(演员)在语言中被烘焙 . 如果这不符合您要解决的问题,那么您将不会对Erlang感到满意 .

    从某种意义上说,Scala是更多的语言,并发性,水平可伸缩性或容错性不是语言的一部分 . 它在图书馆的层面上得到了解决('s why there are at least 3 implementations of actors in Scala). The good thing is that you can pick concurrency model that fits your domain. For example if you need software transactional memory (STM), just pick Akka and you'很好去(http://akka.io/) .

    此外,还有一个充分的论点,即使用Scala,您可以利用“JVM投资”和大量JVM库 .

    您没有提供任何有关您希望使用这些语言编写的软件类型的信息,因此很难给出明确的答案 . 话虽如此,鉴于以上所有,Scala可能比Erlang“更安全”投资(根本不打击Erlang / OTP,它是一种优秀的语言/平台) .

    BTW . 如果单机并发对您很重要,那么Clojure(http://clojure.org/)不应该被忽视(也是JVM语言) .

    UPDATE1:如果你喜欢Erlang提供但不是它的语法,请看看elixir-lang.org

    UPDATE2:STM已从Akka中删除 - 现在您可以在actor(无类型或类型)和流之间进行选择(混合/匹配) .

  • 5

    It doesn't matter 只需选择一个并坚持一段时间 . 学习一些东西,做一些很酷的东西,要么继续使用那种语言,要么继续使用另一种语言 .

    关于学习并发编程,要么一切都会好的 . 这里的关键是你将学习一些新东西,除非有一个职位空缺,你试图聘请Erlang专门用它,这真的没关系 . 另外,即使这个开放确实需要Erlang,如果你真的很了解Scala,你仍然可能有很好的机会 .

    试想一下,如果你刚刚选择了一种并且已经开始学习它,那么你花在尝试选择一门新语言的所有时间本来都会花得更好 .

相关问题