Почему открытая телекоммуникационная платформа Erlang (OTP) не была перенесена на другие языки?


Я впервые начинаю погружаться в Erlang,и OTP высоко ценится любителями и критиками как золотой стандарт для высокодоступной распределенной обработки.

Учитывая, что OTP существует уже несколько десятилетий и открыто документируется, почему другие языки, поддерживающие облегченные потоки/процессы, не приняли свои собственные версии? Существуют ли технические / политические проблемы? Или все просто пожимают плечами и учат Эрланг?

Спасибо!

3 4

3 ответа:

Самая большая проблема заключается в том, что большинство языковых сред выполнения не имеют встроенного облегченного параллелизма и изоляции ошибок с распространением сигнала выхода. Без этих вещей вам было бы очень трудно правильно портировать OTP.

Для языков, которые имеют правильный тип среды выполнения, я вижу некоторые усилия или, по крайней мере, планы по созданию фреймворков, вдохновленных OTP. облако Хаскелл - это первое, что приходит на ум. Я также ожидаю, что Go и Rust в конечном итоге будут иметь что-то вроде ОТП, если они этого еще не сделали.

Существуют технические проблемы, так как сам Erlang предназначен для тех же функций, которыми известен OTP. Например, Basho Riak является распределенным отказоустойчивым хранилищем ключей и значений, написанным на языке Erlang. Можно было бы перенести его на Haskell или какой-то другой функциональный язык, но это, вероятно, будет много работы. Просто для удовольствия, вы можете посмотреть на OTP материал, написанный на языкеElixir .

На самом деле, это было (попробовано).

Akka-это библиотека, которая берет некоторые функции OTP и реализует их в Scala для JVM. Учитывая, что принципы, лежащие в основе JVM и BEAM (Erlang VM), очень разные (в основном GC, планирование и передача сообщений радикально отличаются), я не могу сказать, насколько успешна эта реализация и сколько преимуществ оригинального OTP она сохраняет. В интернете об этом много (жарких) споров.