Oleg
И как же?
Дима
reactive programming тоже под капотом на них основан
Oleg
Я вот описал задачу и как решается она проксированием эвентов
Дима
Проксирования — это метод chain
Дима
Блин, я не буду сейчас тебе всё концепцию с нуля объяснять)) Загугли
Oleg
Так не интересно :D
Дима
Ну прост это всё на примерах кода только объясняется, а в чате это как-то ту мач 😃
Дима
Просто люди как-то посмотрели на концепцию эвентов и подумали, что они могт тут улучшить. Так то ничего нового не будет, просто удобнее)
Дима
В принципе прекрасно представляю, почему от ооп без инноваций можно устать и потянуться к простоте))
Oleg
Ну ты как адепт ФП мне расскажешь, да
Дима
Come to the dark side 😁
Oleg
То что я заюзал jQuery - это не значит что уменя там олдскульные функции и процедурный стиль :D Те же классы, только данными я манипулирую руками, без автобиндингов.
Oleg
Я уже не смогу на темную сторону, у меня бекенд на руби :D
Дима
Не, руби это сатанизм)) Это другая шкала: явное vs неявное
Oleg
Там зато нельзя сложить число со строкой и пострадать
Дима
И я в своей жизни уже достаточно огреб от неявного, чтобы не подходить к такому на километр 😁
Дима
Дима
Чему я очень рад
Oleg
Переопределил тустринг на вызов ошибки?
Дима
Ахах
Дима
Мне нравится ход твоих мыслей 😂
Дима
Просто заюзал flow, он ругается на это и на всю прочую жс вжух-магию
Oleg
Вообще да, можно заменить тустринг у того что не должно в стринг и добавить явные методы чтобы можно было в строку превратить только когда нужно явно это делать. И получится прям неуязвимая броня против неявных преобразований
Дима
Ну это решение частной проблемы, я подумал, что мне нужен более универсальный подход)
Дима
Как минимум тот же принцип распространяется на необязательные аргументы, если flow видит, что у тебя тут может быть null/undefined, то будет ргаться на любые попытки заюзать это как объект, пока не сделаешь проверку
Oleg
В обещем за всё время юзания руби у меня был только вот 1 баг из-за неявности и только потому что я переставил 2 слова местами в ключе хеша, из-за чего оное выдавало нил и зло аффектило. Так что думается мне что проблема про неявное - надуманное. Также как боязнь некоторых юзать JS из-за непонимания асинхронности
Oleg
В общем мне нравится мой текущий стек :D
Oleg
Он правда весь сейчас исключительно развлекательный, программирование больше не приносит мне прибылей
Oleg
Но не навсегда
Oleg
Однако я могу сказать что есть некоторая усталось и она больше про типизацию. Я ещё на тайпскрипте пишу... ну как пишу, писал. Ангуляр второй на фронте, просто тайпскрипт на беке. И с одной стороны ты как-то увереннее чувствуешь себя от такого кода, есть некоторая приятная сторона описывать каждый параметр, каждый вот метод, вот это всё
Oleg
Но... не зашло.
Дима
Типичная вторая стадия)) За кем не наблдал — у всех так было
Дима
Первая стадия — вау, можно щас затипизировать ВСЁ!
Вторая стадия: задолбался описывать каждый параметр, а ошибок меньше не стало, я ливаю
Третья - хм, а можно ведь не описывать каждый чих 🤔
Oleg
Всё-таки философия того что нужно говорить компютеру что нужно делать, а не как это делать - хорошая философия.
Дима
Да
Oleg
Поэтому между заэнтерпрайзить своего торгового бота на тайпскрипте или переписать понятно и читаемо на руби - победил руби
Дима
Неа
Дима
Если ts плох — это не значит, что на жс это невохможно
Дима
Это значит, что просто можно отказаться от ts
Oleg
А я и не говорил что JS это плохо
Oleg
JS между этим всем
Oleg
Была вторая проблема конечно, которая увы не решается ибо дизайн языка
Дима
У flow другой подход к типам, он многое выводит правильно сам
Oleg
Нужна была строгая синхронность
Дима
Это тоже реально (только зачем)
Oleg
Понятно что async наше всё, но тем не менее
Oleg
А вот задача такая - именно синхронно
Дима
Можно жонглировать nextTick
Oleg
100500 запросов и синхронно, каждый следующий меняет стейт и зависит от предыдущего
Oleg
Вот, жанглировать там и прочее
Oleg
То есть это реально, но, как-то про молоток и микроскоп получилось
Дима
Oleg
Внешний мир не статичен
Дима
still
Дима
Достаточно наложить ограничение на число одновременно выполняемых потоков/запросов
Oleg
То есть у меня есть что-то, что должно опросить что-то, принять решение, сделать действие, опросить что-то другое и ещё кучу мест и так вот шаг за шагом
Дима
По прежнему не вижу синхронности)
Oleg
Ну не знаю, она есть :D
Дима
Только неявное полагание на особенности архитектуры)
Oleg
Мне нужно узнать что-то во внешнем мире. Я делаю запрос. Получаю ответ, пишу в стейт, делаю нужные мне действия. Потом ещё запрос, основанный на предыдущих данных. Потом всё тоже самое, только запросы в другие места и ответы тоже разные
Дима
Если тебе нужен мьютекс, то стоит его явно описать, а не расчитывать на синхронность подхода)
Oleg
Нельзя сразу всё опросить
Oleg
У меня просто вообще нет понятия нескольких потоков
Дима
Я просто пытаюсь понять, откуда из вышеописанных требований вдруг был сделан переход к "а теперь делаем всё синхронно"
Oleg
Алгоритм предплагает множество запросов. Но дело в том что каждый следующий зависит от предыдущего.
Oleg
Пока я первый не получил - я не могу слать остальные
Oleg
Так что нет необходимости юзать асинхронность когда всё синхронно
Дима
Это не синхронно, лол
Дима
Это последовательно
Oleg
Синхронное исполнение, не запросы, да
Дима
Oleg
В общем на JS это было не так удобно, хотя хотелось бы чтобы так было
Дима
async await
Oleg
Да
Дима
И будет у тебя твоя последовательность)
Oleg
Я писал про это
Дима
я не видел
Oleg
Но это всё-равно побеждание того что не нужно побеждать
Oleg
Ещё есть другая штука
Oleg
Декларативность описания