Редкие языки: Elixir

Что будет, если скрестить Erlang и Ruby.
18 мая 2016225057Андрей Никифоров9326419

Здравствуйте!

В комментариях к статье «Редкие языки: Erlang» я обещал рассказать о Elixir. Докладываю.

Что это, Бэрримор?

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

Elixir намного младше Erlang — он появился в 2012 году, а создал его Хосе Валим, бывший разработчик Ruby on Rails. Кроме того, Elixir испытал влияние Clojure.

Синтаксис Elixir близок к синтаксису Ruby. Да вы сами посмотрите:

Erlang

io:format("Hello World!~n", []).

Elixir

IO.puts "Hello World!"

Для новичка синтаксис Elixir может быть понятнее Erlang. Хотя не факт, конечно — угадайте, что делает код:

for n <- [1,2,3,4,5], rem(n,2) ==1, do: n*n

Кроме того, для Elixir появилось намного больше библиотек — не так много, как для Go, но тоже внушительно: https://github.com/h4cc/awesome-elixir

Список компаний, использующих Elixir в работе: https://github.com/doomspork/elixir-companies

Знаковые проекты

Ecto
Так сложилось, что для Erlang не было толкового ORM. Проект Chicago Boss развивал свой ORM — boss_db, но он был далек от идеала. Для проектов с интенсивной работой с базами данных приходилось изобретать свои решения.

Ecto появился с Elixir и предоставляет четыре больших модуля для работы с базами данных в Elixir: репозитории, схемы, миграции и язык запросов. Без появления Ecto было бы невозможным появление самого знакового проекта Elixir — Phoenix.

Посмотреть еще: https://github.com/elixir-lang/ecto

Phoenix
Erlang был недружелюбным языком для большого веба, несмотря на количество библиотек для работы с HTTP. Проекты вроде Chigago Boss не сильно помогали — писать веб на Erlang решались только сильные духом.

Phoenix сделал Elixir одним из решений для написания крупных веб-приложений. Конечно, он не такой изящный, как Ruby on Rails, в силу своих ограничений, но это был шаг вперед.

При этом Phoenix использует всю мощь платформы Erlang — изоляцию памяти потоков, мощную многопоточность, метапрограммирование.

Посмотреть еще: https://github.com/phoenixframework/phoenix

Узнать больше

Официальная документация: http://elixir-lang.org/docs.html

Создатель Erlang Джо Армстронг о Elixir: http://joearms.github.io/2013/05/31/a-week-with-elixir.html

Книги: http://elixir-lang.org/learning.html

 

Есть что добавить? Пишите в комментарии.


Нередкие языки: профессия «Веб-разработчик».