JUCS - Journal of Universal Computer Science 11(10): 1613-1644, doi: 10.3217/jucs-011-10-1613
Analyzing Module Diversity
expand article infoAlexandre Bergel, Stéphane Ducasse§, Oscar Nierstrasz|
‡ Software Composition Group, University of Bern, Switzerland§ LISTIC - Language and Software Evolution Group, University of Savoie, France| Software Composition Group, University of Bern, Bern, Switzerland
Open Access
Abstract
Each object­oriented programming language proposes various grouping mechanisms to bundle interacting classes (i.e., packages, modules, selector namespaces, etc). To understand this diversity and to compare the different approaches, a common foundation is needed. In this paper we present a simple module calculus consisting of a small set of operators over environments and modules. Using these operators, we are then able to specify a set of module combinators that capture the semantics of Java packages, C# namespaces, Ruby modules, selector namespaces, gbeta classes, classboxes, MZScheme units, and MixJuice modules. We develop a simple taxonomy of module systems, and show how particular combinations of module operators help us to draw sharp distinctions between classes of module systems that share similar characteristics.
Keywords
package, module, selector namespaces, classboxes, virtual classes, Small-talk, Java, Ruby, C#