@nodejs_ru

Страница 426 из 2748
Maksim
12.12.2016
15:36:19
почему fault tolerance в эрланге такой уникальный?

да, он уникальный и в джаве это не сделать

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
Это все уже реализовано
все равно нужно следить за race conditions и дедлоками

Denis
12.12.2016
15:43:53
про эликсир не скажу, но про эрланг могу сказать что не зря на нём вотсап и фб мессенджер написали
Но Telegram же на нём не написали. Они хороши для обработки данных и очередей, значит?

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

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

но объективно более молодое коммьюнити. В этом и плюсы, и минусы

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
2) все ресурсы, которыми он владеет, будут закрыты
Это круто на обработке запросов и данных (транскодинг, трансферинг)

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
Просто это не так уж и практично
тогда и garbage collector непрактично, давайте памятью управлять

Denis
12.12.2016
15:48:10
речь идет о том, что VM реально дает гарантии, которых нет в других языках
Это похоже на некий фреймворк, который реализует например тот же Docker + Kubernetes

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
Нормального - нет конечно

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

девопсом тут явно не поможешь

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

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:51
Maksim
12.12.2016
15:51:55
Как я понял, гарантия от этого появилась в ES6 с let/const и подпоркой в виде ESLint?
думаю, что нет. Ведь у тебя нет возможности запретить явно и эксплицитно записать в глобальную хеш-таблицу?

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
думаю, что нет. Ведь у тебя нет возможности запретить явно и эксплицитно записать в глобальную хеш-таблицу?
Возможности нет, но автоматически обнаружить такой код и запретить его, можно

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

не могу досчитать..

Aldar
12.12.2016
15:53:16

Страница 426 из 2748