← All posts tagged Erlang

Zert

В общем, не вижу ни одной причине больше писать на ерланге. Только еликсир, только молодость. Инфраструктура еликсира настолько прокачанная, что с ерланговской её сравнивать как-то не хочется. Вот эти вот rebar, erlang.mk ни в какое сравнение с mix не идут, даже близко не стоят. Ну и сам язык, не смотря на рубиватость, скорее удобен, чем нет (всяко удобнее ерланга).

Zert

Инфраструктура у еликсира очень годная, в то время, как у ерланга всё сгнило или сгнивает. Пока вижу проблему исключительно в упоротом синтаксисе, но это вкусовщина и надеюсь привыкнуть. У ерланга синтаксис тоже не сахар, но он проще намного.

Zert

А может действительно надо уже переходить с э-а на э-р? Вроде там и библиотеки более-менее прилично выглядят, не то что олдскульное говно. Разве что рубишный синтаксис отпугивает, но ради хорошей инфраструктуры я даже на скобочки согласен, чо уж там. У кого есть опыт? Какие там подводные камни? Хотелось бы, конечно, какой-нибудь ML, но его никто не написал ещё.

Zert

Ещё помнится была такая инициатива, как Erlang-3000, современная stdlib для э-га с нескучными функциями. Дальше сайта с голосованием за нужные фичи чёт не ушло.

Zert

Ещё вот о попытке сделать э-г из х-я. Вот рассмотрим самый стандартный паттерн: стейтфул процессы.
В х-е предлагается хранить стейт в TVar, где-то «снаружи» от процесса. Как в таком случае принято удалять стейт, если процесс аварийно погиб? В э-е это делается автоматически и естественно, нет процесса — нет стейта (ну если конечно его в ETS не хранить, но так делать не принято, за исключением каких-нибудь экзотических случаев).
И почему в х-е не принято хранить стейт процесса в самом процессе, мутируя его с помощью рекурсивного вызова функции вида loop? Чтобы никаких дополнительных «внешних» TVar не делать. Висит loop на канале, ждёт сообщение, принимает сообщение, вызывает сама себя уже с новым стейтом. В чём проблемы так делать? Или какие-то подводные камни есть?