Работа по дисциплинеТехнологии программирования Тема: Метапрограммирование Выполнили: Савельев А. Л. Воробьев Д. Н. Проверил: Куприянов Ю.
1.Метапрограммирование Метапрограммирование создание программ, которые создают другие программы как результат своей работы (либо частный случай изменяющие или дополняющие себя во время выполнения).
2.Содержание - генераторы кода - шаблоны С++ - виртуальные функции С++ - самомодифицирующийся код
3. Генераторы кода - теоретическое введение - Lex - Yacc - Lex & Yacc
4.Шаблоны С++ Парадигма обобщенного программирования: Решить, какие требуются алгоритмы; параметризовать их так, чтобы они могли работать со множеством подходящих типов данных
5. Виртуальные функции -vtbl -абстрактные классы
6. Самомодификация кода - Интроспекция - Интерпретация произвольного кода - Динамическое использование динамических библиотек
7. Интерпретатор математических формул - Грамматика: EXPR-> [ | ]TERM MORETERMS MORETERMS-> TERM MORETERMS | TERM MORETERMS | TERM-> FACTOR MOREFACTORS MOREFACTORS-> FACTOR MOREFACTORS | FACTOR MOREFACTORS | FACTOR-> POW MOREPOWS MOREPOWS-> POW{ }0 | POW-> | | EXPR | FUNC EXPR FUNC-> | | | | | | |
8. Интерпретатор математических формул - Лексический анализатор - Взаимодействие анализаторов - Оптимизатор - Сохранение дерева вывода - Интерпретатор
9. Выводы Метапрограммирование является инструментом, уменьшающим время кодирование и улучшающим качество программ. Оно применимо в тех случаях, когда есть данные различных сущностей и с ними требуется производить похожие между собой манипуляции, т. е. абстрактные алгоритмы работы с ними одинаковы.
10. Выводы Ухудшение временных характеристик работы программы Уменьшение времени разработки Генераторы кода 55 Шаблоны 24 Виртуальные функции 33 Самомодификация кода 42
Демонстрация интерпретатора математических формул