skip to main content
The programming language jigsaw: mixins, modularity and multiple inheritance
Publisher:
  • University of Utah
  • Computer Science Dept. 3160 Merrill Engineering Bldg. Salt Lake City, UT
  • United States
Order Number:UMI Order No. GAX92-14893
Bibliometrics
Skip Abstract Section
Abstract

This dissertation provides a framework for modularity in programming languages. In this framework, known as Jigsaw, inheritance is understood to be an essential linguistic mechanism for module manipulation.

In Jigsaw, the roles of classes in existing languages are "unbundled," by providing a suite of operators independently controlling such effects as combination, modification, encapsulation, name resolution, and sharing, all on the single notion of module.

All module operators are forms of inheritance. Thus, inheritance is not in conflict with modularity in this system, but is indeed its foundation.

This allows a previously unobtainable spectrum of features to be combined in a cohesive manner, including multiple inheritance, mixins, encapsulation and strong typing.

Jigsaw has a rigorous semantics, based upon a denotational model of inheritance.

Jigsaw provides a notion of modularity independent of a particular computational paradigm. Jigsaw can therefore be applied to a wide variety of languages, especially special-purpose languages where the effort of designing specific mechanisms for modularity is difficult to justify, but which could still benefit from such mechanisms.

The framework is used to derive an extension of Modula-3 that supports the new operations. An efficient implementation strategy is developed for this extension. The performance of this scheme is on a par with the methods employed by the highest performance object-oriented language processors currently available.

Cited By

  1. ACM
    Springer M, Niephaus F, Hirschfeld R and Masuhara H Matriona: class nesting with parameterization in Squeak/Smalltalk Proceedings of the 15th International Conference on Modularity, (118-129)
  2. Chugh R IsoLATE Proceedings of the 24th European Symposium on Programming on Programming Languages and Systems - Volume 9032, (257-282)
  3. Bessai J, Dudenhefner A, Düdder B, Martens M and Rehof J Combinatory Logic Synthesizer Part I of the Proceedings of the 6th International Symposium on Leveraging Applications of Formal Methods, Verification and Validation. Technologies for Mastering Change - Volume 8802, (26-40)
  4. ACM
    Bono V, Mensa E and Naddeo M Trait-oriented programming in Java 8 Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java platform: Virtual machines, Languages, and Tools, (181-186)
  5. ACM
    Bettini L and Damiani F Generic traits for the Java platform Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java platform: Virtual machines, Languages, and Tools, (5-16)
  6. Ressia J, Gîrba T, Nierstrasz O, Perin F and Renggli L (2014). Talents, Software—Practice & Experience, 44:4, (413-432), Online publication date: 1-Apr-2014.
  7. ACM
    Strickland T, Dimoulas C, Takikawa A and Felleisen M (2013). Contracts for First-Class Classes, ACM Transactions on Programming Languages and Systems, 35:3, (1-58), Online publication date: 1-Nov-2013.
  8. ACM
    Bettini L and Damiani F Pure trait-based programming on the Java platform Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools, (67-78)
  9. Bettini L, Damiani F, Schaefer I and Strocco F (2013). TraitRecordJ, Science of Computer Programming, 78:5, (521-541), Online publication date: 1-May-2013.
  10. ACM
    Barbosa F and Aguiar A Using roles to model crosscutting concerns Proceedings of the 12th annual international conference on Aspect-oriented software development, (97-108)
  11. ACM
    Servetto M and Zucca E A meta-circular language for active libraries Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation, (117-126)
  12. Bono V, Kuśmierek J and Mulatero M Magda Proceedings of the 26th European conference on Object-Oriented Programming, (560-588)
  13. Bettini L, Bono V and Venneri B (2018). Delegation by object composition, Science of Computer Programming, 76:11, (992-1014), Online publication date: 1-Nov-2011.
  14. ACM
    Corradi A, Servetto M and Zucca E DeepFJig Proceedings of the 9th International Conference on Principles and Practice of Programming in Java, (101-110)
  15. ACM
    Ressia J, Gîrba T, Nierstrasz O, Perin F and Renggli L Talents Proceedings of the International Workshop on Smalltalk Technologies, (1-9)
  16. ACM
    Servetto M and Zucca E (2010). MetaFJig, ACM SIGPLAN Notices, 45:10, (464-483), Online publication date: 17-Oct-2010.
  17. ACM
    Servetto M and Zucca E MetaFJig Proceedings of the ACM international conference on Object oriented programming systems languages and applications, (464-483)
  18. ACM
    Bettini L, Damiani F, Schaefer I and Strocco F A prototypical Java-like language with records and traits Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java, (129-138)
  19. ACM
    Aldrich J, Naden K and Tanter É Modular composition and state update in Plaid Proceedings of the 4th Workshop on MechAnisms for SPEcialization, Generalization and inHerItance, (1-4)
  20. Bracha G, von der Ahé P, Bykov V, Kashai Y, Maddox W and Miranda E Modules as objects in newspeak Proceedings of the 24th European conference on Object-oriented programming, (405-428)
  21. ACM
    Gil J and Maman I (2008). Whiteoak, ACM SIGPLAN Notices, 43:10, (73-90), Online publication date: 27-Oct-2008.
  22. ACM
    Gil J and Maman I Whiteoak Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications, (73-90)
  23. ACM
    Bettini L and Bono V Type safe dynamic object delegation in class-based languages Proceedings of the 6th international symposium on Principles and practice of programming in Java, (171-180)
  24. ACM
    Bettini L, Bono V and Naddeo M A trait based re-engineering technique for Java hierarchies Proceedings of the 6th international symposium on Principles and practice of programming in Java, (149-158)
  25. Bergel A, Ducasse S, Nierstrasz O and Wuyts R (2018). Stateful traits and their formalization, Computer Languages, Systems and Structures, 34:2-3, (83-108), Online publication date: 1-Jul-2008.
  26. ACM
    Liquori L and Spiwack A (2008). FeatherTrait, ACM Transactions on Programming Languages and Systems (TOPLAS), 30:2, (1-32), Online publication date: 1-Mar-2008.
  27. ACM
    Ducasse S, Wuyts R, Bergel A and Nierstrasz O (2007). User-changeable visibility, ACM SIGPLAN Notices, 42:10, (171-190), Online publication date: 21-Oct-2007.
  28. ACM
    Sasitorn J and Cartwright R (2007). Component nextgen, ACM SIGPLAN Notices, 42:10, (153-170), Online publication date: 21-Oct-2007.
  29. ACM
    Ducasse S, Wuyts R, Bergel A and Nierstrasz O User-changeable visibility Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems, languages and applications, (171-190)
  30. ACM
    Sasitorn J and Cartwright R Component nextgen Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems, languages and applications, (153-170)
  31. ACM
    Clarke D, Drossopoulou S, Noble J and Wrigstad T Tribe Proceedings of the 6th international conference on Aspect-oriented software development, (121-134)
  32. ACM
    Sasitorn J and Cartwright R Deriving components from genericity Proceedings of the 2007 ACM symposium on Applied computing, (1109-1116)
  33. ACM
    Bettini L, Capecchi S and Giachino E Featherweight wrap Java Proceedings of the 2007 ACM symposium on Applied computing, (1094-1100)
  34. Flatt M, Findler R and Felleisen M Scheme with classes, mixins, and traits Proceedings of the 4th Asian conference on Programming Languages and Systems, (270-289)
  35. ACM
    Hutchins D Eliminating distinctions of class Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, (1-20)
  36. ACM
    Hutchins D (2006). Eliminating distinctions of class, ACM SIGPLAN Notices, 41:10, (1-20), Online publication date: 16-Oct-2006.
  37. Ancona D, Lagorio G and Zucca E Flexible type-safe linking of components for java-like languages Proceedings of the 7th joint conference on Modular Programming Languages, (136-154)
  38. Bergel A, Ducasse S, Nierstrasz O and Wuyts R Stateful traits Proceedings of the 14th international conference on Advances in smalltalk, (66-90)
  39. Cremet V, Garillot F, Lenglet S and Odersky M A core calculus for scala type checking Proceedings of the 31st international conference on Mathematical Foundations of Computer Science, (1-23)
  40. ACM
    Ducasse S, Nierstrasz O, Schärli N, Wuyts R and Black A (2006). Traits, ACM Transactions on Programming Languages and Systems (TOPLAS), 28:2, (331-388), Online publication date: 1-Mar-2006.
  41. Cohen T and Gil J Shakeins Transactions on Aspect-Oriented Software Development II, (101-146)
  42. Zenger M (2018). KERIS: evolving software with extensible modules, Journal of Software Maintenance and Evolution: Research and Practice, 17:5, (333-362), Online publication date: 1-Sep-2005.
  43. Aldrich J Open modules Proceedings of the 19th European conference on Object-Oriented Programming, (144-168)
  44. Smith C and Drossopoulou S Chai Proceedings of the 19th European conference on Object-Oriented Programming, (453-478)
  45. Ancona D, Fagorzi S and Zucca E Mixin modules for dynamic rebinding Proceedings of the 1st international conference on Trustworthy global computing, (279-298)
  46. ACM
    Schärli N, Black A and Ducasse S Object-oriented encapsulation for dynamically typed languages Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (130-149)
  47. ACM
    Schärli N, Black A and Ducasse S (2004). Object-oriented encapsulation for dynamically typed languages, ACM SIGPLAN Notices, 39:10, (130-149), Online publication date: 1-Oct-2004.
  48. Rauschmayer A, Knapp A and Wirsing M Consistency Checking in an Infrastructure for Large-Scale Generative Programming Proceedings of the 19th IEEE international conference on Automated software engineering, (238-247)
  49. Black A and Scharli N Traits Proceedings of the 26th International Conference on Software Engineering, (676-686)
  50. ACM
    Allen E, Bannet J and Cartwright R (2003). A first-class approach to genericity, ACM SIGPLAN Notices, 38:11, (96-114), Online publication date: 26-Nov-2003.
  51. ACM
    Black A, Schärli N and Ducasse S (2003). Applying traits to the smalltalk collection classes, ACM SIGPLAN Notices, 38:11, (47-64), Online publication date: 26-Nov-2003.
  52. ACM
    Allen E, Bannet J and Cartwright R A first-class approach to genericity Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications, (96-114)
  53. ACM
    Black A, Schärli N and Ducasse S Applying traits to the smalltalk collection classes Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications, (47-64)
  54. Ancona D, Fagorzi S, Moggi E and Zucca E Mixin modules and computational effects Proceedings of the 30th international conference on Automata, languages and programming, (224-238)
  55. Nystrom N, Clarkson M and Myers A Polyglot Proceedings of the 12th international conference on Compiler construction, (138-152)
  56. ACM
    Fisler K and Krishnamurthi S Modular verification of collaboration-based software designs Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT international symposium on Foundations of software engineering, (152-163)
  57. ACM
    Fisler K and Krishnamurthi S (2019). Modular verification of collaboration-based software designs, ACM SIGSOFT Software Engineering Notes, 26:5, (152-163), Online publication date: 1-Sep-2001.
  58. ACM
    Findler R and Flatt M (2019). Modular object-oriented programming with units and mixins, ACM SIGPLAN Notices, 34:1, (94-104), Online publication date: 1-Jan-1999.
  59. ACM
    Findler R and Flatt M Modular object-oriented programming with units and mixins Proceedings of the third ACM SIGPLAN international conference on Functional programming, (94-104)
  60. Lee A and Zachary J (2019). Adding Support for Persistence to CLOS via Its Metaobject Protocol, Lisp and Symbolic Computation, 10:1, (39-60), Online publication date: 1-Jun-1997.
  61. ACM
    VanHilst M and Notkin D (1996). Using role components in implement collaboration-based designs, ACM SIGPLAN Notices, 31:10, (359-369), Online publication date: 1-Oct-1996.
  62. ACM
    Steyaert P, Lucas C, Mens K and D'Hondt T (1996). Reuse contracts, ACM SIGPLAN Notices, 31:10, (268-285), Online publication date: 1-Oct-1996.
  63. ACM
    VanHilst M and Notkin D Using role components in implement collaboration-based designs Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (359-369)
  64. ACM
    Steyaert P, Lucas C, Mens K and D'Hondt T Reuse contracts Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (268-285)
  65. Lee A and Zachary J (1995). Reflections on Metaprogramming, IEEE Transactions on Software Engineering, 21:11, (883-893), Online publication date: 1-Nov-1995.
  66. ACM
    Ossher H, Kaplan M, Harrison W, Katz A and Kruskal V (1995). Subject-oriented composition rules, ACM SIGPLAN Notices, 30:10, (235-250), Online publication date: 17-Oct-1995.
  67. ACM
    Ossher H, Kaplan M, Harrison W, Katz A and Kruskal V Subject-oriented composition rules Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications, (235-250)
  68. ACM
    Ossher H and Harrison W (2019). Combination of inheritance hierarchies, ACM SIGPLAN Notices, 27:10, (25-40), Online publication date: 31-Oct-1992.
  69. ACM
    Ossher H and Harrison W Combination of inheritance hierarchies Conference proceedings on Object-oriented programming systems, languages, and applications, (25-40)
Contributors
  • Sun Microsystems

Index Terms

  1. The programming language jigsaw: mixins, modularity and multiple inheritance

      Recommendations