Задолбанный моими дифирамбами Elixir’у (ну а чё, я неофит, неофиты восторгаются) коллега спросил шо-то типа «ну а где ложка дёгтя в этой цистерне мёда[, которой ты старательно покрываешь меня ежедневно по десять раз, задолбал, скотина, но я вежливый кролик, потому не посылаю тебя в пеший эротический тур, хоть и очень хочется]?», после чего я понял, что завтыкал и упустил провести обычный ресёрч гугления [why Elixir is bad].

Погуглил, чё. Почти ничего не нашёл. Не потому, что язык идеален (нет таких), но потому, что его мало где используют. Эрлангисты плюются на синтаксис и вполне разумно интересуются «нафига, если нам и так норм?». Рубисты не особо стремятся из своего угла переползать в другой, им тоже и так норм (пока деньги на сервера в AWS не заканчиваются расширять RoR-кластеры). Джависты наивно интересуются наличием IDE, выслушивают ответ, сравнивают со своими IDE, уходят. Кому-то статической типизации не хватает (ну это вечное), кому-то ещё чего. Ну и т.д. Короче, толкового анализа и снятия мяса с костей не смог найти.

Но на колобка наскреблось. Наиболее внятное списком ниже.


[2016] Elixir, the bad parts? — в целом интересное обсуждение, из которого хочу вытащить две важных штуки:

  • Elixir / Erlang не панацея, это «просто» другая VM, хорошо справляющаяся с одним кластером задач и плохо с другим (вот веточка, в которой чувак удивлён низкой скоростью работы со строками в своём учебном приложении); ну т.е. это не универсальный стек совсем, что можно в какой-то мере оценить как bad part;
  • чтобы писать на Elixir хорошо и правильно, надо учить Erlang; самая понятная причина — вы всё равно будете использовать часть OTP, внутрь которой надо будет заглядывать и понимать, что происходит; ну, наверное, тоже минус.

[2017.08] Elixir in depth — reading and personal notes — чувак хорошо разложил со своей табуретки, да ещё и на HN обсуждение; полезное чтение; много толковых наблюдений и ссылок, лучше почитать его, а не мою выжимку.

[2017.08] Ask HN: Who is not betting on Elixir and why not? — из тредов (в которых и на Erlang гонят) выдавил следующее: мало обкатанных в продах библиотек; проблемы с деплоем (например, «Deployment was pretty terrible» и «The deployment story for elixir is… substantially worse than ideal, for, seemingly, no reason at all»).

[2018.11] Why you should not use Elixir in production — язык ещё не стабилен; теряется обратная совместимость; маленькое сообщество; разнобой библиотек; проблемы с деплоем и мониторингом (частично унаследованные, впрочем, от Erlang, как я понял).

[2019.03] Talk me out of Elixir — прикольный тред про переход с Ruby на Elixir (ну и там чуваки делятся): нехватка библиотек; бедная экосистема.

Любопытным также будет чтение эссе Армстронга: A week with Elixir. Казалось бы, 2013 год, но def triple(x) do 3*x; end в 2019 году так и не поправлен.


Если свести и покумекать, получается у меня следующее, относящееся именно к Elixir (а не унаследованное от Erlang):

  • деплой — упоминают всерьёз и достаточно часто, чтобы считать это практической проблемой, на будущее отложил эссе Best practices for deploying Elixir apps;
  • мало библиотек — детская болезнь, ну и можно использовать Erlang при желании;
  • маленькое сообщество — детская болезнь;
  • бедная экосистема — детская болезнь;
  • знание Erlang — дискуссионный момент, т.к. зависит от того, чем занят боец; тем, кто глубоко тюнит хайлоад, обязательно знать Erlang / BEAM; тем, кто после перехода с Ruby на Elixir за месяц чё написал и ему достаточно уже прироста, наверное, и не надо.

Пока ничего уникально страшного не вижу (кроме деплоя, с ним, похоже, надо прям разбираться-разбираться), почти всё универсально для молодых языков, за которыми не стоят локомотивы типа Google (Go), Apple (Swift), Mozilla (Rust) и т.п. Остальное либо точечные проблемы (тоже в каждом языке есть, с ними просто мириться, фантазируя о том, как однажды какой-то герой заборет), либо вкусовщина (очевидно, если человек хочет писать объектно-ориентированный код, ему не стоит писать функциональный код), либо кто-то в чём-то не разобрался (да, вряд ли Erlixir подходит для задач массовой строковой обработки, например).

Ну и всюду говорят очевидное: сложно найти разработчика со знанием Elixir. Правда, этому есть неплохой контраргумент «зачем вам разработчик, не умеющий / не желающий ради [правильно сделанной] работы [и свежего опыта] выучить ещё один язык», но тут как всегда.


Но всё это такоэ. Сообщество и в самом деле маленькое, мало статей, мало обсуждений, да даже вопросов мало. Сложно всерьёз и глубоко рассуждать о плюсах и минусах чего-то, чем мало кто пользуется. Даже если 10% чуваков спотыкаются о проблему, должен найтись среди них тот, кто проблему ясно опишет и опубликует описание, да ещё так, чтобы это описание кто-нибудь заметил и подхватил.

В сумме же… в серьёзный и дорогой по рискам продакшен я бы Elixir не брал пока, если нет долговременной команды (не бабочек-однодневок, шарахающихся по вакансиям при первом же форс-мажоре), готовой слаженно рыть факапы вплоть до машинного кода. А вот в проекты без рисков и по ТЗ укладывающихся в особенности BEAM, прям вот брать и пользоваться.

PS. Т.к. перестал помнить все полезные ссылки про Erlixir, завёл линклист Про Erlang и Elixir, будет складом для актуальных ссылок, а то, блин, каждая вторая в чужих линклистах либо битая, либо устарела, либо автор в монастырь ушёл.