Metaprogramming is the capability to reprogram ones programming environment, as with macros or metaclasses.
Metaprogramming - the capability to reprogram ones programming environment - can save time and code by allowing one to create new abstractions, or new and more concise syntax for repetitive tasks.
Notable metaprogramming facilities include:
- Common lisp macros
- Scheme hygienic macros
- Common lisp metaobject protocol
- Python metaclass facility
- Smalltalk's entirely transparent and reflective execution environment
For more info see http://en.wikipedia.org/wiki/Metaprogramming.