Abstract
Generative Programming (GP) is an attempt to manufacture software components in an automated way by developing programs that synthesize other programs. Our purpose is to introduce the what and the how of the GP approach from a programming language point of view. For the what we discuss the lessons learned from object-oriented languages seen as general purpose languages to develop software factories. For the how we compare a variety of approaches and techniques based on program transformation and generation. On the one hand, we present the evolution of open-ended languages from metalevel programming to aspect-oriented programming. On the other hand, we introduce domain-specific languages as a way to bridge the gap between conceptual models and programming languages.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Chiba, S.: Generative Programming from a Post Object-Oriented Programming View Point. In: Banâtre, J.-P., Fradet, P., Giavitto, J.-L., Michel, O. (eds.) UPP 2004. LNCS, vol. 3566, pp. 355–366. Springer, Heidelberg (2005)
Coore, D.: Introduction to Amorphous Computing. In: Banâtre, J.-P., Fradet, P., Giavitto, J.-L., Michel, O. (eds.) UPP 2004. LNCS, vol. 3566, pp. 99–109. Springer, Heidelberg (2005)
Czarnecki, K.: Overview of Generative Software Development. In: Banâtre, J.-P., Fradet, P., Giavitto, J.-L., Michel, O. (eds.) UPP 2004. LNCS, vol. 3566, pp. 326–341. Springer, Heidelberg (2005)
Mezini, M., Ostermann, K.: A Comparison of Programm Generation with Aspect-Oriented Programming. In: Banâtre, J.-P., Fradet, P., Giavitto, J.-L., Michel, O. (eds.) UPP 2004. LNCS, vol. 3566, pp. 342–354. Springer, Heidelberg (2005)
Parashar, M., Hairi, S.: Autonomic Computing: An Overview. In: Banâtre, J.-P., Fradet, P., Giavitto, J.-L., Michel, O. (eds.) UPP 2004. LNCS, vol. 3566, pp. 257–269. Springer, Heidelberg (2005)
Aberg, R.A., Lawall, J., Sudholt, M., Muller, G., Lemeur, A.-F.: On the automatic evolution of an OS kernel using temporal logic and AOP. In: 18th IEEE International Conference on Automated Software Engineering, ASE 2003, Montreal, Canada (October 2003)
Aksit, M., Black, A., Cardelli, L., Cointe, P., Guerraoui, R., et al.(eds.): Strategic Research Directions in Object Oriented Programming. ACM Computing Surveys 8(4), 691–700 (1996)
Bouraqadi-Sadani, M.N., Ledoux, T., Rivard, F.: Safe Metaclass Programming. In: Chambers, C. (ed.) Proceedings of OOPSLA 1998, ACM-Sigplan, Vancouver, British Columbia, Canada, October 1998, vol. 33(10), pp. 84–96 (1998)
Bouraqadi-Sadani, M.N., Ledoux, T.: Supporting AOP Using Reflection. In: Chapter 12 of [18], pp. 261–282 (2005)
Cointe, P.: Metaclasses are First Class: The ObjVlisp Model. In: Archibald, J.L. (ed.) Proceedings of the second ACM SIGPLAN conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 1987), Orlando, Florida, USA, October 1987. ACM SIGPLAN Notices, vol. 22(12), pp. 156–167 (1987)
Cointe, P.: CLOS and Smalltalk: a Comparison. In: [34], ch. 9. MIT Press, Cambridge (1993)
Cointe, P., Noyé, J., Douence, R., Ledoux, T., Menaud, J.M., Muller, G., Südholt, M.: Programmation post-objets. Des langages d’aspect aux langages de composants. RSTI série L’objet, vol. 10(4), pp. 119–143 (2004), See also http://www.lip6.fr/colloque-JFP
Cointe, P., Amiot, A., Denier, S.: From (Meta) Objects to Aspects: A Java and AspectJ Point of View. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2004. LNCS, vol. 3657, pp. 70–94. Springer, Heidelberg (2005)
Consel, C.: From A Program Family To a Domain-Specific Language. In: Lengauer, C., Batory, D., Consel, C., Odersky, M. (eds.) Domain-Specific Program Generation. LNCS, vol. 3016, pp. 19–29. Springer, Heidelberg (2004)
Czarnecki, K., Eisenecker, U.W.: Generative Programming. In: Methods, Tools, and Applications. Addison-Wesley, Reading (2000)
Dmitriev, S.: Language Oriented Programming: The Next Programming Paradigm on Board (November 2004), wwww.onboard.jetbrains.com
Douence, R., Motelet, O., Sudholt, M.: A formal definition of crosscuts. In: Yonezawa, A., Matsuoka, S. (eds.) Reflection 2001. LNCS, vol. 2192, pp. 170–186. Springer, Heidelberg (2001)
Filman, E.R., Elrad, T., Clarke, S., Aksit, M.: Aspect-Oriented Software Development. Addison-Wesley, Reading (2005)
Kiczales, G., Ashley, J., Rodriguez, L., Vahdat, A., Bobrow, D.: Metaobject Protocols Why We Want Them and What Else They Can Do. In: [34], ch. 4, pp. 101–118. MIT Press, Cambridge (1993)
Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J.-M., Irwin, J.: Aspect-Oriented Programming. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.: An Overview of AspectJ 15th European Conference on Object-Oriented Programming. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–354. Springer, Heidelberg (2001)
Hannemann, J., Kiczales, G.: Design Pattern Implementation in Java and AspectJ. In: Crocker, R., Steele Jr., G.L. (eds.) Proceedings of OOPLSA 2002, pp. 161–173 (2002)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns. In: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional Computing Series (1995)
Gabriel, R.: Objects Have Failed, See http://www.dreamsongs.com/Essays.html
Greenfield, J., Short, K., Cook, S., Stuart, K.: Software Factories: Assembling Applications with Patterns, Models, Frameworks & Tools, September 2004. John Wiley & Sons, Chichester (2004), www.softwarefactories.com
Guéhéneuc, Y., Albin Amiot, H.: Recovering Binary Class relationships: Putting Icing on the UML Cake. In: The OOPSLA 2004 Proceedings, Vancouver, October 2004. ACM Sigplan, pp. 301–314 (2004)
Kiselev, I.: Aspect-Oriented Progamming with AspectJ. Sams Publishing (2003)
Ledoux, T., Cointe, P.: Explicit Metaclasses As a Tool for Improving the Design of Class Libraries. In: Futatsugi, K., Matsuoka, S. (eds.) ISOTAS 1996. LNCS, vol. 1049. Springer, Heidelberg (1996)
Ledoux, T.: OpenCorba: A Reflective Open Broker. In: Cointe, P. (ed.) Reflection 1999. LNCS, vol. 1616, pp. 197–214. Springer, Heidelberg (1999)
Meta-Level Architectures and Reflection. In: Maes, P., Nardi, D. (eds.) Selection of papers presented at the workshop on Meta-Level Architectures and Reflection held in Alghero during october 1986. North-Holland, Amsterdam (1988)
McAffer, J.: Meta-level Programming with CodA. In: Olthoff, W. (ed.) ECOOP 1995. LNCS, vol. 952, pp. 190–214. Springer, Heidelberg (1995)
McAffer, J.: Engineering the Meta-Level. In: Kiczales, G. (ed.) Proceedings of Reflection 1996, San Francisco, April 1996, pp. 39–61 (1996)
Muller, G., Consel, C., Marlet, R., Barreto, L.P., Mérillon, F., Réveillère, L.: Towards Robust OSes for Appliances: A New Approach Based on Domain-Specific Languages. In: The Proceedings of the ACM SIGOPS European Workshop 2000 (EW 2000), Kolding, Denmark, pp. 19–24 (2000)
Pæpcke, A.: Object-Oriented Programming: The CLOS perspective. MIT Press, Cambridge (1993)
Scharli, N., Ducasse, S., Nierstrasz, O., Black, P.: Traits: Composable Units of Behaviour. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743, pp. 248–274. Springer, Heidelberg (2003)
Smith, B.: What do you mean, meta? In: Proceedings of the First Workshop on Reflection and Metalevel Architectures in Object-Oriented Programming. OOPSLA-ECOOP 1990, Ottawa (1990)
Tanter, E., Noyé, J., Caromel, D., Cointe, P.: Partial Behavioral Reflection: Spatial and Temporal Selection of Reification. In: Crocker, R., Steele Jr., G.L. (eds.) Proceedings of the 18th ACM SIGPLAN conference on Object-Oriented Programing, Systems, Languages, and Applications, OOPSLA 2003. ACM SIGPLAN Notices, vol. 38(11), pp. 27–46 (2003)
Tatsubori, M., Chiba, S.: Programming Support of Design Pattern with Compile-time Reflection. In: Proceedings of the OOPSLA 1998 workshop on Reflective Programming in C++ and Java, Availabla as at technical report of the Center for Computational Physics, October 1998. Univcersity of Tsukuba, Vancouver (1998)
Thomas, D.: Reflective Software Engineering - From MOPS to AOSD. Journal of Object Technology 1(4), 17–26 (2002)
Wand, M.: Understanding Aspects. In: Invited talk at the International Conference on Functional Programming, ICFP (2003), Available at www.ccs.neu.edu/home/wand/ICFP
Wand, M., Kiczales, G., Dutchyn, C.: A semantics for Advice and Dynamic Joint Points in AOP. ACM Toplas 26(5) (2004)
Wegner, P.: Dimensions of Object-Based Language Design. In: Archibald, J.L. (ed.) Proceedings of the second ACM SIGPLAN conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 1987), Orlando, Florida, USA, October 1987. ACM SIGPLAN Notices, vol. 22(12), pp. 168–182 (1987)
Reflection and Meta-Level Architectures. In: Yonezawa, A., Smith, Brian, C. (eds.) Proceedings of the IMSA workshop held in Tokyo during, November 4-7 (1992)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Cointe, P. (2005). Towards Generative Programming. In: Banâtre, JP., Fradet, P., Giavitto, JL., Michel, O. (eds) Unconventional Programming Paradigms. UPP 2004. Lecture Notes in Computer Science, vol 3566. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11527800_24
Download citation
DOI: https://doi.org/10.1007/11527800_24
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-27884-9
Online ISBN: 978-3-540-31482-0
eBook Packages: Computer ScienceComputer Science (R0)