Modularly extensible languages, a term describing programming languages that can be extended with new features by adding new modules to a host language. The modules can be developed independently by separate feature designers with (possibly) conflicting interests and then be imported into the host language afterwards.
The main benefits of modularly extensible languages include:
- code-copying is kept at a minimum
- modules can be replaced or added without effecting the remaining modules
- focus can remain on developing or improving single modules as new research areas come into focus
- a programmer (language designer) is able to use only the parts of the module library to obtain a language containing the desired properties
- several domain-specific attributes can be incorporated into the same host language modularly
Examples of modularly extensible languages:
-
The Intentional Programming (IP) system [1]:
A start host language is extended modularly with several language features (which are also called intentions to reflect the fact that they represent the programmer's intentions). This enables programmers relatively easy to create a new language with the desired features, given a sufficiently broad library of intentions (modules).
-
C++ template libraries:
An example of programmers' need to extend their language can be seen in the C++ template libraries
-
Perl:
"Perl is designed to be modularly extensible" (cite from Why Perl ?, http://pune.pm.org/whyperl.htm)
-
xADL 2.0:
The language xADL 2.0, which is an modularly extensible Architecture Defining Language (ADL) represented as XML (http://www.isr.uci.edu/projects/xarchuci/publications.html)
-
[1]
-
E. Van Wyk, O. de Moor, G. Sittampalam, I. Sanabria Piretti, K. Backhouse, P. Kwiatkowski,
Intentional Programming : a host of language features,
Technical Report PRG-RR-01-21, Computing Laboratory, University of Oxford, 2001
Back
to the Glossary
of Generative Programming Terms
Back
to the course home page
Contributor: Naja Rosenkjær Villien
Last modification: 30/1 2006