Метапрограммирование
Материал из Википедии — свободной энциклопедии
Метапрограммирование — создание программ, которые создают другие программы как результат своей работы. Во многих случаях метапрограммирование позволяет получить программу при меньших затратах времени и усилий, чем если бы программист писал её вручную.
При метапрограммировании необязательно генерируется код. Если программа может изменяться на стадии выполнения (как Лисп, Smalltalk, Руби и т. д.), подобная техника может применяться без прямой генерации кода. Может происходить на 2-х стадиях:
- Выполнения программы
- При поддержке программы средой выполнения (в .NET в пространствах имён
System.Reflection
иSystem.Type
собраны классы, позволяющие получать о любом типе информацию (состав полей, их тип и так далее), создавать на лету новые классы и т. д. Наконец, для C++ есть библиотека, позволяющая на лету компилировать и генерировать исполняемый код (используется урезанный компилятор gcc, который портирован под любое устройство, способное исполнять команды). - В интерпретируемых языках — достаточно в программе сформировать строку текста программы и передать её на выполнение.
- При поддержке программы средой выполнения (в .NET в пространствах имён
- Компиляции программы
[править] См. также
[править] Ссылки
- Метапрограммирования с C++ — метапрограммирование с использованием только средств C++.
- Lisp - старейший язык программирования естественным образом поддерживающий метапрограммирование.
- Nemerle - язык программирования для платформы .Net со встроенной поддержкой метапрограммирования.
- R# — метапрограммирование в .Net.
- BOOST MPL LIBRARY(англ.) — библиотека для метапрограммирования с использованием шаблонов C++.
- Boost Preprocessor Library(англ.) — библиотека для метапрограммирования с использованием препроцессора C++.
- Статья, рассматривающая ещё один подход к метапрограммированию.