Elixir & Phoenix

Evgenii Burmakin, 24.09.2016

Относительно недавно созданный канал #elixir в нашем приватном слак-чатике время от времени доставляет ссылки на hello-world-приложения и статьи, описывающие, почему вы ну обязательно должны любить Эликсир. И я заинтересовался. Пошел в elixir-lang.slack.com и спросил, а нет ли чего-нибудь вроде Railstutorial от Хартла, только про Феникс. Порекомендовали Programming Phoenix. Посмотрел анонс книги, содержание и решил сначала немного познакомиться с самим языком, ибо с наскоку ну никак — совсем новый язык для меня, все-таки. Хотя я уже слышал сполгода назад о книге Programming Elixir, она показалась мне не самой простой, а хотелось чего-то прямо ну вообще чтобы не напрягаться. Не получилось :D

В общем, я остановился на тоненькой (210 страниц) книжке под названием Introducing Elixir. Надеюсь, вы не уснули, читая столь длинное и не очень осмысленное введение, я уже перехожу ближе к делу.

Книжку по Эликсиру я прочитал дня за 4 или 5, она реально простая, с хорошими примерами. До Эликсира с функциональным программированием я не сталкивался, поэтому взрыв башки был неминуем. Ладно непривычные типы данных вроде туплов и листов пока труднее всего понять паттерн матчинг и отсутствие циклов, которые здесь заменяются рекурсивным вызовом функций. То есть есть for, конечно, но это такое. Непривычно было видеть функции с одинаковыми названиями, работающие при этом в разных случаях. В любом случае после прочтения книжки не появилось желания забросить все это дело нафиг, свою роль сыграли, конечно же, прославленная многопоточность Эликсира и fault tolerance. И скорость. Конечно же скорость.

После Introducing Elixir настал черед Programming Phoenix. По хорошему, конечно, надо было попрактиковаться на голом Эликсире, пописать что-то свое интереса ради, но хотелось веба :)

Programming Phoenix отнял около 11 дней на прочтение. За это время я узнал, как состряпать CRUD, протестировать его, использовать channels, OTP, супервайзинг и все это дело протестировать. Получилось довольно интересно, хотя и понятно, что это все самая-самая поверхность, и настоящее мясо — оно в практике, в работе над реальным кодом, а не синтетикой из книжки, пусть приложение-примери и оказалось не самым унылым.

В общем, для чего я все это пишу: Эликсир интересный. Феникс еще интересней. Несмотря на то, что языку всего пятый год (если не ошибаюсь), инфраструктура у него уже сейчас такая, что некоторые другие языки могут позавидовать. Erlang, взятый за основу, дает супермощную платформу для построения отказоустойчивых приложений. Не хочу ванговать по поводу конкурентности, но мне кажется, что Эликсир себя очень мощно проявит и вместе с Фениксом они станут достаточно популярными, чтобы повзрослеть. Кроме того, комьюнити подбирается во многом из бывших и настоящих руби-разработчиков, если это вам о чем-то говорит. Уже есть стайлгайды, библиотеки под феникс, люди пишут штуки для решения типовых задач вроде аутентификации, это вот все.

Если вам интересен язык, то рекомендую почитать описанные книжки, они короткие, всего 500 страниц в сумме. А я пока планирую переписать свой рельсовый круд на феникс, и посмотреть, что из этого выйдет.