Есть ли вещи, которые эликсир может сделать, что Эрланг не может, или наоборот?
этот вопрос находится в контексте Луча VM и возможностей, которые он предоставляет, а не в общем контексте того, что может сделать полный язык Тьюринга. Я хочу потратить некоторое время на изучение чистого Эрланга или эликсира. Я получаю основные различия между ними, и я склоняюсь к эликсиру из-за макросов, лучшего синтаксиса и более быстрого развития языка в этот день.
мой вопрос: если я выберу эликсир, я наткнусь на то, что я не могу сделать это, но может сделать в Эрланге? Могу ли я использовать все материалы OTP, все библиотеки Erlang, перезагрузку кода и т. д. с эликсиром?
Я не прошу чье-то предпочтение между этими двумя; просто факты о возможностях языков. Предпочтительно от того, кто использовал оба в производстве.
3 ответа:
просто предисловие-я использовал только эликсир в производстве, а не Эрланг.
Я бы честно рекомендовал эликсир. Это мое мнение и не обязательно правильное для вас, но ниже я перечислю свои причины.
- производительность: я исхожу из фона Ruby/Rails, поэтому синтаксис и стиль эликсира-это то, что было мне очень знакомо. Один из основных факторов, который помогает мне определить, следует ли изучать язык, - это то, насколько продуктивно я могу работать это - главным образом, почему я выбрал Руби. Эликсир тот же самый. Я могу работать так же быстро, как и Ruby, со всеми дополнительными преимуществами параллелизма и сопоставления шаблонов.
- Erlang: поскольку Elixir построен поверх Erlang и компилируется до erlang и Луча vm, у вас есть доступ к каждому модулю и пакету erlang. Поэтому, если вы беспокоитесь об использовании эликсира и упускаете все возможности Erlang, вы не должны быть. Эликсир даже имеет свои собственные реализации большинства больших Функции Erlang / OTP, такие как GenServer, GenEvent и т. д.
- сообщество / ресурсы: сообщество эликсира действительно великое. Канал slack действительно популярен и отличный способ получить ответы на некоторые вопросы для начинающих. Уже есть несколько действительно хороших книг, написанных на этом языке (Programming Elixir 1.2 - Dave Thomas, автор Ruby Pickaxe), которые также облегчают доступ к языку.
действительно, если у вас есть возиться с двумя Вы вероятно, пришли к тому же решению, что Elixir-это гораздо более приятный язык со всеми особенностями Erlang + More. Он также растет, я не могу вспомнить точные цифры, но я помню, что читал что-то с веб-сайта Hex (менеджер пакетов) о значительном увеличении загрузки пакетов.
вы не должны натыкаться на все, что вы можете сделать в одном, что вы не можете в другом, так как вы можете свободно вызывать код эликсира из Erlang и наоборот. Вы даже можете легко смешивать файлы Erlang и Elixir в одном проекте.
В Эликсир:
:erlang_module.erlang_function(args)
на Erlang:
'Elixir.ElixirModule':elixir_function(args)
TL; DR -начать с эликсира
Эрланг имеет более крутую кривую обучения по сравнению с эликсиром. Как только вы начнете изучать эликсир, вы автоматически начнете изучать Эрланг. Следовательно, начните с эликсира. Эликсир написан на языке Эрланг и эликсир. смотрите дистрибутив на Github (так как эликсир полон макросов ака мета-программирования).
вы можете использовать эликсир с Эрлангом и наоборот, следовательно полная эко-система Эрланга 20+ лет библиотеках.
Подробнее Erlang Solutions
урожайность эликсира "из коробки" выполнена сильным фокусом на tooling и удобстве в выражении манипуляции данных. Конструкция системы одинакова в Elixir и Erlang, но Elixir удаляет много шаблонного кода и легче расширяется. Удаление шаблона повышает производительность и позволяет программистам получать обратную связь быстрее-очень важно, когда вы хотите запустить свой продукт на рынок как можно быстрее. Менее шаблонный также делает для счастливых разработчиков, а счастливые разработчики являются неудивительно продуктивными разработчиками.
Джо Армстронг ' s (Erlang inventor's)сообщение в блоге об эликсире
начните здесь, чтобы узнать о Elixir - Начало Работы
Как только вы почувствуете, что все идет хорошо, пройдите свой путь к практике на Exercism и другой ресурсы.