未来投资:Erlang与Scala
因为并发编程变得越来越重要,我想知道你对Erlang和Scala的看法。 在我看来,斯卡拉拥有比Erlang更大的用户群和更光明的未来。 此外,斯卡拉是一种Java。
我知道这些问题总是有点主观,但未来的投资会是怎样的:Erlang或Scala。 甚至是另一种语言?
Erlang专为并发的容错通信系统而devise。 您可以轻松地编写处理大量networking连接的服务器(由于每个Erlang进程只有一个垃圾回收器),服务器可以保留软实时特性(即在GC完成之前整个服务器不会暂停)。 您也可以热交换Erlang代码,将其分布在多个节点上,等等。这就是为什么(可以说)最可扩展的XMPP服务器(ejabberd)是用Erlang编写的。 Yaws(Web服务器)是Erlang擅长的另一个例子,请参阅: http : //www.sics.se/~joe/apachevsyaws.html 。 Riak / Couch是使用Erlang构buildNoSQL DB的示例。 Erlang是个不错的select。
但就原始计算而言,Erlang VM并不像JVM那么快,所以只要您需要做一些计算密集型的工作(如财务build模),JVM就会成为您的首选平台。 而且,Erlang的并发模型(actors)是用语言来烘焙的。 如果这不符合你想要解决的问题,那么你将不会对Erlang感到满意。
Scala是更“通用”的语言,因为并发性,横向扩展性或容错性不是语言的一部分。 它是在图书馆层面解决的(这就是为什么在Scala中至less有3个angular色的实现)。 好的是你可以select适合你的域的并发模型。 例如,如果您需要软件事务内存(STM),只需selectAkka,您就可以轻松访问( http://akka.io/ )。
另外还有一个观点:Scala可以利用你的“JVM投资”和大量的JVM库。
你没有给出任何一种你想用这两种语言编写的软件的信息,所以很难给你一个确定的答案。 话虽如此,但鉴于以上所述,Scala可能比Erlang更“安全”的投资(根本不用抨击Erlang / OTP,这是一个很好的语言/平台)。
BTW。 如果单机并发对你很重要Clojure( http://clojure.org/ )不应该被忽视(也是JVM语言)。
UPDATE1:如果你喜欢Erlang提供的而不是它的语法,请看看elixir-lang.org
没关系只要select一个,并坚持一段时间。 学习一些东西,做一些很酷的事情,或者继续使用这种语言,或者继续阅读另一种语言。
关于学习并发编程,或者没有问题。 关键在于你将会学到一些新的东西,除非你打算雇用的工作,特别是使用Erlang,这真的没有关系。 另外,即使这个开放确实需要Erlang,如果你对Scala非常了解的话,你仍然可能有一个很好的机会。
试想一下,如果你select了一门新语言,花在尝试select一门新语言上的时间本来可以更好,而且现在已经开始学习了。
这两种语言的核心都不难学,也学习它们提供的并发function。 事实上,斯卡拉演员受到二郎演员的影响。 我会去他们两个,花时间看他们的构造,在并发问题等方面做一些testing。
如果你了解Java,那么Scala会更加自然,因为Erlang更像prolog。 相反,如果您更倾向于math或逻辑types的语言,那么从Erlang开始。