Erlang并发模型vs Scala vs Go

Erlang并发模型vs Scala vs Go,scala,concurrency,functional-programming,erlang,jvm,Scala,Concurrency,Functional Programming,Erlang,Jvm,最近,我一直在深入研究函数式编程。通过这一点,我对Erlang及其并发模型有了相当多的了解 令人惊讶的是(至少对我来说),我发现它(Erlang)在许多著名的核心应用程序中都有使用,比如Facebook的聊天频道、What's App messenger的后端,还有《使命召唤》的核心在线服务器。 我甚至在一些论坛上读到,对于处理web请求的分布式系统,Erlang甚至比node.js或JVM更具可伸缩性(不确定这些信息是否准确) 例如,为什么我们会有Twitter从RoR迁移到Scala的案例

最近,我一直在深入研究函数式编程。通过这一点,我对Erlang及其并发模型有了相当多的了解

令人惊讶的是(至少对我来说),我发现它(Erlang)在许多著名的核心应用程序中都有使用,比如Facebook的聊天频道、What's App messenger的后端,还有《使命召唤》的核心在线服务器。 我甚至在一些论坛上读到,对于处理web请求的分布式系统,Erlang甚至比node.js或JVM更具可伸缩性(不确定这些信息是否准确)

  • 例如,为什么我们会有Twitter从RoR迁移到Scala的案例?即使Scala是为了和函数范式一起使用,Erlang不是更好吗

  • 另一个我无法理解的伟大案例是谷歌。众所周知,谷歌的I/O 2011中的GO是核心应用程序是基于C++或java构建的。那么,如果Erlang能够胜任这个角色,他们为什么要创建Go(golang)

注意:不要误解我的意思。我很清楚,例如,如果你有坚实的Java背景,Scala将是一个函数式编程模型,比Erlang学习要快得多。但我是说,我把生产力放在一边

Erlang有什么优势可以让人拿起它并投入这么多时间学习它?


非常感谢。

Erlang并不能解决所有问题。您的示例表明,它主要用于(分布式)网络应用程序。但是Java和Scala有更广泛的操作用途。您可以构建桌面应用程序、游戏等。go编程语言与scala不同,因为它允许命令式编程,这是erlang不可能做到的

erlang的主要“问题”是它的函数式语言。许多人坚持使用基于命令式c的编程语言,使用像erlang这样的语言就像学习一门全新的语言


如果您的问题完全适合erlang域,那么它是最佳选择之一。但它不像Java或Scala那样适合解决更多问题。

Scala还允许您进行命令式编程。请注意,Erlang非常容易学习(可能很难掌握,但这适用于大多数语言)。如果你习惯了功能范式,情况就更糟了。至少在我的大学(乌普萨拉),我们一开始是第一年学习ML,第二年学习Erlang、C和Java。