Erlang并发模型与Scala vs Go

12 concurrency erlang jvm functional-programming scala

最近,我一直在深入研究功能编程.通过这个,我对Erlang及其并发模型有了一些了解.

令人惊讶的是(至少对我来说)我发现它(Erlang)被用在许多着名的核心应用程序的核心,比如Facebook的聊天频道,What's App Messenger的后端,还有核心在线使命召唤服务器.我甚至在一些论坛中读到,对于参与Web请求的分布式系统,Erlang比node.js或JVM更具可扩展性(不确定该信息是否准确)

  • 为什么我们有例如Twitter从RoR迁移到Scala的案例?尽管Scala旨在与Functional范例一起使用,但Erlang不会更好吗?

  • 我无法理解的另一个重要案例是谷歌.众所周知(通过Google I/O 2011中的Go的演示)核心应用程序是基于C++或Java构建的.那么,如果Erlang能够适应这个角色,为什么他们必须创建Go(golang)呢?

注意:别误会我的意思.对我来说很明显,如果你在Java中有扎实的背景,那么Scala将比Erlang更快地学习功能编程.但我的意思是,我把生产力放在一边.

Erlang的优点是什么才能让人们去学习并投入大量时间学习它?

非常感谢你.

Tob*_* P. 5

Erlang并不适合所有问题.您的示例显示,它主要用于(分布式)网络应用程序.但Java和Scala具有更广泛的操作用途.您可以构建桌面应用程序,游戏等等.go编程语言与scala不同,因为它允许你进行命令式编程,这是erlang无法实现的.

erlang的主要"问题"是它的功能语言.许多人都坚持使用命令式的基于c语言的编程语言,使用像erlang这样的语言就像学习一门完整的新语言一样.

如果你的问题完全适合erlang域,那么它是最好的选择之一.但它不是像Java或Scala这样的语言,它们非常适合许多问题.

  • Scala还允许您进行命令式编程. (7认同)