Хабр / ML & AI
483 subscribers
5.48K links
Telegram-канал, где вы можете найти публикации из RSS-фидов тематических хабов "Машинное обучение" и "Искусственный интеллект" портала Хабр.

Данный канал не является официальным представительством платформы Хабр.

Администратор - @evilfreelancer
Download Telegram
[Перевод] Разработка языков программирования в эру больших языковых моделей: ренессанс посредственности?

В исследовании языков программирования меня всегда наиболее привлекала их разработка.

Когда аккуратно мастеришь язык программирования, синтаксис и семантика которого тщательно подогнаны под конкретную предметную область, ты как программист должен предоставить конечным пользователям интерфейс, полностью согласующийся с наработанной ими интуицией и их устоявшимися привычками. Так пользователи языка смогут сосредоточиться на интересных аспектах стоящих перед ними задач и браться за более крупные и сложные проекты. Читать далее

#llm #dsl #проектирование_языков #искусственный_интеллект | @habr_ai
[Перевод] Разработка языков программирования в эру больших языковых моделей: ренессанс посредственности?

В исследовании языков программирования меня всегда наиболее привлекала их разработка.

Когда аккуратно мастеришь язык программирования, синтаксис и семантика которого тщательно подогнаны под конкретную предметную область, ты, как программист, должен предоставить конечным пользователям интерфейс, полностью согласующийся с наработанной ими интуицией и их устоявшимися привычками. Так пользователи языка смогут сосредоточиться на интересных аспектах стоящих перед ними задач и браться за более крупные и сложные проекты. Читать далее

#llm #dsl #проектирование_языков #искусственный_интеллект | @habr_ai
QapGen: Создаём мощные парсеры на C++

QapDSLv2 — это язык который транслируется в обычный C++ код. Он позволяет удобно и компактно задавать грамматики/правила разбора кода программ, значительно упрощая разработку компиляторов/анализаторов/трансляторов.

QapGen — это генератор дерева_лексеров/парсеров описанных на QapDSLv2. Сама грамматика QapDSLv2 описана на QapDSLv2 на 100%. Поэтому QapGen как основной читатель этой грамматики сам генерирует часть своего кода(весь парсер QapDSLv2).

Основные фишки QapDSLv2 + QapGen — это:

1) Отсутствие этапа токенизации — дерево лексеров разбивает входной поток на лексемы и сохраняет их в строго типизированных древовидных С++ структурах пропуская этап токенизации.

2) Генерация оптимизированного кода полиморфных лексеров.

3) Полное сохранение всех лексем(даже разделители сохраняются, такие как пробелы/переходы на новую строку и комментарии) в результирующем дереве.

4) Возможность сохранить как оригинальное дерево, так и модифицированное обратно в код/текст без потери разделителей/комментариев.

5) Автоматическая генерация кода посетителей(это такой паттерн проектирования).

А теперь пример самой сочной части(рекурсивно самоописывающийся код):

structt_target_struct:i_target_item{

structt_keyword{

stringkw=any_str_from_vec(split("struct,class",","));

" "? // optional separator

};

structt_body_semicolon:i_struct_impl{";"};

structt_body_impl:i_struct_impl{

"{" // жрём скобочку

vectornested?; //рекурсия!

" "?

vectorarr?; // парсим поля

" "?

TAutoPtrc?; // остальной С++ код

" "?

"}"

};

structt_parent{

stringa_or_c=any_str_from_vec(split("=>,:",","));

" "?

t_namename;

};

//точка входа в парсер:

TAutoPtrkw?; //парсимstruct/class

t_namename; //парсим имя

" "?

TAutoPtrparent?;

" "?

TAutoPtrbody;

}; Читать далее

#parser #parser_generator #lexers #c_ #tree #ast #gamedev #dsl #compiler | @habr_ai
DSL для битемпоральной шестой нормальной формы с UUIDv7

Шестая нормальная форма (6NF) играет ключевую роль в хранилищах данных (DWH), разбивая данные на мельчайшие части, привязанные ко времени фактического наступления событий и времени их регистрации в системе. 6NF легко адаптируется к изменениям в структуре данных без модификации существующих записей и снижает объем данных, которые необходимо обрабатывать при обновлениях и запросах.

Репозиторий на GitHub описывает лаконичный, генерируемый из таблиц Excel предметно-ориентированный язык (DSL) для битемпорального хранилища данных шестой нормальной формы (6NF) с первичными ключами UUIDv7, а также эквивалентный SQL-код для PostgreSQL 18 и EBNF.

Этот проект вдохновлен методологиями Anchor Modeling, Data Vault и Activity Schema.

DSL решает проблему работы с большими и сложными схемами данных 6NF, которые сложно визуализировать и поддерживать как с помощью традиционных инструментов моделирования, так и с использованием Anchor Modeler. Он также устраняет необходимость генерировать SQL-код с помощью Python или понимать запутанный код SQL Server, генерируемый Anchor Modeler.

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

У автора нет возможности разработать компилятор для данного DSL, и он рассчитывает на поддержку сообщества.

Английский вариант статьи Читать далее

#sql #dwh #6nf #dsl #ebnf #anchor #vault #normal_form #llm #ai | @habr_ai