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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Visual Basic .NET Language Reference. Microsoft Press (2002)
Delphi Language Guide. Borland Software Corporation (2004)
Allen, E., Bannet, J., Cartwright, R.: A first-class approach to genericity. In: Proc. OOPSLA 2003, pp. 96–114 (2003)
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)
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)
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)
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)
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)
Barron, D.W. (ed.): Pascal: The Language and its Implementation. John Wiley (1981)
Beazley, D., Van Rossum, G.: Python. Essential Reference. New Riders Publishing, Thousand Oaks (1999)
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)
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)
Bono, V., Kuśmierek, J.D.M.: Modularizing constructors. Journal of Object Technology, Special Issue: TOOLS EUROPE 6(9), 297–317 (2007)
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)
Bracha, G.: The Programming Language Jigsaw: Mixins, Modularity and Multiple Inheritance. PhD thesis, The University of Utah (1992)
Bracha, G., Ahe, P., Bykov, V., Kashai, Y., Mirand, E.: The Newspeak programming platform. Technical report, Cadence Design Systems (2008)
Bracha, G., Cook, W.: Mixin-based Inheritance. In: Proc. OOPSLA 1990, pp. 303–311. ACM Press (1990)
Cardone, R.J.: Language and Compiler Support for Mixin Programming. PhD thesis, The University of Texas at Austin (2002)
Cohen, T., Gil, J.: Better construction with factories. Journal of Object Technology 6(6), 109–129 (2007)
Cook, S.: OOPSLA 1987 panel P2 varietes on inheritance. In: OOPSLA 1987 Addendum to Proc., pp. 35–40. ACM Press (1987)
Craig, I.D.: Programming in Dylan. Springer-Verlag New York, Inc., NJ (1996)
Ducasse, S., Nierstrasz, O., Schärli, N., Wuyts, R., Black, A.: Traits: A mechanism for fine-grained reuse. TOPLAS 28(2), 331–388 (2006)
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)
Flatt, M., Krishnamurthi, S., Felleisen, M.: Classes and Mixins. In: Proc. POPL 1998, pp. 171–183. ACM (1998)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional (1995)
Gialluca, M.: Modular initialization protocol: a new implementation of the JavaMIP language. Tesi di Laurea Trieannale, Torino University, Dipartimento di Informatica (2010)
Gosling, J., Joy, B., Steele, G., Bracha, G.: The JavaTM Language Specification. Addison-Wesley, Sun Microsystems (2005)
Hejlsberg, A., Golde, P., Wiltamuth, S.: C\(\sharp\) Language Specification. Addison-Wesley (2003)
Igarashi, A., Pierce, B., Wadler, P.: Featherweight Java: A minimal core calculus for Java and GJ. TOPLAS 23(3), 396–450 (2001)
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)
Kamina, T., Tamai, T.: Flexible method combination based on mixin subtyping. Journal of Object Technology 4(10), 95–115 (2005)
Kamina, T., Tamai, T.: Selective method combination in mixin-based composition. In: Proc. SAC 2005, pp. 1269–1273 (2005)
Kochan, S.: Programming in Objective-C. Sams (2004)
Kreczmar, A., Salwicki, A., Warpechowski, M.: LOGLAN 1988—report on the programming language. Springer (1990)
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
Kuśmierek, J., Mulatero, M.: The Magda language implementation, http://sourceforge.net/projects/magdalanguage
Kuśmierek, J.D.M., Bono, V.: Hygienic methods, Introducing HygJava. Journal of Object Technology, Special Issue: TOOLS EUROPE 6(9), 209–229 (2007)
Leavens, G., Cheon, Y.: Design by Contract with JML (2003)
Leroy, X.: The Objective Caml System Release 3.09. Institut National de Recherche en Informatique et en Automatique (2005)
Malayeri, D., Aldrich, J.: CZ: multiple inheritance without diamonds. In: Proc. OOPSLA 2009, pp. 21–40 (2009)
Meyer, B.: An Eiffel Tutorial. Technical Report TR-EI-66/TU, ISE (2001)
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)
Moon, D.A.: Object-oriented programming with Flavors. In: Proc. OOPSLA 1986, pp. 1–8. ACM Press (1986)
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)
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)
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)
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)
Stroustrup, B.: The C++ programming language, 3rd edn. AT&T (1997)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)