
Maksim
12.12.2016
15:36:19
почему fault tolerance в эрланге такой уникальный?
да, он уникальный и в джаве это не сделать

Vladimir
12.12.2016
15:36:31

Maksim
12.12.2016
15:36:36
очень просто

Google

Vladimir
12.12.2016
15:36:37
Нэ вэрю)
Но интересно

Maksim
12.12.2016
15:36:48
в эрланге концепция процессов позаимствована из юникса
изоляция данных и ресурсов внутри процесса
если процесс дохнет, то автоматически закрываются все ресурсы и освобождается вся память, которую он захватывал

Vladimir
12.12.2016
15:37:42
Что значит: процесс сдох? Не обработанное исключение?

Maksim
12.12.2016
15:37:57
процесс в эрланге — это микротред, корутина
визуально оно выглядит так же, как процесс в юниксе
ты запускаешь процесс и у тебя от него есть только пид
даже синтаксически нельзя прочесть данные из другого процесса, можно только послать в него сообщение
сдохнуть процесс может по разным причинам: например он сам решил, что он всё сделал и нормально вышел, или действительно необработанное исключение
соответственно VM дает следующие гарантии:
1) все подписчики на мониторинг этого процесса получат сообщения о его смерти

Google

Maksim
12.12.2016
15:39:30
2) все ресурсы, которыми он владеет, будут закрыты

Vladimir
12.12.2016
15:40:14
Ну то есть чтобы это сделать на джаве, нужно просто более аккуратно распоряжаться ресурсами

Maksim
12.12.2016
15:40:36
твоя фраза сейчас звучит как: что бы не было багов, не надо их писать

Vladimir
12.12.2016
15:40:46
Да, отчасти
И это реально, в какой то степени

Aldar
12.12.2016
15:40:55

Maksim
12.12.2016
15:41:03
речь идет о том, что VM реально дает гарантии, которых нет в других языках

Evgeny
12.12.2016
15:41:14
да просто надо форкаться и эмулировать поведение эрланга

Vladimir
12.12.2016
15:41:18
Ну вот в джаве зато есть статическая типизация
Это тоже гарантии
Но и без них как бы можно

Maksim
12.12.2016
15:42:10
какие-то ещё вопросы про эрланг, эликсир?

Vladimir
12.12.2016
15:42:29

Vladimir
12.12.2016
15:42:33


Denis
12.12.2016
15:42:39
Итого, сводка по Elixir.
Плюс.
+ хайлоад на слабом железе
+ время отклика низкое
+ Параллельный флоу автоматически
+ протоколы, макросы, паттерн матчинг
+ immutability на уровне языка
+ Макросы, протоколы, акторы
+ шедулер считает редукции у каждого процесса и не допускает долгой работы без переключения, хотя это скорее преимущества beam а не самого языка
+ в elixir очень вкусная стандартная либа
+ и все эти ex_doc, которые запускают тесты прямо из документации, это просто круть
+ встроенная Мнезия как альтернатива редису
+ в эликсире крутой пайп оператор!
+ компилируется в байт-код BEAM
+ Plug pipeline-based девелопмент как плюс
Минусы:
+ незрелость экосистемы
- В стандартной библиотеке Elixir нет HTTP-клиента
- с пакетами всё плохо в элексире – говно пакеты, в основном
- проблемы с Deploy в Phoenix
- Часто добавляешь пакет и он не работает в разных environments, прямо бомбит
- часто нет док/они не соответствуют реальности
- люди тесты мало пишут → исходники в качестве документации
- Короче с инфраструктурой почти как в жс
- @kana_sama пробовал феникс на хероку задеплоить, так и не справился
Обновил пару пунктов


Aldar
12.12.2016
15:42:40
Но и без них как бы можно
в джаве сложнее реализовывать многопоточность, в эликсире и эрланге многопоточность из коробки и очень дешевая

Maksim
12.12.2016
15:42:52
эрланг — это язык, stdlib и виртуальная машина

Denis
12.12.2016
15:42:53
Эликсир многопоточный и компилируемый в байт код

Vladimir
12.12.2016
15:42:57
Это все уже реализовано

Maksim
12.12.2016
15:43:04
эликсир — это виртуальная машина от эрланга, а stdlib и язык свой

Google

Denis
12.12.2016
15:43:09
оуоуооу Максим пришёл
я проспал
читаю лог с начала

Vladimir
12.12.2016
15:43:38
> @hardliner
многопоточность из коробки и очень дешевая
многопоточнасть везде одинаковая

Aldar
12.12.2016
15:43:41

Denis
12.12.2016
15:43:53

Vladimir
12.12.2016
15:43:56
не нужно, если используешь message passing

Maksim
12.12.2016
15:43:59
соответственно в эликсире сильно переработанный stdlib, потому что в эрланге очень много мест, которые вызывают кислую мину
но объективно более молодое коммьюнити. В этом и плюсы, и минусы

Denis
12.12.2016
15:45:01

Vladimir
12.12.2016
15:45:14

Vladimir
12.12.2016
15:45:16
Да просто фреймворк

Vladimir
12.12.2016
15:45:21
Язык не причем
Есть процессы, есть супервизоры

Vladimir
12.12.2016
15:45:59

Vladimir
12.12.2016
15:46:05
Такую абстракцию в любом языке можно сделать
Опять же - akka

Aldar
12.12.2016
15:46:38

Vladimir
12.12.2016
15:46:48
https://www.youtube.com/watch?v=YaUPdgtUYko

Denis
12.12.2016
15:46:49

Google

Vladimir
12.12.2016
15:46:53
> @hardliner
только иммутабельность по умолчанию в джаве сделать не получится
Почему нет? ради бога
Просто это не так уж и практично

Maksim
12.12.2016
15:47:26

Denis
12.12.2016
15:47:28

Maksim
12.12.2016
15:47:48
в эрланге нельзя сделать ситуацию при которой процесс добавляет какие-то данные в глобальную хеш-таблицу и подтекает тем самым памятью

Vladimir
12.12.2016
15:47:52
> @maxlapshin
нет, я выше уже объяснил. Основа именно в дизайне языка
вм просто поддерживает эти функции, но обязательной явно не является

Aldar
12.12.2016
15:48:00

Vladimir
12.12.2016
15:48:07

Denis
12.12.2016
15:48:10

Admin
ERROR: S client not available

Maksim
12.12.2016
15:48:20
Денис, какие-то ещё конкретные вопросы есть? =)

Kirill
12.12.2016
15:48:30

Maksim
12.12.2016
15:48:48
да понять конечно, просто не моими силами =)

Aldar
12.12.2016
15:48:51
Опять же - akka
для этого нужно скалу выучить, порог входа намного выше чем в эликсире и эрланге

Vladimir
12.12.2016
15:49:06
Ну это спорный вопрос, может быть

Kirill
12.12.2016
15:49:18

Aldar
12.12.2016
15:49:27
сам язык эрланг и эликсир легче чем жс

Denis
12.12.2016
15:49:45
Опять же - akka
А для Node.js есть что-то такое? Или опять же на уровне DevOps ?

Vladimir
12.12.2016
15:49:58
Нормального - нет конечно

Kirill
12.12.2016
15:50:01

Google

Vladimir
12.12.2016
15:50:15
Но в node.js с этим отчасти проще из за однопоточности
девопсом тут явно не поможешь

Maksim
12.12.2016
15:50:49
вот в эрланге многопоточность сделана на нереальной высоте

Denis
12.12.2016
15:51:15

Aldar
12.12.2016
15:51:22
в джаве поток тяжелей чем процесс в эрланге

Kirill
12.12.2016
15:51:36
Так

Aldar
12.12.2016
15:51:37
а в ноде вообще поток один

Kirill
12.12.2016
15:51:42
давай поупражняем мозги

Vladimir
12.12.2016
15:51:42

Vladimir
12.12.2016
15:51:51

Maksim
12.12.2016
15:51:55

Vladimir
12.12.2016
15:52:31
Ну eslint ом при желании можно что хочешь запретить

Aldar
12.12.2016
15:52:37
плюс распределенность из коробки, если общаешься с процессом тебе не важно на какой он локально или в сети

Kirill
12.12.2016
15:52:40
https://codepaste.net/fm8gn4
https://projecteuler.net/problem=95
где тут ошибка?

Denis
12.12.2016
15:52:58

Vladimir
12.12.2016
15:52:59

Kirill
12.12.2016
15:53:10
я уже часа два убил на тупую задачку с проджект эйлера
не могу досчитать..

Aldar
12.12.2016
15:53:16

Kirill
12.12.2016
15:53:21