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:


Software Development Process High Abstraction Level Design Paradigm Feature Diagram Complexity Growth 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  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