The OpenNET Project / Index page

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



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

"Энтузиасты создали do-нотацию для C++"  +/
Сообщение от opennews (??), 12-Мрт-26, 14:13 
Сообщество энтузиастов написало собственный DSL на макросах, который работает как do-нотация из функциональных языков. Используются продвинутые возможности препроцессора. В представленном проекте реализована новая техника для парсинга DSL, что может поспособствовать созданию дальнейших DSL на препроцессоре C и C++. Код в репозитории написан на C++23 и открыт под лицензией MIT, а сама техника может быть использована и просто в си-препроцессоре...

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

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

Оглавление

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


1. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Аноним (-), 12-Мрт-26, 14:13 
> сама техника может быть использована и просто в си-препроцессоре.

Поподробнее, как это на си? Функциональщина на си? Это был бы номер, в чемпионате перверсий от айти это было бы где-то в призовых местах :))

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

5. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Жироватт (ok), 12-Мрт-26, 14:17 
Потому, что могут.
Осталось сделать заголовочник для моноидов и вообще, транспилятор из хаскелла в С, с сохранением монад
Ответить | Правка | Наверх | Cообщить модератору

8. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Аноним (8), 12-Мрт-26, 14:22 
Про технику это не про do-нотацию. Там другая техника. Она про то, как посреди произвольного кода вставлять ключевые слова для макросного DSL. И уже на основе этого можно делать другие DSL.
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

9. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Аноним (8), 12-Мрт-26, 14:27 
(если просто определить макросы напрямую, то парсинг будет сильно ограничен, тогда как с этой техникой оно становится намного гибке)
Ответить | Правка | Наверх | Cообщить модератору

22. "Энтузиасты создали do-нотацию для C++"  +3 +/
Сообщение от Аноним (22), 12-Мрт-26, 14:54 
Гибко🤸стрелять🔫себе👨в➡️ноги👣
Ответить | Правка | Наверх | Cообщить модератору

10. "Энтузиасты создали do-нотацию для C++"  –1 +/
Сообщение от Аноним (10), 12-Мрт-26, 14:28 
> сама техника может быть использована и просто в си-препроцессоре.

Чего? do-нотация в СИ?
Они только недавно в C23 смогли осилить Predefined Boolean constants.

А вы предлагаете техники из функциональных языков.
Пожалейте йододефицитных, это ж им мозг сломает))

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

14. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Аноним (8), 12-Мрт-26, 14:33 
Техника это не сама do-нотация, а техника парсинга. Чтобы делать другие DSL. Но можно попробовать и do-нотацию сделать попробовать, но там немного другой вид будет (т.к. в си лямбд нет обычно, придется через макросы разбивать на несколько функций и строить цепочки вызовов, так ещё и захваты переменных придётся руками прописывать)
Ответить | Правка | Наверх | Cообщить модератору

26. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Аноним (26), 12-Мрт-26, 15:03 
техника парсинга нафиг не нужна, есть ctll на основе шаблонов, а не на осонове макросов, уродующих AST самой программы, в результате чего написано одно, а делает программа другое, потому что шаблоны втихаря воруют исходник и меняют его на подделку.
Ответить | Правка | Наверх | Cообщить модератору

27. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Аноним (26), 12-Мрт-26, 15:03 
тфу, не шаблоны, а макросы
Ответить | Правка | Наверх | Cообщить модератору

35. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Аноним (8), 12-Мрт-26, 15:26 
Если бы всё было так просто... Шаблоны это, разумеется, хорошо (и в том репозитории они активно применяются), но могут то они далеко не всё. В таком виде (и в целом в юзабельном) do-нотацию на шаблонах не сделать. Там же гибрид шаблонов и макросов.
Ответить | Правка | К родителю #26 | Наверх | Cообщить модератору

28. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Аноним (28), 12-Мрт-26, 15:08 
> А вы предлагаете техники из функциональных языков.

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

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

12. "Энтузиасты создали do-нотацию для C++"  +2 +/
Сообщение от Аноним (12), 12-Мрт-26, 14:33 
> Сообщество энтузиастов

1 контрибьютор в репозитории

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

13. "Энтузиасты создали do-нотацию для C++"  +1 +/
Сообщение от Аноним (13), 12-Мрт-26, 14:33 
бгг… успешной им отладки! =)
Ответить | Правка | Наверх | Cообщить модератору

17. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Аноним (17), 12-Мрт-26, 14:50 
они такого слова не знают! Надо говорить, успешной разгадки! :)
Ответить | Правка | Наверх | Cообщить модератору

39. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Аноним (39), 12-Мрт-26, 15:45 
printf() хватит всем.
Ответить | Правка | Наверх | Cообщить модератору

19. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Аноним (19), 12-Мрт-26, 14:50 
и что такое bind?
Ответить | Правка | Наверх | Cообщить модератору

20. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Аноним (19), 12-Мрт-26, 14:53 
это явно не std::bind
Ответить | Правка | Наверх | Cообщить модератору

21. "Энтузиасты создали do-нотацию для C++"  –2 +/
Сообщение от Аноним (21), 12-Мрт-26, 14:54 
А как определите такое и будет. Можно передавать весь последующий код в DO блоке в функцию как лямбду. Но изначально было придумано для монад. В std::optional bind это тот же and_then. На основе bind можно сделать генераторы, корутины, разные монады (и не только монады).
Ответить | Правка | К родителю #19 | Наверх | Cообщить модератору

24. "Энтузиасты создали do-нотацию для C++"  +3 +/
Сообщение от Аноним (28), 12-Мрт-26, 15:00 
Это чтоб путаться с bind() из libc - биндить сокет к транспортному порту.
Ответить | Правка | К родителю #19 | Наверх | Cообщить модератору

40. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Аноним (39), 12-Мрт-26, 15:49 
#include <sys/socket.h>
Ответить | Правка | К родителю #19 | Наверх | Cообщить модератору

25. "Энтузиасты создали do-нотацию для C++"  +2 +/
Сообщение от Аноним (26), 12-Мрт-26, 15:01 
Начнём с того, что за использование макросов без острой на то необходимости и 100% невозможности сделать по-другому с переиспользованием кода (и всяки свистелки  перделки вроде do-нотаци сюда не катят, если не хочешь писать на C++ как на C++, то сиди уже на своей сишке, за си головного мозга, когда на си переизобретают фичи C++ на основе макросов или бойлерплейта кстати тоже надо гнать из профессии) надо гнать из профессии с волчьим билетом. Я прекрасно знаю что ranges недоделаны и ни один компилятор их не умеет оптимизировать, именно поэтому такие фичи должны быть частью ядра языка, а не частью стандартной библиотеки, всё равно новая стандартная библиотека без интринсиков компилятора работать не будет, зачем тогда выпендриваться с шаблонным метапрограммированием, чтобы компиляция была помедленнее и чтобы километровые портянки получать? Такие вещи должны быть first-class citizens языка, разумеется кодить их реализацию надо не на самом языке, а на специальном DSLе, который к сишке имеет такое же отношение, как микрокод процессора (процессоры оказались по сути очень кастрированными FPGA, блин, хотеть полноценный FPGA с полной интеграцией в процессор с полноценной компиляцией программ напрямую в микрокод, а ещё больше хотеть современный аналог трансметы на coarse-grained reconfigurable architecture, где code morphing крутится на арсенид-галлиевом высокоскоростном горячем ядре, а дальше микрооперации через сеть с коммутацией пакетов топологии "звезда" раскидываются по вычислительным блокам на низкой тактовой частоте (но их дохрена параллельных, и по самому тонкому техпроцессу, и к каждому - HBM), но в обычном режиме сеть большую часть времени работает как систолический массив) к машинному коду.
Ответить | Правка | Наверх | Cообщить модератору

30. "Энтузиасты создали do-нотацию для C++"  +2 +/
Сообщение от Аноним (19), 12-Мрт-26, 15:10 
согласен, еще надо unsafe из раст выпилить, не умеешь safe - не берись
Ответить | Правка | Наверх | Cообщить модератору

32. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Аноним (-), 12-Мрт-26, 15:14 
> согласен, еще надо unsafe из раст выпилить, не умеешь safe - не берись

Заодно и всю системщину на Rust зарубите как раз. Ну или как вы "safe" допустим адрес в DMA автомат вообще можете загнать? Это вообще - за пределами понимания компилера.

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

34. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Аноним (8), 12-Мрт-26, 15:23 
Так эта do-нотация и сделана в первую очередь для C++, а на C в таком виде её не сделать (можно сделать в другом). Тут добавлена новая фича в C++, которой раньше в нём не было (корутины достаточно ограничены)
Ответить | Правка | К родителю #25 | Наверх | Cообщить модератору

42. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от аролп5 (?), 12-Мрт-26, 15:56 
В go - горутины
В Kotlin - корутины
В C++ - должны быть сирутины 😁
Ответить | Правка | Наверх | Cообщить модератору

37. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Аноним (39), 12-Мрт-26, 15:39 
Нитрид галлия не быстрее будет?
Ответить | Правка | К родителю #25 | Наверх | Cообщить модератору

33. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Аноним (39), 12-Мрт-26, 15:19 
> В представленном проекте реализована новая техника для парсинга DSL, что может поспособствовать созданию дальнейших DSL на препроцессоре C и C++.

Раз Торвальц не пускает C++ в ядро, то превратим этим способом C в C_with_classes для ядра.

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

38. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Аноним (38), 12-Мрт-26, 15:40 
Вангую что подобные выкрутасы Торвальдс тоже не пропустит. А если надо, то C++ он в ядро пустит. Но спонсоры увидели выгоду только в расте.
Ответить | Правка | Наверх | Cообщить модератору

36. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от 12yoexpert (ok), 12-Мрт-26, 15:34 
не позорься, школотрон
Ответить | Правка | Наверх | Cообщить модератору

41. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от warlock66613email (ok), 12-Мрт-26, 15:55 
Это мегакруто, но я не смог понять в коде почти ни одной строчки.
Ответить | Правка | Наверх | Cообщить модератору

43. "Энтузиасты создали do-нотацию для C++"  +/
Сообщение от Аноним (43), 12-Мрт-26, 15:57 
Перл изобретают
Ответить | Правка | Наверх | Cообщить модератору

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

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




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

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