Parametric polymorphism for software component architectures

Parametric polymorphism has become a common feature of mainstream programming languages, but software component architectures have lagged behind and do not support it. We examine the problem of providing parametric polymorphism with components combined from different programming languages. We have investigated how to resolve different binding times and parametrization semantics in a range of representative languages and have identified a common ground that can be suitably mapped to different language bindings. We present a generic component architecture extension that provides support for parameterized components and that can be easily adapted to work on top of various software component architectures in use today (e.g., corba, dcom, jni). We have implemented and tested this architecture on top of corba. We also present Generic Interface Definition Language (gidl), an extension to corba-idl supporting generic types and we describe language bindings for C++, Java and Aldor. We explain our implementation of gidl, consisting of a gidl to idl compiler and tools for generating linkage code under the language bindings. We demonstrate how this architecture can be used to access C++'s stl and Aldor's BasicMath libraries in a multi-language environment and discuss our mappings in the context of automatic library interface generation.

[1]  Peter Claussen Theories of programming languages , 2000, SOEN.

[2]  David Macqueen An Implementation of SML Modules , 1988 .

[3]  Stephen M. Watt,et al.  Axiom library compiler user guide , 1994 .

[4]  Mirko Viroli,et al.  Parametric polymorphism in Java: an approach to translation based on reflective features , 2000, OOPSLA '00.

[5]  David R. Musser,et al.  STL tutorial and reference guide, second edition: C++ programming with the standard template library , 2001 .

[6]  Mark P. Jones A system of constructor classes: overloading and implicit higher-order polymorphism , 1993, FPCA '93.

[7]  Stephen M. Watt,et al.  Distributed Models of Thread Level Speculation , 2005, PDPTA.

[8]  Martin Odersky,et al.  Making the future safe for the past: adding genericity to the Java programming language , 1998, OOPSLA '98.

[9]  J. Girard Une Extension De ĽInterpretation De Gödel a ĽAnalyse, Et Son Application a ĽElimination Des Coupures Dans ĽAnalyse Et La Theorie Des Types , 1971 .

[10]  John C. Mitchell,et al.  F-bounded polymorphism for object-oriented programming , 1989, FPCA.

[11]  Alan J. Demers,et al.  Data types are values , 1985, ACM Trans. Program. Lang. Syst..

[12]  David B. MacQueen An implementation of standard ML modules , 1988, LISP and Functional Programming.

[13]  Robin Milner,et al.  Principal type-schemes for functional programs , 1982, POPL '82.

[14]  John C. Reynolds,et al.  Towards a theory of type structure , 1974, Symposium on Programming.

[15]  Greg Nelson,et al.  Systems programming in modula-3 , 1991 .

[16]  Luca Cardelli,et al.  Basic Polymorphic Typechecking , 1987, Sci. Comput. Program..

[17]  Martin Odersky,et al.  Pizza into Java: translating theory into practice , 1997, POPL '97.

[18]  Stephen M. Watt,et al.  Domains and expressions: an interface between two approaches to computer algebra , 2005, ISSAC.

[19]  Riccardo Pucella,et al.  Phantom types and subtyping , 2002, Journal of Functional Programming.

[20]  Craig Schaffert,et al.  CLU Reference Manual , 1984, Lecture Notes in Computer Science.

[21]  Nancy McCracken,et al.  The Typechecking of Programs with Implicit Type Structure , 1984, Semantics of Data Types.

[22]  Robert Cartwright,et al.  Compatible genericity with run-time types for the Java programming language , 1998, OOPSLA '98.

[23]  Stephen M. Watt,et al.  A first report on the A# compiler , 1994, ISSAC '94.

[24]  Andrew Kennedy,et al.  Design and implementation of generics for the .NET Common language runtime , 2001, PLDI '01.

[25]  Dachuan Yu,et al.  Formalization of generics for the .NET common language runtime , 2004, POPL.

[26]  Ralph Johnson,et al.  Type object , 1997 .

[27]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 2001, TOPL.

[28]  David R. Musser,et al.  STL tutorial and reference guide , 2001 .

[29]  J. Y. Girard,et al.  Interpretation fonctionelle et elimination des coupures dans l'aritmetique d'ordre superieur , 1972 .

[30]  David R. Musser,et al.  STL tutorial and reference guide - C++ programming with the standard template library , 1996, Addison-Wesley professional computing series.

[31]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..