Рандомные мысли про эрланг

Sep 11, 2014 17:07

Решил тут пару месяцев назад попробовать сделать один рабочий проект на эрланге. С одной стороны, вроде как предметная область уж очень ровно ложилась под OTP (по моим представлениям), с другой -- вроде как вокруг сплошные success story, поэтому интересно было поближе посмотреть на сабж. Вроде как всё получилось, и получилось неплохо, поэтому имеет ( Read more... )

code, erlang, lisp, beam, otp, common lisp

Leave a comment

Comments 31

dmzlj September 11 2014, 13:21:21 UTC
В чем его реальный минус - это убогая модульность
и большое количество специфичных вещей, которые надо знать,
когда на нем пишешь. Утилиты, бихейверы, это всё.

OTP скорее угнетает и мешает, чем помогает. На х-ле удавалось
писать практически пуленепробиваемые серверы - т.е внутренний процесс,
который чуть что помирает с исключениями, и внешний процесс, который
их ловит и перезапускает внутренний, что-то ничего больше мне обычно от
супервизоров и не надо.

В общем, как-то я не проникся тоже. Хоть и приходится на нем
проект сейчас развивать.

А, ну да. Эрланговый "FFI" по отвратительности стоит на уровне перлового. Хуже не бывает, наверное.

Reply

swizard September 11 2014, 13:40:35 UTC
Модульность, согласен, убогая. А специфичные вещи я просто из мануала беру каждый раз, их, по-моему, запоминать необязательно :)

Про супервайзеры: мне лично пригодилось дерево супервайзеров и restarts rate. Просто в самодельном вотчдоге этот момент тоже надо отслеживать, а то, бывает, при какой-нибудь логической ошибке в распарсивании какого-нибудь бинарного пакета можно бесконечно падать начать при большой нагрузке.

А FFI я даже не пытался осваивать -- все ресурсоёмкие задачи я передаю через zmq наружу эрланга, где считаю их чем-нибудь более приспособленным для этого.

Reply

dmzlj September 11 2014, 13:56:33 UTC
Мы на нем прошивку запилили для девайсов. Уже видно, что решение не лучшее, но, блин, Эрланг продать можно, а Схему или CL - нет.

Reply

swizard September 11 2014, 16:46:21 UTC
Прошивку?! Ну тогда понятно, почему OTP скорее угнетал и мешал, чем помогал :)

Reply


thesz September 11 2014, 13:41:11 UTC
Я Cloud Haskell (который distributed-process) освоил.

Очень доволен.

Reply

swizard September 11 2014, 13:45:57 UTC
Да, тоже попробую при случае, вроде впечатления у народа положительные.

Reply


migmit September 11 2014, 14:14:33 UTC
По поводу дерева супервизоров процитирую себя из другого места:
> Отвалившийся процесс в эрланге - это так же как и эксепшн ( ... )

Reply

swizard September 11 2014, 16:30:09 UTC
У меня тоже была подобная ситуация, кстати :) Но я быстро разобрался, видимо, потому что логи, всё таки читал.

> А вот насчёт "динамически влиять на программу" хотелось бы пояснений. Чего конкретно не хватает?Ну смотри, допустим, есть некий сервис: ему сыпятся запросы, он на каждый даёт какой-то ответ. Допустим, появилось подозрение, что для какого-то типа запросов у нас какая-то проблема в логике обработки ( ... )

Reply

migmit September 11 2014, 17:34:52 UTC
> Трейсить вызов бессмысленно, там идёт пятьдесят запросов в секунду, например, как из них выцепить нужный тип?

Ну, я лично не пробовал, но если сервис написан как положено (т.е., через gen_server или что-то вроде этого), то я бы написал маленькую обвязку около него, после чего сделал бы sys:change_code. А в обвязке уже отследил бы нужный запрос.

> Не, безусловно, всё это как-то можно сэмулировать через reload кода и отладочные printf-ы, но это уже без поддержки IDE, неудобно и кривовато.

По-моему, честно говоря, IDE is a code smell. Даже на жабе я писал почти что в блокноте, и прекрасно себя чуйствовал.

Reply

swizard September 11 2014, 20:24:30 UTC
Про IDE слабоинтересный холивор :) По-моему, надо просто избегать крайностей во всём этом деле: владеть всеми доступными инструментами, но не зависеть от них.

Reply


thedeemon September 11 2014, 15:33:23 UTC
>удобный инструмент для целого ряда задач.

А можно озвучить этот ряд?

Reply

br0ziliy September 11 2014, 15:50:23 UTC
Присоединяюсь к вопросу, интересно.

Reply

swizard September 11 2014, 16:44:10 UTC
Ну я как-то так его вижу: разнообразные кравлеры, мониторы, всякие хитрые раздачи контента (особенно, разнообразный стриминг, который в других языках больно делается через КА), клеевое ПО для маршрутизации и балансировки ( ... )

Reply

migmit September 12 2014, 05:02:57 UTC
FFI там есть, более-менее вменяемый.

Reply


zlokk September 11 2014, 18:10:48 UTC
бле, раньше зная си и асм вполне можно было понять логику исходников на практически любом используемом языке, разобраться, что он делает и т.п. но все твои посты про коденг читаю как если б они на китайском были написаны))

когда же все так изменилось?

Reply

swizard September 11 2014, 20:28:55 UTC
> раньше зная си и асм вполне можно было понять логику исходников на практически любом используемом языке

да никогда так нельзя было =) помнится, я в десятом классе MFC осваивал методом тыка, потому что тупо не понимал микрософтовский код (и сейчас не пойму, скорее всего)

Reply


Leave a comment

Up