Growing a Language: The GLoo Perspective [chapter]

Markus Lumpe
Software Composition  
The design of programming languages is, in general, geared towards accumulation rather than composition of features. However, by adding an everincreasing number of built-in abstractions, any programming language is eventually at risk to reach a critical mass at which it may become increasingly difficult for designers to maintain and for developers to use an evolving language appropriately. To tackle this language design paradox, we have developed GLOO, a small open-ended dynamic language, whose
more » ... mic language, whose design philosophy aims at a unified approach in which program and language evolution result directly from the definition of extensible domain sub-languages. Surprisingly, these extensible domain sub-languages not only provide a framework to capture domain expertise, but also give rise to a powerful compositional model for language extension. To demonstrate the effectiveness of this approach, we develop the Language of Namespaces and Traits in this paper. We define this extensible domain sub-language as an aggregate of various forms of object-oriented language support. Using the Language of Namespaces and Traits as example, we show that GLOO's extension model plays a crucial role in achieving a flexible compositional approach for the design of readily-available and extensible programming abstractions.
doi:10.1007/978-3-540-78789-1_1 dblp:conf/soco/Lumpe08 fatcat:rqii7rom25aghiaczl3wdcwvvy