Парадигма: метапрограммирование
Метапрограммирование предусматривает написание программ, которые работают с другими программами в качестве данных. Язык обрабатывающей программы называется метаязыком, язык обрабатываемой — объектным языком.
Простейшим примером метапрограммирования является любой компилятор, преобразующий код, написанный на языке высокого уровня, в низкоуровневый машинный язык или ассемблер. Очевидно, что большинство языков, поддерживающих работу со строками, могут использоваться для непосредственной генерации кода для других языков. Тем не менее, термин “метапрограммирование” обычно подразумевает, что в качестве метаязыка и объектного языка выступает один и тот же язык, и более того, такое его использование предусмотрено дизайном языка.
Парадигма метапрограммирования может быть реализована несколькими способами:
- использование макросов;
- обобщенное программирование;
-
динамическое выполнение строковых выражений, которые содержат фрагменты кода и могут генерироваться во время выполнения программы (например, команда
execute immediate
в PL/SQL); - предоставление коду программы доступа к внутренней реализации средств выполнения программы.