Весь современный мир понял, что асинхронность нужна в 10% случаев — и это прекрасно делается парой
async/await на подоконнике, ивентлупом на коленке или setTimeout(() => {}, 0) с магической надписью "Node.js". А в Эрланге 90% кода — это ритуал вызова шаманских духов через send... receive... и надежда, что они не перепутают сообщение с предсказанием погоды.Какие там есть легенды про Эрланг?
* Распределённость из коробки? Да это как получить в подарок конструктор "Собери свой кластер", где нет инструкции, а все детали от разных производителей. В итоге каждый инженер-алхимик месяцами варит свой эликсир из
gproc, libcluster и молитв на удачу. И всегда найдётся один главный процесс-баттлнек, который хранит состояние и смотрит на вас, как суслик из "Джуманджи".* Отказоустойчивость? Какая отказоустойчивость в языке, где главный принцип — "Let it crash", а потом "перезапустим и будем делать вид, что так и задумано"? Перезапустили упавший сокет? Ага, конечно. Пересоздали таблицу в памяти, которая испарилась? Без проблем! Просто представьте, что это фича — самоочищающаяся база данных. А знаменитый RabbitMQ, написанный на Эрланге? Он иногда выглядит как сырая поделка, которая падает от
badmatch на ровном месте, словно кот с дивана во сне. Привет пока, ОTP!* Параллельность? А зачем, если есть ZeroMQ, который как рок-звезда — приходит, бросает в сокет месседж и уходит, не дожидаясь ответа? Зачем городить лес из процессов, которые перешептываются между собой, когда можно просто бросить в общую шину событие и забыть?
Короче, Эрланг — это как пытаться запустить SpaceX при помощи парового двигателя и энтузиазма. Почётно, исторически значимо, но пока вы настроите безаварийный полёт, OCaml уже на Марсе яблони сажать будет.
