Skip to main content

Towards Generative Programming

  • Conference paper
Unconventional Programming Paradigms (UPP 2004)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 3566))

Included in the following conference series:

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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)

    Chapter  Google Scholar 

  2. 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)

    Chapter  Google Scholar 

  3. 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)

    Chapter  Google Scholar 

  4. 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)

    Chapter  Google Scholar 

  5. 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)

    Chapter  Google Scholar 

  6. 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)

    Google Scholar 

  7. 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)

    Google Scholar 

  8. 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)

    Google Scholar 

  9. Bouraqadi-Sadani, M.N., Ledoux, T.: Supporting AOP Using Reflection. In: Chapter 12 of [18], pp. 261–282 (2005)

    Google Scholar 

  10. 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)

    Google Scholar 

  11. Cointe, P.: CLOS and Smalltalk: a Comparison. In: [34], ch. 9. MIT Press, Cambridge (1993)

    Google Scholar 

  12. 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

  13. 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)

    Chapter  Google Scholar 

  14. 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)

    Chapter  Google Scholar 

  15. Czarnecki, K., Eisenecker, U.W.: Generative Programming. In: Methods, Tools, and Applications. Addison-Wesley, Reading (2000)

    Google Scholar 

  16. Dmitriev, S.: Language Oriented Programming: The Next Programming Paradigm on Board (November 2004), wwww.onboard.jetbrains.com

  17. 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)

    Chapter  Google Scholar 

  18. Filman, E.R., Elrad, T., Clarke, S., Aksit, M.: Aspect-Oriented Software Development. Addison-Wesley, Reading (2005)

    Google Scholar 

  19. 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)

    Google Scholar 

  20. 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)

    Chapter  Google Scholar 

  21. 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)

    Chapter  Google Scholar 

  22. 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)

    Google Scholar 

  23. Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns. In: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional Computing Series (1995)

    Google Scholar 

  24. Gabriel, R.: Objects Have Failed, See http://www.dreamsongs.com/Essays.html

  25. 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

    Google Scholar 

  26. 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)

    Google Scholar 

  27. Kiselev, I.: Aspect-Oriented Progamming with AspectJ. Sams Publishing (2003)

    Google Scholar 

  28. 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)

    Google Scholar 

  29. Ledoux, T.: OpenCorba: A Reflective Open Broker. In: Cointe, P. (ed.) Reflection 1999. LNCS, vol. 1616, pp. 197–214. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  30. 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)

    Google Scholar 

  31. McAffer, J.: Meta-level Programming with CodA. In: Olthoff, W. (ed.) ECOOP 1995. LNCS, vol. 952, pp. 190–214. Springer, Heidelberg (1995)

    Google Scholar 

  32. McAffer, J.: Engineering the Meta-Level. In: Kiczales, G. (ed.) Proceedings of Reflection 1996, San Francisco, April 1996, pp. 39–61 (1996)

    Google Scholar 

  33. 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)

    Google Scholar 

  34. Pæpcke, A.: Object-Oriented Programming: The CLOS perspective. MIT Press, Cambridge (1993)

    Google Scholar 

  35. 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)

    Chapter  Google Scholar 

  36. 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)

    Google Scholar 

  37. 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)

    Google Scholar 

  38. 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)

    Google Scholar 

  39. Thomas, D.: Reflective Software Engineering - From MOPS to AOSD. Journal of Object Technology 1(4), 17–26 (2002)

    Article  Google Scholar 

  40. 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

  41. Wand, M., Kiczales, G., Dutchyn, C.: A semantics for Advice and Dynamic Joint Points in AOP. ACM Toplas 26(5) (2004)

    Google Scholar 

  42. 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)

    Google Scholar 

  43. 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)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics