Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 30.12.20 10:25
Оценка: :))) :))) :)))
Я тут спекулировал, что C++ ки безнадёжно отстали от прогресса и только доходят до фич, 20 лет как доступных в более других языках.

Итак, возьмём прогрессивный паттерн Redux https://redux.js.org/

и тулзы к нему Redux DevTools https://github.com/reduxjs/redux-devtools

https://www.youtube.com/watch?v=tHLRexgkOzk&feature=emb_logo&ab_channel=ReduxDevToolsExtension


И так, вопрос к so5team, lexey, landerhigh — есть ли какой-то хотя бы отдалённо настолько же мощный инструмент в арсенале у самого-круче-только-варёные-яйца ЯП?
Re: Как в C++ получить Redux и Redux Dev Tools
От: Максим Россия  
Дата: 30.12.20 10:56
Оценка: +5
Тё>https://www.youtube.com/watch?v=tHLRexgkOzk&feature=emb_logo&ab_channel=ReduxDevToolsExtension

Если посмотреть повнимательнее, то окажется, что все это выполняется в программе, написанной на С++ https://github.com/chromium/chromium
Errare humanum est
Re[2]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 30.12.20 11:06
Оценка: :))
Здравствуйте, Максим, Вы писали:

Тё>>https://www.youtube.com/watch?v=tHLRexgkOzk&feature=emb_logo&ab_channel=ReduxDevToolsExtension


М>Если посмотреть повнимательнее, то окажется, что все это выполняется в программе, написанной на С++ https://github.com/chromium/chromium


Неважно, на чём написан Хром.

Мой пойнт вот в чём: Redux это очень хорошо для дизайна приложений, а Redux Dev Tools- очень ценный инструмент для программиста, при отладке большого и сложного проекта.
Если выбирать, на чём делать десктоп/мобайл приложение: TypeScript (Electron/React.Native) vs C++ (что?). У TypeScript его киллер-фича — это мощные фреймворки, и быстрый V8 (по замерам он как Oracle JVM по скорости), GPU ускорение из коробки (CSS эффекты все обсчитываются на GPU), и доступ к OS, какие-то обсчёты прилинковать на C/C++. А что может предложить голый C++?
Отредактировано 30.12.2020 11:08 Артём . Предыдущая версия .
Re[3]: Как в C++ получить Redux и Redux Dev Tools
От: Максим Россия  
Дата: 30.12.20 11:13
Оценка: 1 (1) +5
Тё>Если выбирать, на чём делать десктоп/мобайл приложение: TypeScript (Electron/React.Native) vs C++ (что?). У TypeScript его киллер-фича — это мощные фреймворки, и быстрый V8 (по замерам он как Oracle JVM по скорости), и доступ к OS, какие-то обсчёты прилинковать на C/C++. А что может предложить голый C++?

Писать GUI на чистых плюсах не имеет особого смысла в 90% случаев уже начиная с 2000-х годов. На худой конец, можно взять Qt с QML.
С++ имеет смысл использовать только там, где без него никак не обойтись, для всего остального есть пути гораздо более простые...
Errare humanum est
Re[3]: Как в C++ получить Redux и Redux Dev Tools
От: Ночной Смотрящий Россия  
Дата: 30.12.20 11:14
Оценка: +1 -1
Здравствуйте, Тёмчик, Вы писали:

Тё>Мой пойнт вот в чём: Redux это очень хорошо для дизайна приложений,


Чем?

Тё> а Redux Dev Tools- очень ценный инструмент для программиста, при отладке большого и сложного проекта.


Чем?

Тё> У TypeScript его киллер-фича — это мощные фреймворки, и быстрый V8 (по замерам он как Oracle JVM по скорости), GPU ускорение из коробки (CSS эффекты все обсчитываются на GPU)


Только на практике почему то получается самый тормознутый десктоп из того что сейчас существует. Последнее "приобретение" — Lens. Убил бы.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 30.12.20 11:16
Оценка: 1 (1) +5
Здравствуйте, Тёмчик, Вы писали:

Тё>Я тут спекулировал, что C++ ки безнадёжно отстали от прогресса и только доходят до фич, 20 лет как доступных в более других языках.


Тё>Итак, возьмём прогрессивный паттерн Redux https://redux.js.org/


Redux — это что? То что я вижу погуглив, это точно не паттерн, это библиотека для реализации конечного автомата (который тоже не паттерн, а математическая абстракция). Я в этом месяце как раз добавлял конечный автомат к нашему проекту, и взял Meta State Machine (MSM). Пока что все очень довольны, реализовано довольно удобно

Тё>и тулзы к нему Redux DevTools https://github.com/reduxjs/redux-devtools


ХЗ что это, словами рассказал бы.

Тё>И так, вопрос к so5team, lexey, landerhigh — есть ли какой-то хотя бы отдалённо настолько же мощный инструмент в арсенале у самого-круче-только-варёные-яйца ЯП?


"настолько же мощный инструмент" для того что бы сделать что?
Re[3]: Как в C++ получить Redux и Redux Dev Tools
От: cockRoach Австрия  
Дата: 30.12.20 11:35
Оценка:
Тё>Мой пойнт вот в чём: Redux это очень хорошо для дизайна приложений, а Redux Dev Tools- очень ценный инструмент для программиста, при отладке большого и сложного проекта.
Тё>Если выбирать, на чём делать десктоп/мобайл приложение: ***
Kotlin (+Kotlin.Native) — TS нинужен.
Re[2]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 30.12.20 11:36
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Redux — это что? То что я вижу погуглив, это точно не паттерн, это библиотека для реализации конечного автомата (который тоже не паттерн, а математическая абстракция). Я в этом месяце как раз добавлял конечный автомат к нашему проекту, и взял Meta State Machine (MSM). Пока что все очень довольны, реализовано довольно удобно

Redux, если к нему прибавить effect-ы, получается как плоская FSM. Но в чистом Redux только reducer-ы есть.
Просмотрел Meta State Machine по диагонали- так это примерно аналог XState (HFSM).

Тё>>и тулзы к нему Redux DevTools https://github.com/reduxjs/redux-devtools


KP>ХЗ что это, словами рассказал бы.

Это такой плагин для Хрома: показывает историю событий (action) хранилище Redux-а. Хранилищ может быть несколько на приложение, он умеет выбирать нужное.

Тё>>И так, вопрос к so5team, lexey, landerhigh — есть ли какой-то хотя бы отдалённо настолько же мощный инструмент в арсенале у самого-круче-только-варёные-яйца ЯП?


KP>"настолько же мощный инструмент" для того что бы сделать что?

Ну ты уже упомянул Meta State Machine. Есть к нему интерактивные инструменты для визуализации HFSM, как у XState?
У XState есть https://xstate.js.org/viz/ и https://xstate.js.org/docs/packages/xstate-inspect/. Я мог бы показать развестистое дерево состояний с переходами у боевого проекта под отладкой (на xstate-inspect), но воздержусь, чтоб не нарушать NDA.
Отредактировано 30.12.2020 12:06 Артём . Предыдущая версия .
Re[4]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 30.12.20 12:11
Оценка:
Здравствуйте, cockRoach, Вы писали:

Тё>>Мой пойнт вот в чём: Redux это очень хорошо для дизайна приложений, а Redux Dev Tools- очень ценный инструмент для программиста, при отладке большого и сложного проекта.

Тё>>Если выбирать, на чём делать десктоп/мобайл приложение: ***
R>Kotlin (+Kotlin.Native) — TS нинужен.

Ок. Есть ли для котлина сравнимые библиотеки (Redux, XState, Meta State Machine) и инструменты к ним (Redux Tools, XState Inspect).
Интересно кстати про kotlin.native.
Вот котлин может компиляться с помощью LLVM в бинарник, как киллер-фича. Однако, аналогичные попытки были и для JS (например https://github.com/ispras/llv8) — они похоже, что провалились. Очевидно, V8 быстрее работает, когда он может JIT-ть "горячие" куски, например, заменять объект из hash map на shadow class.
Отредактировано 30.12.2020 12:57 Артём . Предыдущая версия . Еще …
Отредактировано 30.12.2020 12:31 Артём . Предыдущая версия .
Отредактировано 30.12.2020 12:14 Артём . Предыдущая версия .
Re[3]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 30.12.20 13:04
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Ну ты уже упомянул Meta State Machine. Есть к нему интерактивные инструменты для визуализации HFSM, как у XState?




меня табличка как из примера более чем устраивает. Пролистай до "Transition table".

Тё>У XState есть https://xstate.js.org/viz/ и https://xstate.js.org/docs/packages/xstate-inspect/. Я мог бы показать развестистое дерево состояний с переходами у боевого проекта под отладкой (на xstate-inspect), но воздержусь, чтоб не нарушать NDA.


Да кого состояния дерева интересуют? Это же просто инструмент.
Re[4]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 30.12.20 13:28
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>меня табличка как из примера более чем устраивает. Пролистай до "Transition table".

Пролистал. Ужаснулся. Это только от "hello world" примера вытекли глаза. А что станет, если громадное развесистое дерево состояний попытаться этим описать.

KP>Да кого состояния дерева интересуют? Это же просто инструмент.

Разработчика интересует, чтобы понять, что делает приложение, и почему оно не работает.

Аналоги смотри в редакторе Unreal Engine и редакторе Amazon Lumberyard.
Re[5]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 30.12.20 13:39
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>Пролистал. Ужаснулся. Это только от "hello world" примера вытекли глаза. А что станет, если громадное развесистое дерево состояний попытаться этим описать.


Если у тебя "громадное развесистое дерево состояний", то у тебя уже проблемы и они совсем не с библиотекой, а дизайном решения. Почти наверняка смысла в большом дереве не много, и просто не была проделана правильная декомпозиция состояний на вложенные машины.

KP>>Да кого состояния дерева интересуют? Это же просто инструмент.

Тё>Разработчика интересует, чтобы понять, что делает приложение, и почему оно не работает.

А сделать решение с меньшим количеством состояний, которые еще можно понять, не судьба? Что-то мне кажется вы там нечто странное творите
Re[6]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 30.12.20 14:04
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Если у тебя "громадное развесистое дерево состояний", то у тебя уже проблемы и они совсем не с библиотекой, а дизайном решения. Почти наверняка смысла в большом дереве не много, и просто не была проделана правильная декомпозиция состояний на вложенные машины.

Вложенные машины?
Я ведь написал — дерево состояний. Оно собирается большой пачки исходников вложенных состояний, как матрёшка. Причём, в отличие от "вложенных машин", таблица переходов на событие будет проверять от корня и ниже к вложенным (breadth first) состояниям.

KP>>>Да кого состояния дерева интересуют? Это же просто инструмент.

Тё>>Разработчика интересует, чтобы понять, что делает приложение, и почему оно не работает.

KP>А сделать решение с меньшим количеством состояний, которые еще можно понять, не судьба? Что-то мне кажется вы там нечто странное творите

Программа это и так огромное число машин состояний- неявных, разбросанных по отдельности. Формализовать их, насколько возможно, и соединить в одно целое- позволяет легче контролировать происходящее. Видеть интерактивную визуализацию- это бесценно.

Например, нажал кнопку, и наблюдаешь- как машина переключается, вот пошел запрос на бекенд, вернулся, побежали дальше, другие переходы активировались, UI меняется- ещё условия сработали, новый запрос, и т.д.
Я не мастер объяснять- это нужно видеть. В ютубе полно видео докладов про XState.
А Redux Tools позволяют следить за изменениями в централизованном Storage, без необходимости не останавливать программу в отладчике и искать тот исходник, ставить брейкпойнт, смотреть variables.
Re[7]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 30.12.20 14:10
Оценка: -1
Здравствуйте, Тёмчик, Вы писали:

Тё>Например, нажал кнопку, и наблюдаешь- как машина переключается, вот пошел запрос на бекенд, вернулся, побежали дальше, другие переходы активировались, UI меняется- ещё условия сработали, новый запрос, и т.д.

Тё>Я не мастер объяснять- это нужно видеть. В ютубе полно видео докладов про XState.
Тё>А Redux Tools позволяют следить за изменениями в централизованном Storage, без необходимости не останавливать программу в отладчике и искать тот исходник, ставить брейкпойнт, смотреть variables.

Да я в курсе того что такое конечный автомат. Речь о том, что твое описание выглядит как охрененно тяжелое решение. Зачем всё запихивать в автомат? Что-то разработчики на JS меня начинают пугать
Re: Как в C++ получить Redux и Redux Dev Tools
От: kov_serg Россия  
Дата: 30.12.20 15:22
Оценка: :))) :)
Здравствуйте, Тёмчик, Вы писали:

Тё>И так, вопрос к so5team, lexey, landerhigh — есть ли какой-то хотя бы отдалённо настолько же мощный инструмент в арсенале у самого-круче-только-варёные-яйца ЯП?

Да для JS много полезных инструметов:
http://www.jsfuck.com
Re[8]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 30.12.20 22:43
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Да я в курсе того что такое конечный автомат. Речь о том, что твое описание выглядит как охрененно тяжелое решение. Зачем всё запихивать в автомат? Что-то разработчики на JS меня начинают пугать


Ну, если у тебя на мета-шаблонах C++ больше светофора не собрать, то кто тебе буратино? У меня на XState огромное дерево состояний- и всё это летает, в том числе и на планшете и смартфоне (только не влазит в экран пока что). XState внутри грамотно сделан, поиск путей оптимальный и т.п.

PS Похоже, что аргументированного диалога не получится. Если даже демонстрировавший намёк на адекватность питон сорвался в "нету значит ненужно" отрицание религиозного фанатика. Печаль.
Отредактировано 30.12.2020 22:58 Артём . Предыдущая версия .
Re[8]: Как в C++ получить Redux и Redux Dev Tools
От: CreatorCray  
Дата: 30.12.20 22:44
Оценка: +1 -1 :)
Здравствуйте, kaa.python, Вы писали:

KP>Да я в курсе того что такое конечный автомат. Речь о том, что твое описание выглядит как охрененно тяжелое решение.

И таки да. Вспоминается как в VMware внутри одного из модулей ESXi какие то орхетегторы в своё время спели и натанцевали практически всё как state machines, и это был такой пц что в написании что в отладке...
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re: Как в C++ получить Redux и Redux Dev Tools
От: Lexey Россия  
Дата: 30.12.20 23:35
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>И так, вопрос к so5team, lexey, landerhigh — есть ли какой-то хотя бы отдалённо настолько же мощный инструмент в арсенале у самого-круче-только-варёные-яйца ЯП?


С++ — это не язык для формошлепства, так что, не очень понятно, какие инструменты ты ожидаешь увидеть в ответ.
"Будь достоин победы" (c) 8th Wizard's rule.
Re[2]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 31.12.20 00:17
Оценка: :))) :)))
Здравствуйте, Lexey, Вы писали:

Тё>>И так, вопрос к so5team, lexey, landerhigh — есть ли какой-то хотя бы отдалённо настолько же мощный инструмент в арсенале у самого-круче-только-варёные-яйца ЯП?


L>С++ — это не язык для формошлепства, так что, не очень понятно, какие инструменты ты ожидаешь увидеть в ответ.


В моём понимании формошлепство- буквально, лепить формочки для опердней. UI в целом это значительно больше.
Statecharts широко используется в играх для NPC, и embedded. Есть софт, который генерит прошивку к кофе-машине из формального описания в заготовку на C или C++.

Но, вот я наблюдаю тенденцию, о чём постоянно твержу- нормальные люди сбежали от C++, сначала была жава, теперь ts/js. Остались маленькие загончики-отстойнички, и это накладывает отпечаток. Устарелые библиотеки, недоразвитые инструменты, и представители вроде состима с ландерхаем, обиженные когда-то на разворот строки.
Re[2]: Как в C++ получить Redux и Redux Dev Tools
От: vsb Казахстан  
Дата: 31.12.20 00:22
Оценка: 11 (6) +1
Redux это не совсем автомат (ну точней всё в мире конечный автомат, если быть педантичным, но Redux не про это). Redux это по сути паттерн и крохотная библиотека, помогающая его реализовать.

1. Всё мутабельное состояние приложения хранится в едином объекте (state). Этот объект представляет собой иммутабельную структуру.

2. Любое изменение состояния описывается неким объектом (action).

3. Весь код, меняющий это состояние, хранится в одном месте (reducer: (old_state, action) -> new_state ).


Что это позволяет:

1. Можно делать этот самый Time Travel. Т.к. у нас состояние приложения иммутабельное, то каждый шаг легко можно сохранять отдельно. Также сохраняется объект action. Таким образом можно относительно легко прослеживать логику изменения состояния приложения, можно поставить брякпоинт и выяснить, откуда этот action "прилетает" и т.д.

2. Можно делать hot reload. Что это значит. Мы запустили приложение, что-то натыкали и находимся в определённом месте. Например открыли окно настроек, залезли там куда-то и тд. И теперь поняли, что надо поменять что-то в коде. Мы меняем код, перезапускаем приложение и проигрываем все action-ы, которые были сделаны в прошлый раз. В итоге после перезапуска приложение находится в том же месте и в том же состоянии. Если делать это достаточно быстро, получается эдакая магия. Ну и это очень помогает сократить время разработки GUI-приложений. Причём от рантайма вообще никакой магии не требуется.

3. Многие считают, что получается удобная структура кода, в котором проще ориентироваться, чем в классическом варианте, где состояние размазано по всему приложению и код, его модифицирующий тоже размазан по всему приложению.

4. Эта штука хорошо сочетается с парадигмой React.
Отредактировано 31.12.2020 0:24 vsb . Предыдущая версия . Еще …
Отредактировано 31.12.2020 0:23 vsb . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.