Есть ли вещи, которые Эликсир может сделать, что Эрланг не может, или наоборот?

Этот вопрос находится в контексте виртуальной машины Beam и возможностей, которые она предоставляет, а не в общем контексте того, что может сделать полный язык Turing. Я хочу потратить некоторое время на изучение чистого Erlang или Elixir. Я получаю основные различия между ними, и я склоняюсь к Elixir из-за макросов, лучшего синтаксиса и более быстрого развития языка в этот день.

Мой вопрос: если я выберу Эликсир, я наткнусь на то, что я не могу сделать в нем, но могу сделать в Эрланге? Могу ли я использовать все файлы OTP, все библиотеки Erlang, перезагрузить код и т.д. С помощью Elixir?

Я не прошу, чтобы кто-то отдавал предпочтение между ними; просто факты о возможностях языков. Предпочтительно у кого-то, кто использовал оба в производстве.

Ответ 1

Просто для предисловия - я использовал только Elixir в производстве, а не Erlang.

Я бы честно рекомендовал Эликсир. Это мое мнение и не обязательно правильно для вас, но ниже я перечислю свои причины.

  • Производительность: я исхожу из фона Ruby/Rails, поэтому синтаксис и стиль Elixir - это то, что было мне очень знакомо. Одним из основных факторов, который помогает мне определить, следует ли изучать язык, является то, насколько продуктивным я могу быть в нем - в основном, почему я выбрал Ruby. Эликсир тот же. Я могу работать так же быстро, как и Ruby со всеми дополнительными преимуществами concurrency и соответствия шаблонов.
  • Erlang: Поскольку Elixir построен поверх Erlang и компилируется до erlang и пучка vm, у вас есть доступ к каждому модулю и пакету erlang. Поэтому, если вы беспокоитесь об использовании эликсира и упускаете все возможности Erlang, вас не должно быть. Elixir даже имеет собственные реализации большинства функций Erlang/OTP, таких как GenServer, GenEvent и т.д.
  • Сообщество/Ресурсы: сообщество эликсиров действительно отличное. Слабый канал действительно популярен и отличный способ получить ответы на вопросы начинающих. На этом языке уже есть действительно хорошие книги, написанные на языке (Программирование Elixir 1.2 - Dave Thomas, Author the Ruby Pickaxe), которые также легко проникают в язык.

В самом деле, если у вас есть беспорядок с этими двумя, вы, вероятно, придете к тому же решению, что Elixir - гораздо более приятный язык со всеми функциями Erlang + More. Он также растет, я не могу вспомнить точные цифры, но я помню, как что-то читал с веб-сайта Hex (менеджер пакетов) о значительном увеличении загрузки пакетов.

Ответ 2

Вам не следует натыкаться на все, что вы можете сделать, в том, что вы не можете сделать в другом, поскольку вы можете свободно называть код Elixir от Erlang и наоборот. Вы даже можете легко смешивать файлы Erlang и Elixir в одном проекте.

В Эликсире:

:erlang_module.erlang_function(args)

в Erlang:

'Elixir.ElixirModule':elixir_function(args)

Ответ 3

TL; DR - Начать с Elixir

Эрланг имеет более крутую кривую обучения по сравнению с Elixir. Как только вы начнете изучать Elixir, вы автоматически начнете изучать Erlang. Следовательно, начните с Эликсира. Эликсир написан в Эрланге и Эликсире. См. дистрибутив на Github (поскольку Elixir полон макросов, а также мета-программирование). Elixir Project Code distribution

Вы можете использовать Elixir с Erlang и наоборот, отсюда полная эрланговая система Erlang из более чем 20-летних библиотек.

Подробнее от Erlang Solutions

Производительность эликсиров "из коробки" достигается за счет сильной фокусировки на оснастке и удобстве выражения манипуляции данными. Дизайн системы такой же в Elixir и Erlang, но Elixir удаляет много кода шаблона и его легче расширить. Удаление шаблона повышает производительность и позволяет программистам быстрее получать обратную связь - важно, когда вы хотите как можно быстрее запустить свой продукт на рынок. Меньше шаблона также делает для счастливых разработчиков, а счастливые разработчики - неудивительно производительные разработчики.

Joe Armstrong (изобретатель Erlang) сообщение в блоге об Эликсире

Начните здесь, чтобы узнать об Elixir - Начало работы

Как только вы почувствуете, что все идет хорошо, поработайте над тем, чтобы тренироваться на Exercism и другие ресурсы.