cpp-ru / ideas

Идеи по улучшению языка C++ для обсуждения
https://cpp-ru.github.io/proposals
Creative Commons Zero v1.0 Universal
89 stars 0 forks source link

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

Closed apolukhin closed 3 years ago

apolukhin commented 3 years ago

Перенос предложения: голоса +10, -2 Автор идеи: Игорь Шаповал

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

apolukhin commented 3 years ago

Andrey Davydov, 24 декабря 2018, 17:38 Вы точно понимаете, что значит contextual keyword? В таком контексте

await x; await foo();

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

Vyacheslav Meshkov, 15 февраля 2019, 14:48 Andrey Davydov,

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

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

Vyacheslav Meshkov, 15 февраля 2019, 18:37 Andrey Davydov, на других языках никто особо не жалуется. Это похоже на надуманную проблему.

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

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

NeoProgramming, 24 декабря 2018, 18:52 ИМХО contextual keywords это путь в PL/1.

Игорь Шаповал, 26 декабря 2018, 10:05 Я имел в виду как ключевые слова override, final

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

Игорь Шаповал, 26 декабря 2018, 15:47 Почему co_await, co_yield не может быть await, yield ключевыми словами, как override, final.

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

Vyacheslav Meshkov, 15 февраля 2019, 14:50 Andrio,

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

Vyacheslav Meshkov, 15 февраля 2019, 14:52 Считаю co_ ошибкой. Взять например аналоги в других языках.

yndx-antoshkka, 18 февраля 2019, 0:24 Оформил предложение на отбрасывание co_* Better keywords for Coroutines TS https://apolukhin.github.io/papers/Better%20keywords%20for%20Coroutines%20TS.html

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

Vyacheslav Meshkov, 25 февраля 2019, 19:58 yndx-antoshkka, Оперативно, нет слов. Интересно, а что Гор думает по этому поводу.

yndx-antoshkka, 31 июля 2019, 13:45 Предложение отклонили. Слишком поздно вносить изменения в C++20, в добавок есть проблемы при отбрасывании co_ для return. У разработчиков компиляторов особые хитрости для return, им необходимо быстро различать return и co_return не заглядывая в function definition.