scala - Erlang 并发模型 vs Scala vs Go

标签 scala concurrency functional-programming erlang jvm

很难说出这里问的是什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或言辞激烈,无法以目前的形式合理回答。如需帮助澄清此问题以便可以重新打开,visit the help center .




8年前关闭。




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

令人惊讶的是(至少对我而言)我发现它 (Erlang) 被用于许多著名的核心应用程序的核心,例如 Facebook 的聊天 channel 、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 有什么优势可以让人们拿起它并投入如此多的时间来学习它?

    非常感谢。

    最佳答案

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

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

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

    关于scala - Erlang 并发模型 vs Scala vs Go,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12458197/

    相关文章:

    Lua 变长函数参数为 nil

    scala - 什么是 Applicative Builder

    带有案例的 Python map()

    scala隐式返回值问题

    java - 使用 Gradle 在 Java 之前/与 Java 一起编译 Scala

    java - 构造函数中的同步以使其先于发生

    java - HashMap 持有重复键

    java - 当子项调整大小时调整 JFrame 大小 : how to keep up?

    scala - 如何获得在IntelliJ中创建新的Scala工作表的选项?

    java - HashMap成员的并发修改