Переименовать ключевые слова co_await, co_yield

Игорь Шаповал
Игорь Шаповал

Все как и я надеюсь что на февральской встрече по стандартизации в С++20 добавлят корутины. Возможность программировать ассинхронно с коробки на уровне языка очень классно. Но ключевые слова которые предлагаются очень отвратительные. Хочется чтобы можно было использовать как в C# await, yield и все. C выступа Гора Нишанова было сказано что слова await и yield очень часто используемые, поэтому предлагаю сделать контексные слова await, yield, а вместо ключевого слова co_return использовался простой return. В модулях ведь хотят сделать module, import контексными, почему бы в корутинах этого не сделать.

6
рейтинг
в разработке
15 комментариев
Andrey Davydov

Вы точно понимаете, что значит contextual keyword? В таком контексте

await x;
await foo();

await должен трактоваться как keyword или identifier?

Andrey Davydov
Vyacheslav Meshkov

Andrey Davydov,

  В этом плане сильно большая разница между co_await и await?

Vyacheslav Meshkov
Andrey Davydov

Vyacheslav Meshkov, разница в том, что co_await можно сделать не хардовым кейвордом, а не пытаться догадываться по контексту.

Andrey Davydov
Vyacheslav Meshkov

Andrey Davydov, на других языках никто особо не жалуется. Это похоже на надуманную проблему.

Vyacheslav Meshkov
Andrey Davydov

Vyacheslav Meshkov, возможно дело в том, что при парсинге других языков нет необходимости искать answer to life the universe and everything? Поэтому contextual keyword их не пугают.

Andrey Davydov
Vyacheslav Meshkov

Andrey Davydov, Тут невозможно спорить. Язык плюсы действительно стал языком ответа на кучу вопросов, кроме нужных тем, кто его изначально использовал. Теперь как и в телефон и умные часы влазит всё, кроме нормальных телефонов и часов, так и плюсы раньше использовались как продвинутый вариант языка для системного программирования, а теперь всё кроме этого. Многие следуя примеру Линуса Торвальдса откатываются с этой целью на С. Также недавняя волна статьей из геймдева только подтвердила этот факт.
У меня сильное ощущение, что новые изменения в язык ставят целью повышение зарплат плюсовиков (повышение порога вхождение обсуждается всё чаще). Чему невозможно не радоваться.

Vyacheslav Meshkov
Обновлено 
NeoProgramming

ИМХО contextual keywords это путь в PL/1.

NeoProgramming
Игорь Шаповал

Я имел в виду как ключевые слова override, final

Игорь Шаповал
Andrey Davydov

Игорь Шаповал, override и final могут быть ключевыми словами только в тех местах, где синтаксически нельзя написать идентификатор, с (co_)await это не так.

Andrey Davydov
Игорь Шаповал

Почему co_await, co_yield не может быть await, yield ключевыми словами, как override, final.

Игорь Шаповал
Andrio

Чесно говоря не понимаю в чем проблема сделать Ctrl+Replace('await', 'my_await'), по всему проекту. Так что " слова await и yield очень часто используемые" надуманная проблема

Andrio
Vyacheslav Meshkov

Andrio,

Тогда и нет проблемы назвать его например herb_sutters_favorite_co_await? Это ко-ко-ко в других языках отсутствует. Зачем оно в C++?

Vyacheslav Meshkov
Vyacheslav Meshkov

Считаю co_ ошибкой. Взять например аналоги в других языках.

Vyacheslav Meshkov
yndx-antoshkka

Оформил предложение на отбрасывание co_* Better keywords for Coroutines TS

Возможно успеем рассмотреть на ближайшей встрече.

yndx-antoshkka
Обновлено 
Vyacheslav Meshkov

yndx-antoshkka, Оперативно, нет слов. Интересно, а что Гор думает по этому поводу.

Vyacheslav Meshkov
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения