Abstract
This paper gives a brief summary of generative programming (GP) and its main principles. To investigate GP and for implementing generators usually new languages are developed and deployed in research. But it seems not to be imperative to base work on new languages. Therefore the qualification of the multiparadigm language C++ will be examined. The effectiveness of C++ for GP as well as basic idioms and techniques are explored in more detail. This includes statically and dynamically configured systems, migrating from generic to generative programming, compositional use of templates, delaying code injection in statically configured systems, controlling virtualization of functions, interface extension and adding properties by inheriting from template parameters, and expressing constraints for template parameters of related classes.
Chapter PDF
Similar content being viewed by others
References
ANSI X3J16, Working Paper for Draft Proposed International Standard for Information Systems — Programming Language C++, X3J16/95-0185, WG21/N0785,26. September 1995, ftp://research.att.com/dist/c++std/WP
D. Batory and S. O'Malley, The Design and Implementation of Hierarchical Software Systems With Reusable Components, in: ACM Transactions on Software Engineering and Methodology, Vol 1(4), October 1992
D. Batory, Subjectivity and GenVoca Generatos, in: [Sit96], pp. 166–175
D. Batory, Software System Generators, Architectures, and Reuse. Tutorial Notes for the International Conference on Software Reuse '96 (Orlando), 1996
U. Breymann, Die C++ Standard Template Library, Addison-Wesley, 1996
J. Coplien, Advanced C++ Programming Styles and Idioms, Addison-Wesley, 1992
K. Czarnecki, “Separation of Concerns” — objektorientierte Frameworks und das generative Paradigma, in: OBJEKTspektrum, 6/96, pp. 35–40
K. Czarnecki, Transformationen in Smalltalk, in: OBJEKTspektrum, 6/96, pp. 86–95
U. Eisenecker, Exceptions in Libraries. In: Pre-Austin Mailing, Document Number X3J16/95-0006 (WG21/N0606)
U. Eisenecker, Recht auf Fehler, Strategien zur Fehlerbehandlung in C++-Klassenbibliotheken, in: iX, 6/1995, pp. 184–189
U. Eisenecker, Typisierung und Polymorphic in C++, in: OBJEKTspektrum, 5/1995, pp. 81–83
U. Eisenecker, Templates statt Vererbung, in: OBJEKTspektrum, 4/1996, pp. 92–95
U. Eisenecker, Attribute im Zugriff, in: OBJEKTspektrum, 5/1996, pp. 98–101
U. Eisenecker, “Das generative Paradigma” oder “Was kommt nach der Objektorientierung?”, in: OBJEKTspektrum, 6/96, pp. 30–34
U. Eisenecker, Generatives Programmieren mit C++, in: OBJEKTspektrum, 6/1996, pp. 79–84
E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns, Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995
A. Goldberg and K. Rubin, Succeeding with Objects, Addison-Wesley, 1995
G. Kiczales, J. Irwin, J. Lamping, J.-M. Lointier, C. V. Lopes, Ch. Maeda, and A. Mendhekar, Aspect-Oriented Programming, A Position Paper From the Xerox PARC Aspect-Oriented Programming Project, position paper for the ECOOP'96 Workshop on Adaptability in Object-Oriented Software Development, 1996, http:/www.parc.xerox.com/spl/projects/aop/
D. R. Musser and A. A. Stepanov, Algorithm-Oriented Generic Libraries, in: Software Practice and Experience, Vol 24(7), 1994
D. R. Musser and A. Saini, STL Tutorial and Reference Guide. C++ Programming with the Standard Template Library, Addison-Wesley, 1996
Ch. Simonyi, The Death of Computer Languages, The Birth of Intentional Programming, Technical Report MSR-TR-95-52, Microsoft Research, 1995
Ch. Simonyi, Intentional Programming — Innovation in the Legacy Age, Presented at IFIP WG 2.1 meeting, June 4, 1996 (for more information about IP see http://www.research.microsoft.com/research/ip/)
M. Sitaraman (Ed.), Fourth International Conference on Software Reuse, April 23–26, 1996, Orlando Florida, IEEE Computer Society Press, 1996
A. Stepanov and M. Lee, The Standard Template Library, Hewlett-Packard Laboratories, California, 1994, ftp://butler.hpl.hp.com/stl/
B. Stroustrup, The Design and Evolution of C++, Addison-Wesley, 1994
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1997 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Eisenecker, U.W. (1997). Generative programming (GP) with C++. In: Mössenböck, H. (eds) Modular Programming Languages. JMLC 1997. Lecture Notes in Computer Science, vol 1204. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-62599-2_51
Download citation
DOI: https://doi.org/10.1007/3-540-62599-2_51
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-62599-5
Online ISBN: 978-3-540-68328-5
eBook Packages: Springer Book Archive