6

我第一次开始深入研究 Erlang,而 OTP 被爱好者和评论家们高举为高可用性、分布式处理的黄金标准。

鉴于 OTP 已经存在了几十年并且被公开记录,为什么其他支持轻量级线程/进程的语言没有采用它们自己的版本?是否存在技术/政治挑战?还是每个人都只是耸耸肩学习 Erlang?

谢谢!

4

3 回答 3

6

最大的问题是大多数语言运行时没有内置的轻量级并发和带有退出信号传播的错误隔离。如果没有这些东西,您将很难正确移植 OTP。

对于确实具有正确类型运行时的语言,我看到了一些努力或至少计划构建受 OTP 启发的框架。Cloud Haskell是第一个想到的。我还希望 Go 和 Rust 最终会拥有类似 OTP 的东西,如果它们还没有的话。

于 2013-09-24T19:02:35.870 回答
1

存在技术挑战,因为 Erlang 本身就是为 OTP 众所周知的相同功能而设计的。例如,Basho Riak是一个用 Erlang 编写的分布式容错键/值存储。也许可以将它移植到 Haskell 或一些类似的函数式语言,但这可能需要大量工作。只是为了好玩,您可能会查看用Elixir 语言编写的 OTP 内容。

于 2013-09-23T21:30:54.570 回答
0

实际上,它已经(尝试过)。

Akka 是一个库,它采用一些 OTP 特性并在 Scala 中为 JVM 实现它们。鉴于 JVM 和 BEAM(Erlang VM)的底层原理非常不同(主要是 GC、调度和消息传递完全不同),我不能说这种实现有多成功以及它保留了原始 OTP 的多少好处。互联网上有很多(激烈的)辩论。

于 2013-09-25T13:06:55.123 回答