最近,我一直在深入研究功能编程。通过这个,我对Erlang及其并发模型有了一些了解。
令人惊讶的是(至少对我来说)我发现它(Erlang)被用在许多着名的核心应用程序的核心,比如Facebook的聊天频道,这是什么应用程序信使的后端而在Call Of Duty的核心在线服务器中。 我甚至在一些论坛中读到,对于参与Web请求的分布式系统,Erlang比node.js或JVM更具可扩展性(不确定该信息是否准确)
为什么我们有例如Twitter从RoR迁移到Scala的案例?尽管Scala旨在与功能范例一起使用,但是Erlang会不会更好?
另一个我无法理解的好例子是Google。众所周知(通过Google I / O 2011中的Go的演示)核心应用程序是基于C ++或Java构建的。那么,如果Erlang能够适应这个角色,为什么他们必须创建Go(golang)呢?
注意:不要误解我的意思。我很清楚,如果你有扎实的Java背景,那么Scala将比Erlang更快地学习功能编程。但是我的意思是将生产力放在一边。
Erlang的优点是什么才能让人们去学习并投入大量时间学习它?
非常感谢。
答案 0 :(得分:5)
Erlang并不适合所有问题。您的示例显示,它主要用于(分布式)网络应用程序。但Java和Scala具有更广泛的操作用途。您可以构建桌面应用程序,游戏等等。 go编程语言与scala不同,因为它允许你进行命令式编程,这是erlang无法实现的。
erlang的主要“问题”是它的功能语言。许多人都坚持使用命令式的基于c语言的编程语言,使用像erlang这样的语言就像学习一门完整的新语言一样。
如果你的问题完全适合erlang域,那么它是最好的选择之一。但它不是像Java或Scala这样的语言,它们非常适合许多问题。