A Background of Meta-Programming Techniques

In Chap. 2, we discussed the fundamental concepts of programming and meta-programming. Knowing the meaning of the concepts through their definitions is important but not enough. It is just the first step to acquire knowledge in the field. The aim of this chapter is to extend that knowledge and to reconsider some software design principles as a background of meta-programming techniques. Here, by principles, we mean the known software construction principles as they are to be applied to meta-programming domain. We refer to them as preliminary principles, when we discuss the way on how to start acquiring knowledge in the field. We refer to them as fundamental principles, when we consider the background of meta-programming based on information hiding. We refer to the implementation techniques or mechanism, when we consider the conceptual description of how some principles are realized in order to implement the meta-programming paradigm.