Part of the Advanced Information and Knowledge Processing book series (AI&KP, volume 5)


At the very beginning, our aim is to describe a scheme for the initial understanding of meta-programming in order to introduce the knowledge required for the thorough studies in the field later. We start from the statement which gives a very general definition and formulates the primary objectives of the field as follows:


Product Line Prefix 


  1. [AK02].
    Atkinson C, Kuhne T (2002) The role of meta-modeling in MDA. In: Bezivin J, France R (eds) Workshop in software model engineering, University of Nantes, NantesGoogle Scholar
  2. [Bar05].
    Bartlett J (2005) The art of metaprogramming. IBM DeveloperWorks, Oct 2005.
  3. [Bat98].
    Batory J (1998) Product-line architectures. Invited presentation, smalltalk and Java in industry and practical training, Erfurt, Germany, pp 1–12Google Scholar
  4. [BDG+95].
    Batory D, Dasari S, Geraci B, Singhal V, Sirkin M, Thomas J (1995) Achieving reuse with software system generators. IEEE Softw, Sept, 89–94Google Scholar
  5. [Bec00].
    Beck K (2000) Extreme programming explained. Addison-Wesley, ReadingGoogle Scholar
  6. [Big98].
    Biggerstaff TJ (1998) A perspective of generative reuse. Ann Softw Eng 5:169–226CrossRefGoogle Scholar
  7. [BMP07].
    Baily B, Martin G, Piziali A (2007) ESL – a methodology for handling complexity, slides of presentation at DAC’07, San-Diego, June 2007Google Scholar
  8. [Bon98].
    Bondyopadhyay PK (1998) Moore’s law governs the silicon revolution. Proc IEEE 86(1):78–81CrossRefGoogle Scholar
  9. [CE00a].
    Czarnecki K, Eisenecker UW (2000) Separating the configuration aspect to support architecture evolution. In: Proceedings of 14th European conference on object-oriented programming (ECOOP’2000), international workshop on aspects and dimensions of concerns, Cannes, France, 11–12 June 2000Google Scholar
  10. [CE00b].
    Czarnecki K, Eisenecker U (2000) Generative programming: methods, tools and applications. Addison-Wesley, BostonGoogle Scholar
  11. [Chi95].
    Chiba S (1995) A metaobject protocol for C++. ACM SIGPLAN Notices 30(10):285–299CrossRefGoogle Scholar
  12. [CS02].
    Cross JK, Schmidt DC (2002) Metaprogramming techniques for distributed real-time and embedded systems. In: Proceedings of 7th IEEE international workshop on object-oriented real-time dependable systems, San Diego, 7–9 Jan 2002, pp 3–10Google Scholar
  13. [CS92].
    Cordy JR, Shukla M (1992) Practical metaprogramming. In: Proceedings of the 1992 IBM Centre for Advanced Studies conference, Nov 1992, pp 215–224Google Scholar
  14. [Dam05].
    Damaševičius R (2005) Transformational design processes based on higher level abstractions in hardware and embedded system design. Doctoral dissertation, Kaunas University of TechnologyGoogle Scholar
  15. [Dam06].
    Damaševičius R (2006) On the application of meta-design techniques in hardware design domain. Int J Comput Sci (IJCS) 1(1):67–77Google Scholar
  16. [Deb04].
    DeBenedictis EP (2004) Will Moore’s law be sufficient? In: Proceedings of the ACM/IEEE SC2004 conference on high performance networking and computing, 6–12 Nov 2004, Pittsburgh, p 45Google Scholar
  17. [Den84].
    Dennet DC (1984) Formulating human purposes: meta-engineering computers for people. In: Mason REA (ed) Information processing 83. Elsevier (North-Holland), Amsterdam, pp 253–258Google Scholar
  18. [Din03].
    von Dincklage D (2003) Making patterns explicit with metaprogramming. In: Proceedings of 2nd international conference on generative programming and component engineering, GPCE 2003, Erfurt, Germany. LNCS, vol 2830. Springer, New York, pp 287–306Google Scholar
  19. [DS98].
    Dehnert JC, Stepanov AA (1998) Fundamentals of generic programming, report of the Dagstuhl seminar on generic programming, Schloss Dagstuhl, Germany. LNCS, vol 1766, pp 1–11Google Scholar
  20. [FGY+04].
    Fischer G, Giaccardi E, Ye Y, Sutcliffe AG, Mehandjiev N (2004) Meta-design: a manifesto for end-user development. CACM 47(9):33–37Google Scholar
  21. [GK59].
    Greenwald ID, Kane M (1959) The share 709 system: programming and modification. J ACM 6(2):128–133MATHCrossRefGoogle Scholar
  22. [Gog96].
    Goguen JA (1996) Parameterized programming and software architecture. In: Proceedings of 4th international conference on software reuse, ICSR-4, Orlando, 23–26 April 1996, pp 2–11Google Scholar
  23. [HHU08].
    Hubaux A, Heymans P, Unphon H (2008) Separating variability concerns in a product line re-engineering project. EA-AOSD’08, Brussels, Belgium, 31 March 2008Google Scholar
  24. [Hir05].
    Hiremane R (2005) From Moore’s law to Intel innovation—prediction to reality. Technology@Intel Magazine, pp 1–9Google Scholar
  25. [JGS93].
    Jones ND, Gomard CK, Sestoft P (1993) Partial evaluation and automatic program generation. Prentice Hall, New YorkMATHGoogle Scholar
  26. [Jon04].
    Jones SW (2004) Exponential trends in the integrated circuit Industry. In: IC knowledge.
  27. [KLM+97].
    Kiczales G, Lamping J, Mendhekar A, Maeda C, Videira Lopes C, Loingtier J-M, Irwin J (1997) Aspect-oriented programming. In: Proceedings of the European conference on object-oriented programming (ECOOP’1997). LNCS, vol 1241. Springer, New York, pp 220–242Google Scholar
  28. [KRB91].
    Kiczales G, Rivieres Jdes, Bobrow DG (1991) The art of the metaobject protocol. MIT Press, Cambridge, MAGoogle Scholar
  29. [Lev86].
    Levy LS (1986) A metaprogramming method and its economic justification. IEEE Trans Softw Eng 12(2):272–277CrossRefGoogle Scholar
  30. [LH01].
    Ludwig A, Heuzerouth D (2001) Metaprogramming in the large. In: Butler G, Jarzabek S (eds) Generative and component-based software engineering. LNCS, vol 2177. Springer, Berlin, pp 178–187Google Scholar
  31. [LMB92].
    Levine JR, Mason T, Brown D (1992) Lex and Yacc. O’Reilly and Associates, Inc, SebastopolGoogle Scholar
  32. [LN02].
    Löwe W, Noga M (2002) Metaprogramming applied to web component deployment. Electron Notes Theor Comput Sci 65(4):106–116CrossRefGoogle Scholar
  33. [Min75].
    Minsky M (1975) A framework for representing knowledge. In: Winston PH (ed) The psychology of computer vision. McGraw-Hill, New YorkGoogle Scholar
  34. [MJD96].
    Malenfant J, Jaques M, Demers F-N (1996) A tutorial on behavioral reflection and its implementation. In: Proceedings of the reflection 96 conference, April 1996, San Francisco, pp 1–20Google Scholar
  35. [MM05].
    Martin G, Müller W (eds) (2005) UML for SOC design. Springer, DordrechtGoogle Scholar
  36. [MS89].
    Musser DR, Stepanov AA (1989) Generic programming. In: Proceedings of symbolic and algebraic computation, international symposium ISSAC’88, Rome, Italy, 4–8 July 1988. LNCS, vol 358. Springer, Berlin, pp 13–25Google Scholar
  37. [Mul06].
  38. [Ous98].
    Ousterhout JK (1998) Scripting: higher level programming for the 21st century. IEEE Comput 31(3):23–30CrossRefGoogle Scholar
  39. [Pal02].
    Palmer KD (2002) Vajra logic and mathematical metamodels for meta-systems engineering: notes on the foundations of emergent meta-systems theory and practice. In: Twelfth annual international symposium of the international council on systems engineering (INCOSE), Las Vegas, 28 July–1 Aug 2002Google Scholar
  40. [Pas04].
    Pasalic E (2004) The role of type equality in meta-programming. Ph.D. thesis, Oregon Health and Sciences University, OGI School of Science and EngineeringGoogle Scholar
  41. [Pet96].
    Pettorosi A (1996) Future directions in program transformation. ACM Comput Surv 28(4):171–174CrossRefGoogle Scholar
  42. [Rid99].
    Rideau F (1999) Metaprogramming and free availability of sources. In: Proceedings of Autour du Libre Conference, BretagneGoogle Scholar
  43. [Sch06].
    Schmidt DC (2006) Model-driven engineering. IEEE Comput 39(2):25–31CrossRefGoogle Scholar
  44. [SD02].
    Štuikys V, Damaševičius R (2002) Taxonomy of the program transformation processes. Inf Technol Control 1(22):39–52Google Scholar
  45. [SD08].
    Štuikys V, Damaševičius R (2008) Development of generative learning objects using feature diagrams and generative techniques. Inform Educ 7(2):277–288Google Scholar
  46. [She01].
    Sheard T (2001) Accomplishments and research challenges in meta-programming. In: Proceedings of 2nd international workshop on semantics, application, and implementation of program generation (SAIG’2001), Florence, Italy. LNCS, vol 2196. Springer, Berlin, pp 2–44Google Scholar
  47. [SIA01].
    Semiconductor Industry Association (2001) The international technology roadmap for semiconductors.
  48. [Stu02].
    Štuikys V (2002) Metaprogramming techniques for program generation and soft IP design. Habilitation Report, KTU, Kaunas, LithuaniaGoogle Scholar
  49. [Tah99].
    Taha W (1999) A sound reduction semantics for untyped CBN multi-stage computation. Or, the theory of MetaML is non-trivial. ACM SIGPLAN Notices 34(11):34–43CrossRefGoogle Scholar
  50. [Tem95].
    Templ J (1995) Metaprogramming in Oberon. Ph.D. dissertation, ETH ZürichGoogle Scholar
  51. [Ter97].
    Terry PD (1997) Compilers and compiler generators: an introduction with C++. International Thomson Computer Press, LondonGoogle Scholar
  52. [Vel06].
    Veldhuizen TL (2006) Tradeoffs in metaprogramming. In Proceedings of ACM SIGPLAN workshop on partial evaluation and semantics-based program manipulation, Charleston, 2006, pp 150–159Google Scholar
  53. [Wir76].
    Wirth N (1976) Algorithms + data structures = programs. Prentice Hall, Englewood CliffsMATHGoogle Scholar

Copyright information

© Springer-Verlag London 2013

Authors and Affiliations

  1. 1.Software Engineering DepartmentKaunas University of TechnologyKaunasLithuania

Personalised recommendations