为什么Erlang的开放式电信平台(OTP)没有移植到其他语言?

时间:2013-09-23 21:23:06

标签: erlang otp

我第一次开始潜入Erlang,OTP被爱好者和评论家高高举起,成为高度可用的分布式处理的黄金标准。

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

谢谢!

3 个答案:

答案 0 :(得分:6)

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

对于具有正确运行时类型的语言,我看到了一些努力或者至少计划构建OTP启发框架。 Cloud Haskell是第一个浮现在脑海中的人。我还期望Go和Rust最终会有类似OTP的东西,如果他们还没有。

答案 1 :(得分:1)

存在技术挑战,因为Erlang本身是为OTP所知的相同功能而设计的。例如,Basho Riak是一个用Erlang编写的分布式容错键/值存储。有人可能能够将它移植到Haskell或类似的功能语言,但它可能需要做很多工作。只是为了好玩,您可以查看Elixir language中编写的OTP内容。

答案 2 :(得分:0)

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

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