The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Реализация генераторов через макросы на C++"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Реализация генераторов через макросы на C++"  +/
Сообщение от opennews (??), 26-Мрт-26, 15:56 
Энтузиасты написали генераторы на C++, которые базируются на do-нотации, которая тоже сделана на макросах.  Реализация открыта под лицензией MIT...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=65079

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. Скрыто модератором  –2 +/
Сообщение от Аноним (1), 26-Мрт-26, 15:56 
Ответить | Правка | Наверх | Cообщить модератору

4. "Реализация генераторов через макросы на C++"  –1 +/
Сообщение от Аноним (4), 26-Мрт-26, 16:15 
Если кому надо, то на Habr можно прочитать подробнее про эти генераторы. Про реализацию на лупхолах и реализацию без.

Там особенно про оптимизацию.

https://habr.com/ru/companies/timeweb/articles/1006490/

Ответить | Правка | Наверх | Cообщить модератору

6. Скрыто модератором  +1 +/
Сообщение от Ананоним (?), 26-Мрт-26, 16:25 
Ответить | Правка | Наверх | Cообщить модератору

7. "Реализация генераторов через макросы на C++"  +2 +/
Сообщение от Аноним (7), 26-Мрт-26, 16:45 
Без do-нотации - набор заклинаний, с do-нотацией - тоже набор заклинаний. А какую задачу решают - неизвестно.
Ответить | Правка | Наверх | Cообщить модератору

13. "Реализация генераторов через макросы на C++"  +/
Сообщение от Аноним (-), 26-Мрт-26, 17:11 
> А какую задачу решают - неизвестно.

А ты на хабр сходи - сразу узнаешь.
(Ссылка есть в тексте новости, под новостью и в комментариях, чтобы ты случайно не пропустил)

Ответить | Правка | Наверх | Cообщить модератору

15. "Реализация генераторов через макросы на C++"  +/
Сообщение от Аноним (15), 26-Мрт-26, 17:23 
> А какую задачу решают - неизвестно.

Возобновляемые функции.
Удобно при всяком получении данных.

Типа
let records = getRecords(тут твои параметры)


А дальше ты просто интегрируешь records, пока есть данные. getRecords может отдавать записия скажем по 100, инкапсулируя логику перебора и текущие офсеты.

К слову, через yield в него еще и передавать значения можно, правда хз зачем, это будет сложно дебажить

> Без do-нотации - набор заклинаний, с do-нотацией

Ну так оно и сделанно черт пойми какими костылями тут.

При нормальной реализации он должен выглядеть как-то так:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...

Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

16. "Реализация генераторов через макросы на C++"  +/
Сообщение от Аноним (4), 26-Мрт-26, 17:26 
Так есть же статьи на хабр с объяснением работы.

Про do-нотацию: https://habr.com/ru/companies/timeweb/articles/1003272/
Про генераторы: https://habr.com/ru/companies/timeweb/articles/1006490/

Ответить | Правка | Наверх | Cообщить модератору

20. "Реализация генераторов через макросы на C++"  +/
Сообщение от Аноним (-), 26-Мрт-26, 18:47 
Чтобы вручную не выпиливать конечный автомат ты можешь воспользоваться генератором, написать вполне себе императивный код, который из цикла будет выплёвывать значения. Генератор выпилит тебе этот конечный автомат. Или это может быть реализовано как корутина. Но фишка в том, что конечный автомат выпиливать вручную требует заметно больше усилий.

А если тебе конкретный пример нужен, то можно взять какой-нибудь лексер, который разбирает поток и выплёвывает токены. На вызывающей стороне это выглядит как итератор по токенам, то есть грубо говоря функция next_token, а реализация -- это конечный автомат. Либо ты пишешь его руками, весь этот switch по состояниям, отслеживая переключения между состояниями, либо ты пишешь императивный код, который просто цикл по байтам.

Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

8. "Реализация генераторов через макросы на C++"  +/
Сообщение от Аноним (8), 26-Мрт-26, 16:49 
Сначала был императивный язык, затем поверх навертели функциональный, затем уже поверх него накрутили опять императивный. Цикл замкнулся...
Ответить | Правка | Наверх | Cообщить модератору

10. "Реализация генераторов через макросы на C++"  +/
Сообщение от Аноним (10), 26-Мрт-26, 17:03 
Сабж в GNU g++ работает?
Ответить | Правка | Наверх | Cообщить модератору

11. "Реализация генераторов через макросы на C++"  +/
Сообщение от Аноним (4), 26-Мрт-26, 17:05 
В гитхаб репозитории есть CI/CD. Там и показано, что на gcc оно работает. Да и в статье про это написано (нужен g++ 15.2.1 и выше)
Ответить | Правка | Наверх | Cообщить модератору

14. "Реализация генераторов через макросы на C++"  +1 +/
Сообщение от Мемоним (?), 26-Мрт-26, 17:22 
Можно, а зачем?
Ответить | Правка | Наверх | Cообщить модератору

18. "Реализация генераторов через макросы на C++"  +/
Сообщение от Аноним (4), 26-Мрт-26, 18:36 
Потому что могут. Могут и делают. А на основе этого можно сделать ещё что-нибудь другое.
Ответить | Правка | Наверх | Cообщить модератору

17. "Реализация генераторов через макросы на C++"  +2 +/
Сообщение от Аноним (17), 26-Мрт-26, 17:27 
А говорят, что у раст уродливый синтаксис...
Ответить | Правка | Наверх | Cообщить модератору

19. Скрыто модератором  +1 +/
Сообщение от Аноним (19), 26-Мрт-26, 18:36 
Ответить | Правка | Наверх | Cообщить модератору

21. "Реализация генераторов через макросы на C++"  +/
Сообщение от Обычный человек (?), 26-Мрт-26, 18:52 
Автор писал новость написана по принципу: "Посмотрите какой я умный, если интересуюсь такими вещами!"
Ответить | Правка | Наверх | Cообщить модератору

23. "Реализация генераторов через макросы на C++"  +/
Сообщение от Обычный человек (?), 26-Мрт-26, 18:55 
del
Ответить | Правка | Наверх | Cообщить модератору

22. "Реализация генераторов через макросы на C++"  +/
Сообщение от Обычный человек (?), 26-Мрт-26, 18:54 
Автор писал новость по принципу: "Посмотрите какой я умный, если интересуюсь такими вещами!"
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2026 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру