Metaprogramming is the capability to reprogram ones programming environment, as with macros or metaclasses.