Re[7]: C++20 coroutines (co_await)
От: landerhigh Пират  
Дата: 07.01.21 12:27
Оценка:
Здравствуйте, reversecode, Вы писали:


L>>-Они stackless. Значит, yield'ануть из глубин вложенных вызовов функций не выйдет.


R>получиться, если есть хендл на корутину на которую нужно перейти(выпрыгнуть)


не получится


void someNestedFunction(coro someCoro)
{
    int a = soSomething();
    if (nothing())
    {
        someCoro.yield();
        use(a);  // упс.
    }
}
www.blinnov.com
Re[8]: C++20 coroutines (co_await)
От: reversecode google
Дата: 07.01.21 12:32
Оценка:
этот упс не соберется в С++
по стандарту С++, функция считается корутиной если в ней присутствует одно из ключевых слов co_*

а в вашем примере хз что такое yield
а вот co_return из текущей корутины, запросто выпрыгнет в любую другую корутину если переопределен await_suspend и есть хендл той корутины куда прыгать
Отредактировано 07.01.2021 13:16 reversecode . Предыдущая версия .
Re[4]: C++20 coroutines (co_await)
От: okman Беларусь https://searchinform.ru/
Дата: 07.01.21 12:33
Оценка: +1
Здравствуйте, rg45, Вы писали:

R>https://en.cppreference.com/w/cpp/language/coroutines


R>Вот это смотрел уже?


Да, здесь уже был. По описанию на этой странице я и пробовал разобраться. Конкретно здесь непонятно, как действовать, если корутина
должна вернуть какой-то результат, например int. Откуда его забирать? Глядя на код не ясно, как между собой взаимодействуют
классы promise_type, task и awaitable.

В других сэмплах (там же) они в get_return_object возвращают std::coroutine_handle<promise_type>::from_promise(*this) — для
человека, который первый раз смотрит на такое, это как минимум не очевидно...
Re[4]: C++20 coroutines (co_await)
От: okman Беларусь https://searchinform.ru/
Дата: 07.01.21 12:35
Оценка:
Здравствуйте, reversecode, Вы писали:

R>офф дока стандарта вам не зашла

R>ок
R>если и ссылка на разжевывание с картинками и стрелочками на русском вам не зашла
R>значит это или такой троллинг или корутины не для вас

За ссылку спасибо, но "разжевывание" не отвечает на вопросы. Например, что такое симметричная корутина или noop-корутина.
Re: C++20 coroutines (co_await)
От: AeroSun  
Дата: 07.01.21 12:39
Оценка:
Это как с модулями — ближайшие лет 10 можно даже не смотреть в ту сторону.
В том состоянии, в каком они сегодня — это просто задел хотелок на будущее.
Re[5]: C++20 coroutines (co_await)
От: reversecode google
Дата: 07.01.21 12:39
Оценка:
считайте нооп как нуллптр и относится как раз к симетричным корутинам
о которых сейчас с блиновым выше дискутируем
когда выход "yield" выпрыгивает не из текущей корутины
а переходит в какую то другую корутину

а не симметричная это обычное поведение когда выходит(выпрыгивает) с текущей
Re[9]: C++20 coroutines (co_await)
От: landerhigh Пират  
Дата: 07.01.21 12:40
Оценка:
Здравствуйте, reversecode, Вы писали:

R>этот упс не соберется в С++

R>по стандарту С++, функция считается корутиной если в ней присутствует одно из ключевых слов co_*

Вот в случае со stackful корутинами такого ограничения нет. Функции в дереве вызовов вообще могут не знать, что они выполняются в контексте корутины.

R>а в вашем примере хз что такое yield


Это ж очевидно — это интерфейс stackful корутины.
www.blinnov.com
Отредактировано 07.01.2021 18:42 landerhigh . Предыдущая версия .
Re: C++20 coroutines (co_await)
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 07.01.21 12:47
Оценка: 1 (1) +4
Здравствуйте, okman, Вы писали:

O>корутины.


Отчего эта корявая калька так расплодилась в народе? Есть же (еще с середины прошлого века) отличный термин — сопрограммы. Прям тест на знание истории программирования.
Re[3]: C++20 coroutines (co_await)
От: B0FEE664  
Дата: 07.01.21 13:19
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>Я правильно понимаю, что это просто async/await наконец сделали в С++? Или это что-то большее?

Простые async/await ещё в C++11 доступны были
И каждый день — без права на ошибку...
Re: А нельзя
От: Ватакуси Россия  
Дата: 07.01.21 15:09
Оценка:
Разобраться как это в том же питоне работает, а потом с этим вернуться в С++?
Все будет Украина!
Re[2]: А нельзя
От: reversecode google
Дата: 07.01.21 15:14
Оценка:
научившись ездить на велосипеде, летать на боинге не получиться, да и опыт будет не релевантный
Re[3]: А нельзя
От: Ватакуси Россия  
Дата: 07.01.21 16:16
Оценка:
R>научившись ездить на велосипеде, летать на боинге не получиться, да и опыт будет не релевантный

Ну, не знаю — если там понять принципы, а потом их уже применять в С++.
Все будет Украина!
Re[2]: C++20 coroutines (co_await)
От: rg45 СССР  
Дата: 07.01.21 16:16
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

O>>корутины.


ЕМ>Отчего эта корявая калька так расплодилась в народе? Есть же (еще с середины прошлого века) отличный термин — сопрограммы. Прям тест на знание истории программирования.


Странно, что тебя совершенно не смущает, что слово калька также является заимствованным из иностранного языка. Как и слово "программа", кстати.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 07.01.2021 16:34 rg45 . Предыдущая версия .
Re[3]: C++20 coroutines (co_await)
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 07.01.21 17:17
Оценка: +3
Здравствуйте, rg45, Вы писали:

R>Странно, что тебя совершенно не смущает, что слово калька также является заимствованным из иностранного языка. Как и слово "программа", кстати.


Совершенно не смущает. Эти слова, как и "экран", "процессор" и прочие, обозначают понятия, для которых в русском языке на момент заимствования не было собственных слов. Это естественный процесс развития любого языка.

А "корутина" — столь же тупое передирание иностранного слова в кириллицу, сколь и "менеджмент", "супервайзинг" и подобное. В оборот их вводят те, кто толком не знает родного языка, а распространяют те, кто этого языка не уважает.
Re[4]: C++20 coroutines (co_await)
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 07.01.21 17:27
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

R>>Странно, что тебя совершенно не смущает, что слово калька также является заимствованным из иностранного языка. Как и слово "программа", кстати.


ЕМ>Совершенно не смущает. Эти слова, как и "экран", "процессор" и прочие, обозначают понятия, для которых в русском языке на момент заимствования не было собственных слов. Это естественный процесс развития любого языка.


ЕМ>А "корутина" — столь же тупое передирание иностранного слова в кириллицу, сколь и "менеджмент", "супервайзинг" и подобное. В оборот их вводят те, кто толком не знает родного языка, а распространяют те, кто этого языка не уважает.


Так как "программа" тоже заимствовано, но чуть раньше — это напоминает реплику одного деятеля из 90-х, который жаловался на заимствование слова "файрволл", когда уже в языке было "исконно русское" "брандмауэр" (заимствованное на пару лет раньше)

Мне к тому же не нравится, что "сопрограмма" может иметь смысл "работающий рядом процесс", в отличие от "корутина". Хотя "подпрограмма" прижилось, а "субрутина" — нет. Видимо, слишком сильна была ассоциация с "рутина".

Героическая борьба мыла с шилом, в общем...
The God is real, unless declared integer.
Re[4]: C++20 coroutines (co_await)
От: rg45 СССР  
Дата: 07.01.21 17:32
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

R>>Странно, что тебя совершенно не смущает, что слово калька также является заимствованным из иностранного языка. Как и слово "программа", кстати.


ЕМ>Совершенно не смущает. Эти слова, как и "экран", "процессор" и прочие, обозначают понятия, для которых в русском языке на момент заимствования не было собственных слов. Это естественный процесс развития любого языка.


Это для слова калька-то не было собственного слова?? Чего только не выдумают люди...
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[5]: C++20 coroutines (co_await)
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 07.01.21 17:37
Оценка:
Здравствуйте, netch80, Вы писали:

N>напоминает реплику одного деятеля из 90-х, который жаловался на заимствование слова "файрволл", когда уже в языке было "исконно русское" "брандмауэр" (заимствованное на пару лет раньше)


Слово "брандмауэр" было заимствовано лет двести назад, если не раньше. В значении "сетевой экран", насколько я помню, его впервые использовали в XP (2001-й), куда он был встроен, а "файрвол" вроде как начал входить в употребление еще в конце 90-х, когда появилось само понятие.

N>Мне к тому же не нравится, что "сопрограмма" может иметь смысл "работающий рядом процесс"


Не может, если знать уже сложившуюся терминологию. Слово "сопрограмма" нередко упоминалось в литературе 60-80-х в совершенно конкретном смысла. А потом в перестройку поперли кривые переводы с английского, и половина терминов была забыта.
Re[5]: C++20 coroutines (co_await)
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 07.01.21 19:29
Оценка:
Здравствуйте, rg45, Вы писали:

R>Это для слова калька-то не было собственного слова??


Ну так откройте его, не томите.
Re[6]: C++20 coroutines (co_await)
От: rg45 СССР  
Дата: 07.01.21 19:38
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

R>>Это для слова калька-то не было собственного слова??


ЕМ>Ну так откройте его, не томите.


Выбирай: Синонимы к слову «калька»

От себя еще накину пару-тройку: сдувание, передирание, сдирание, передувание.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 07.01.2021 19:41 rg45 . Предыдущая версия .
Re[7]: C++20 coroutines (co_await)
От: B0FEE664  
Дата: 07.01.21 20:00
Оценка: :)
Здравствуйте, rg45, Вы писали:

R>>>Это для слова калька-то не было собственного слова??

ЕМ>>Ну так откройте его, не томите.
R>Выбирай: Синонимы к слову «калька»

Там интересные примеры:

В послевоенные годы множество калек нуждались в помощи пластических хирургов.

И каждый день — без права на ошибку...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.