What is Metaprogramming?
Metaprogramming is the process of specifying generic software templates from which new software components can be automatically instantiated by providing the requisite configuration parameters. Meta-programming greatly facilitates software reuse by producing “families” of software systems rather than a single system. A developer, therefore, writes a framework that can create varying software systems when supplied with different parameters. The meta-programs supply these parameters to the framework and instantiate a specific product from the generic framework. They are called meta-programs because they are little programs about programs.