GLoo: An Open-Ended Composition Language

[Design Rational] [Specifications] [Publications] [Downloads]

Design Rational

A successful component-based software development approach not only needs to provide abstractions to represent different component models and composition techniques, but it has to provide also a systematic method for constructing large software systems. Unfortunately, rather then high-level plugging, most existing component frameworks offer, in general, only low-level wiring techniques to combine components. We need, however, higher-level, scalable, and domain-specific compositional mechanisms that reflect the characteristics and constraints of the components being composed. The ability to define these mechanisms will provide us with more effective means to do both to reason about the properties of composition and to enhance program comprehension by reducing the exposure of the underlying wiring mechanisms to the component engineer.

The design of GLoo targets a problem-oriented software development approach that provides a paradigm for both programming in-the-small and programming in-the-large. More presicely, GLoo aims at a higher-level and scalable programming approach to encapsulate domain expertice that provides support for the definition of domain-specific abstractions enabling the instantiation, coordination, extension, and composition of components. These domain-specific abstractions can be defined in GLoo, Java, or both.

The core of GLoo is based on the lF-calculus, which a calculus that combines the concepts of dynamic binding, explicit namespaces, and incremental refinement in one unifying framework. More precisely, the lF-calculus is a substitution-free variant of the l-calculus in which variables are replaced by forms and parameter passing is modeled by means of explicit contexts. Forms are first-class namespaces that provide a high-level and language-neutral abstraction to represent components, component interfaces, and their composition. Explicit contexts, on the other hand, serve as a syntactic representation that mimic l-calculus substitutions, that is, they provide the means for a fine-grained and keyword-based parameter passing mechanism.

GLoo specification units add support for basic data types, an import facility, term sequences, a delayed evaluation of terms, computable binders, and a Java gateway mechanism to the core language. These features serve to enrich the versatility of values, but do not change the underlying computational model of the lF-calculus.

GLoo Examples Specifications

An Applicative-order Fixed-Point Operator
A Simple Object Model
Defining Console Output
Defining Operator Semantics
Traits Meta Level
Language of Traits
Defining Trait TIntGetter
OO Language Extensions



Last modified: 2006-08-16 — Markus Lumpe