Meta-programming

Meta-programming is a concept in programming languages that describes programmable parts of the languages such that the language itself can be adjusted to the problem the programmers aims to solve.

Plenty of languages support meta-programming elements, namely C++ with its templates, C with its rather limited #define macros, and of course Common Lisp with its defmacro.

While a macro in Lisp for instance might seem like a fancy way of creating what is essentially a more elablorate function, procedure, subroutine, or method, the real power of a macro lies in the fact that it expands into code.