Programs that write programs that write programs (...) Too complicated? A hackers technique which can not be applied to the “real world” problems? This is exactly how IT industry specialists think about metaprogramming. And this is a completely wrong notion! Metaprogramming is the only known way to reduce the complexity significantly. In some areas “programs that write programs” are accepted by the industry due to the enormous level of complexity of the corresponding handwritten code — regular expressions, lexers and parsers generators to name a few, and code wizards and templates in popular “integrated development environments” are also widely used.