Skip to main content

Magda: A New Language for Modularity

  • Conference paper

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 7313))

Abstract

We introduce Magda, a modularity-oriented programming language. The language features lightweight mixins as units of code reuse, modular initialization protocols, and a hygienic approach to identifiers. In particular, Magda’s modularity guarantees that the client code of a library written in Magda will never break as a consequence of any addition of members to the library’s mixins.

Work partially funded by the MIUR Project DISCO.

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

Buying options

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

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Visual Basic .NET Language Reference. Microsoft Press (2002)

    Google Scholar 

  2. Delphi Language Guide. Borland Software Corporation (2004)

    Google Scholar 

  3. Allen, E., Bannet, J., Cartwright, R.: A first-class approach to genericity. In: Proc. OOPSLA 2003, pp. 96–114 (2003)

    Google Scholar 

  4. Allen, E., Chase, D., Flood, C., Luchangco, V., Maessen, J.-W., Ryu, S., Steele Jr., G.L.: Project Fortress: A multicore language for multicore processors. Linux Magazine, 38–43 (September 2007)

    Google Scholar 

  5. Allen, E., Chase, D., Hallett, J., Luchangco, V., Maessen, J.-W., Ryu, S., Steele Jr., G.L., Tobin-Hochstadt, S.: The Fortress language specification. Technical report, Sun Microsystems (2008)

    Google Scholar 

  6. Allen, E., Hallett, J.J., Luchangco, V., Ryu, S., Steele Jr., G.L.: Modular multiple dispatch with multiple inheritance. In: Proc. SAC 2007, pp.1117–1121. ACM (2007)

    Google Scholar 

  7. Ancona, D., Lagorio, G., Zucca, E.: Jam - A Smooth Extension of Java with Mixins. In: Bertino, E. (ed.) ECOOP 2000. LNCS, vol. 1850, pp. 154–178. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  8. Ancona, D., Zucca, E.: An Algebra of Mixin Modules. In: Parisi-Presicce, F. (ed.) WADT 1997. LNCS, vol. 1376, pp. 92–106. Springer, Heidelberg (1998)

    Chapter  Google Scholar 

  9. Barron, D.W. (ed.): Pascal: The Language and its Implementation. John Wiley (1981)

    Google Scholar 

  10. Beazley, D., Van Rossum, G.: Python. Essential Reference. New Riders Publishing, Thousand Oaks (1999)

    Google Scholar 

  11. Bono, V., Damiani, F., Giachino, E.: On Traits and Types in a Java-like Setting. In: Ausiello, G., Karhumäki, J., Mauri, G., Ong, L. (eds.) Proc. IFIP-TCS 2008. IFIP AICT, vol. 273, pp. 367–382. Springer, Boston (2008)

    Google Scholar 

  12. Bono, V., Kuśmierek, J.D.M.: FJMIP: A Calculus for a Modular Object Initialization. In: Csuhaj-Varjú, E., Ésik, Z. (eds.) FCT 2007. LNCS, vol. 4639, pp. 100–112. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  13. Bono, V., Kuśmierek, J.D.M.: Modularizing constructors. Journal of Object Technology, Special Issue: TOOLS EUROPE 6(9), 297–317 (2007)

    Google Scholar 

  14. Bono, V., Patel, A., Shmatikov, V.: A Core Calculus of Classes and Mixins. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, pp. 43–66. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  15. Bracha, G.: The Programming Language Jigsaw: Mixins, Modularity and Multiple Inheritance. PhD thesis, The University of Utah (1992)

    Google Scholar 

  16. Bracha, G., Ahe, P., Bykov, V., Kashai, Y., Mirand, E.: The Newspeak programming platform. Technical report, Cadence Design Systems (2008)

    Google Scholar 

  17. Bracha, G., Cook, W.: Mixin-based Inheritance. In: Proc. OOPSLA 1990, pp. 303–311. ACM Press (1990)

    Google Scholar 

  18. Cardone, R.J.: Language and Compiler Support for Mixin Programming. PhD thesis, The University of Texas at Austin (2002)

    Google Scholar 

  19. Cohen, T., Gil, J.: Better construction with factories. Journal of Object Technology 6(6), 109–129 (2007)

    Article  Google Scholar 

  20. Cook, S.: OOPSLA 1987 panel P2 varietes on inheritance. In: OOPSLA 1987 Addendum to Proc., pp. 35–40. ACM Press (1987)

    Google Scholar 

  21. Craig, I.D.: Programming in Dylan. Springer-Verlag New York, Inc., NJ (1996)

    Google Scholar 

  22. Ducasse, S., Nierstrasz, O., Schärli, N., Wuyts, R., Black, A.: Traits: A mechanism for fine-grained reuse. TOPLAS 28(2), 331–388 (2006)

    Article  Google Scholar 

  23. Ducasse, S., Wuyts, R., Bergel, A., Nierstrasz, O.: User-changeable visibility: resolving unanticipated name clashes in traits. In: Proc. OOPSLA 2007, pp. 171–190. ACM (2007)

    Google Scholar 

  24. Flatt, M., Krishnamurthi, S., Felleisen, M.: Classes and Mixins. In: Proc. POPL 1998, pp. 171–183. ACM (1998)

    Google Scholar 

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

    Google Scholar 

  26. Gialluca, M.: Modular initialization protocol: a new implementation of the JavaMIP language. Tesi di Laurea Trieannale, Torino University, Dipartimento di Informatica (2010)

    Google Scholar 

  27. Gosling, J., Joy, B., Steele, G., Bracha, G.: The JavaTM Language Specification. Addison-Wesley, Sun Microsystems (2005)

    Google Scholar 

  28. Hejlsberg, A., Golde, P., Wiltamuth, S.: C\(\sharp\) Language Specification. Addison-Wesley (2003)

    Google Scholar 

  29. Igarashi, A., Pierce, B., Wadler, P.: Featherweight Java: A minimal core calculus for Java and GJ. TOPLAS 23(3), 396–450 (2001)

    Article  Google Scholar 

  30. Kamina, T., Tamai, T.: McJava – A Design and Implementation of Java with Mixin-Types. In: Chin, W.-N. (ed.) APLAS 2004. LNCS, vol. 3302, pp. 398–414. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  31. Kamina, T., Tamai, T.: Flexible method combination based on mixin subtyping. Journal of Object Technology 4(10), 95–115 (2005)

    Article  Google Scholar 

  32. Kamina, T., Tamai, T.: Selective method combination in mixin-based composition. In: Proc. SAC 2005, pp. 1269–1273 (2005)

    Google Scholar 

  33. Kochan, S.: Programming in Objective-C. Sams (2004)

    Google Scholar 

  34. Kreczmar, A., Salwicki, A., Warpechowski, M.: LOGLAN 1988—report on the programming language. Springer (1990)

    Google Scholar 

  35. Kuśmierek, J.: A Mixin Based Object-Oriented Calculus: True Modularity in Object-Oriented Programming. PhD thesis, Warsaw University, Departement of Informatics (2010), http://www.mimuw.edu.pl/~jdk/mixiny.pdf

  36. Kuśmierek, J., Mulatero, M.: The Magda language implementation, http://sourceforge.net/projects/magdalanguage

  37. Kuśmierek, J.D.M., Bono, V.: Hygienic methods, Introducing HygJava. Journal of Object Technology, Special Issue: TOOLS EUROPE 6(9), 209–229 (2007)

    Google Scholar 

  38. Leavens, G., Cheon, Y.: Design by Contract with JML (2003)

    Google Scholar 

  39. Leroy, X.: The Objective Caml System Release 3.09. Institut National de Recherche en Informatique et en Automatique (2005)

    Google Scholar 

  40. Malayeri, D., Aldrich, J.: CZ: multiple inheritance without diamonds. In: Proc. OOPSLA 2009, pp. 21–40 (2009)

    Google Scholar 

  41. Meyer, B.: An Eiffel Tutorial. Technical Report TR-EI-66/TU, ISE (2001)

    Google Scholar 

  42. Mikhajlov, L., Sekerinski, E.: A Study of the Fragile Base Class Problem. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, pp. 355–382. Springer, Heidelberg (1998)

    Chapter  Google Scholar 

  43. Moon, D.A.: Object-oriented programming with Flavors. In: Proc. OOPSLA 1986, pp. 1–8. ACM Press (1986)

    Google Scholar 

  44. Nierstrasz, O., Ducasse, S., Reichhart, S., Schärli, N.: Adding Traits to (Statically Typed) Languages. Technical Report IAM-05-006, Institut für Informatik, University of Bern, Switzerland (2005)

    Google Scholar 

  45. Odersky, M., Altherr, P., Creme, V., Emir, B., Micheloud, S., Mihaylov, N., Schinz, M., Stenman, E., Zenger, M.: The Scala Language Specification, version 1.0. Technical report, Programming Methods Laboratory, EPFL (2006)

    Google Scholar 

  46. Schärli, N., Ducasse, S., Nierstrasz, O., Black, A.P.: Traits: Composable Units of Behaviour. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743, pp. 248–274. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  47. Smith, C., Drossopoulou, S.: Chai: Traits for Java-Like Languages. In: Gao, X.-X. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 453–478. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  48. Stroustrup, B.: The C++ programming language, 3rd edn. AT&T (1997)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2012 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Bono, V., Kuśmierek, J., Mulatero, M. (2012). Magda: A New Language for Modularity. In: Noble, J. (eds) ECOOP 2012 – Object-Oriented Programming. ECOOP 2012. Lecture Notes in Computer Science, vol 7313. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-31057-7_25

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-31057-7_25

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-31056-0

  • Online ISBN: 978-3-642-31057-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics