Язык метапрограммирования

Денеб является языком метапрограммирования. Понятие метаязыка подразумевает его описательные функции по отношению не только к результатам работы программы, но и к алгоритмам и структурам самой программы. Матапрограммирование это динамическое изменение поведения и структуры программы в зависимости от данных. В отличии от других языков, где присутствует эта парадигма, Денеб не разделяет методику метапрограммирования в зависимости от этапа жизненного цикла программы.

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

В отношении языка программирования Денеб метапрограммирование обозначает в том числе и возможность описания различных языков программирования с использованием нотации с синтаксическим сахаром и описание преобразований переводящих структуры языка программирования Денеб в исходный код целевых языков программирования. Язык и метаязык в Денеб слиты воедино.

В общем случае Денеб не накладывает ограничений даже на используемые парадигмы и на синтаксис самой программы. В том числе и нотации используемые для синтаксического анализа могут быть динамически изменяемыми.

Наиболее часто используемые приёмы метапрограммирования, как то макросы, обобщения, интроспекция, предметные языки и т.д. являются частью самого языка, а не надстройками над ним. Дополнительно такая техника как "отражение" расширена для работы в обратную сторону. Об этом будет подробнее написано в статье "обратное отражение".

Метапрограммирование