Roman
streams.join(firstTask(...), secondTask(...))
.attach(stream {
streams.race(thirdTask(...), fourthTask(...))
.attach(stream.close())
})
.failure(...)
Roman
это подход со стримами... позволяет относительно просто описывает довольно сложный асинхронный control flow
Daniel
коллега
Daniel
вы же сами видите, сколько тут синтаксического мусора
Aleksand
Roman
я же неоднократно утверждал что синхронный код на green thread'ах читается проще)))
я ВОВСЕ не спорю с этим
я лишь представляю control flow решения со стороны асинхронного подхода
Roman
в event loop'е синхронный код не попишешь
Roman
но и callback'и там давным давно уже неактуальны
Roman
почти в любой среде GUI и с Node теперь даже на сервере у нас event loop
Aleksand
я хочу так
await loop.parallel(Job(a), Job(a), loop.series(Job(a1), Job(a2)))
Roman
и код писать приходится именно асинхронно
Roman
Roman
Roman
можно ли приостановить и продолжить или отменить во время исполнения async await ?
Aleksand
Aleksand
Roman
Aleksand
но тонкости есть везде свои
Aleksand
если там нить внутри то надо это поддерживать
Roman
в каком языке и для каких операций?
я на данный момент пишу реализацию для Qt Quick (языки: C++ & QML)
самая первая проблема с которой мы тогда столкнулись это network filesystem API, а именно асинхронная по-чанковая загрузка больших файлов
Roman
task.cancel например в питоне
проблема в том, что если операция состоит из под-операций то тут всё сложнее.. а со стримами всё относительно просто
стримы могут состоять из стримов в периоде
Roman
внутри одного стрима могут быть 4 последовательных из которых он состоит
они могут быть либо atomic либо abortable
Aleksand
Roman
и следственно если высокоуровневый стрим отменяем во время исполенения atomic стрима - дожидаемся его возвращаение
ну и т.д. .. там парадигма много на что способна
Aleksand
я про c++ ничего не скажу
Сережа
qt quick это считай джаваскрипт
Сережа
с биндингами к с++
Aleksand
Roman
Сережа
вроде как магистры компуктер саенс порешили, что за стримами будущее
Сережа
это те, которые будущее пророчат функциональной парадигме
Anonymous
Сережа
ботоны всякие
Сережа
https://stackoverflow.com/questions/35120082/how-to-get-started-with-akka-streams вот тут они на со резвятся
Roman
проблема наверное в терминологии
Roman
имеются ввиду не "stream" в качестве видео-потоков или подобного
Roman
на сайте QuickStreams я, надеюсь, довольно кратко и понятно определил значение стрима в данном контексте: https://qbeon.github.io/QuickStreams/
Roman
Aleksand
Roman
Aleksand
ну акка она про нее изначально вроде
Сережа
зачем на Qt выносить в QML стримы и т.д.? QML же чтобы квадратики двигать, а вся логика в c++ или тормозить будет?
Roman
очень похоже на стиль написания промисов, но мощнее:
http.get(...)
.retry([http.Timeout, http.BadGateway], 3)
.attach(function(results) {
// results arrived
})
.repeat(3)
.failure(function(error) {
// error handling
})
запускаем запрос http.get, если запрос валится по причине таймаута или badgateway - повторяем (максимум 3 раза), по успешному прибытию результатов 3 раза повторяем обработчик
ну а иначе попадаем в failure
Roman
JavaScript достаточно быстрый для бизнес логики связывающей элементы API
Roman
к тому-же QML намного проще C++, т.е. за те-же деньги больше приложения))
Anatoly
мне кажтеся что угодно намного проще C++
Roman
Anonymous
Anatoly
ассемблер проще всего, но пальцы писать устают и калькулятор стирается
Roman
Ассемблер?
здесь речь об application development'е
Anonymous
Что угодно проще. Хорошо, что достаточно знать только процентов 5 от стандарта )))
Anonymous
Anatoly
и на каждом новом рабочем месте это свои 5%
Roman
Anatoly
почему нельзя, у меня дружище активно писал на асме + винапи
Anatoly
ирц клиент написал
Roman
я даже не буду это обсуждать потому-что это нонсенс
Anonymous
поддерживать дорого, сейчас даже для микроконтроллеров предпочтительнее Rust
Roman
1. maintainability
2. security
3. performance
Roman
в конце концов веб-сервис или мобильное приложение на ассамблере ты ну никак не напишешь, НИКАК
Сережа
вряд ли кто-то на серьезном предприятии позволит использовать rust в разработке.
Anonymous
Roman
так.. грубо говоря
Anonymous
https://m.habrahabr.ru/post/188114/
Roman
всё, закрыли тему
Roman
это нонсенс, повторяюсь
Anonymous
Эээ, мои 50 миллионов :(
Roman
dev_sheep
А что, если я тебе скажу, что можно?
можно сделать все на всем, мне кажется. Только вот какой прок от инструмента, на котором ты пишешь продукт, если он для этого не предназначен?
Roman
без уровней абстракции человеческое общество не работает
dev_sheep
это ж из тех древних боянов про сайт на ассемблере
Anonymous