Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Meta-programming is formally defined as writing programs that write programs, but the practical definition is much broader. In general, any solution that manipulates code outside “normal” use is considered meta-programming. Meta-programming approaches tend to be more complex than traditional solutions (for example, libraries and frameworks), but because you are manipulating code at a more fundamental level, it makes hard things easier and impossible things merely improbable.