Structural Heterogeneous Meta-Programming

In Chap. 3, we have analysed backgrounds of meta-programming in general. In Chap. 4, we discussed homogeneous meta-programming, meaning the specification of some generalization aspects (e.g. computations) within one programming environment. Here, we focus on heterogeneous meta-programming, meaning the specification of some generalization aspects within heterogeneous programming environments. The term heterogeneous means that a meta-program (aka executable meta-specification) and a target program are written in different (at least two) languages and has to be interpreted in different environments. The first language is a meta-language (see Chap. 6). The second one is a domain (aka target or object) language. We call the paradigm structural heterogeneous meta-programming here. The name structural comes from structural programming because we apply its basic principles in our approach. Further, for simplicity reasons, where it is appropriate, we use the term meta-programming only omitting the words structural and heterogeneous.