Markus Lumpe. Growing a Language: The GLooPerspective. In Cesare Pautasso, Éric Tanter, editors, Software Composition, 7th International Symposium, SC 2008, Budapest, Hungary, March 29-30, 2008. Proceedings. Volume 4954 of Lecture Notes in Computer Science, pages 1-19, Springer, 2008.
The design of programming languages is, in general, geared towards accumulation rather than composition of features. However, by adding an ever-increasing 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 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.