Abstract
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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Abadi, M., Cardelli, L.: A Theory of Objects. Springer, Heidelberg (1996)
Achermann, F.: Forms, Agents and Channels: Defining Composition Abstraction with Style. PhD thesis, University of Bern, Institute of Computer Science and Applied Mathematics (January 2002)
Arnold, K., Gosling, J.: The Java Programming Language. Addison-Wesley, Reading (1996)
Bergel, A., Ducasse, S., Nierstrasz, O., Wuyts, R.: Classboxes: Controlling Visibility of Class Extensions. Journal of Computer Languages, Systems & Structures 31(3-4), 107–126 (2005)
Bird, R.: Introduction to Functional Programming using Haskell, 2nd edn. Prentice Hall, Englewood Cliffs (1998)
Dami, L.: A Lambda-Calculus for Dynamic Binding. Theoretical Computer Science 192, 201–231 (1998)
de Rauglaudre, D.: Camlp5 - Reference Manual. Institut National de Recherche en Informatique et Automatique, Rocquencourt (January 2008)
Flatt, M., Findler, R.B., Felleisen, M.: Scheme with Classes, Mixins, and Traits. In: Kobayashi, N. (ed.) APLAS 2006. LNCS, vol. 4279, pp. 270–289. Springer, Heidelberg (2006)
Ford, B.: Parsing Expression Grammars: A Recognition-Based Syntactic Foundation. In: Proceedings of POPL 2004, pp. 111–122. ACM Press, New York (2004)
Goldberg, A., Robson, D.: Smalltalk-80: The Language. Addison-Wesley, Reading (1989)
Hughes, J.: Why Functional Programming Matters. Computer Journal 32(2), 98–107 (1989)
Kelsey, R., Clinger, W., Rees, J. (eds.): Revised5 Report on the Algorithmic Language Scheme. ACM SIGPLAN Notices, 33(9) (September 1998)
Leijen, D., Meijer, E.: Parsec: Direct Style Monadic Parser Combinators for the Real World. Technical Report UU-CS-2001-27, Department of Computer Science, Universiteit Utrecht (2001)
Lumpe, M.: A Lambda Calculus With Forms. In: Gschwind, T., Aßmann, U., Nierstrasz, O. (eds.) SC 2005. LNCS, vol. 3628, pp. 73–88. Springer, Heidelberg (2005)
Lumpe, M.: GLoo: A Framework for Modeling and Reasoning About Component-Oriented Language Abstractions. In: Gorton, I., Heineman, G.T., Crnković, I., Schmidt, H.W., Stafford, J.A., Szyperski, C.A., Wallnau, K. (eds.) CBSE 2006. LNCS, vol. 4063, pp. 17–32. Springer, Heidelberg (2006)
Lumpe, M.: Application = Components + GLoo. Electronic Notes in Theoretical Computer Science 182, 123–138 (2007)
Lutz, M.: Programming Python, 3rd edn. O’Reilly (2006)
Microsoft Corporation. C# Version 3.0 Specification. Microsoft Corporation, Redmond, WA (May 2006)
Mitchell, J.C.: Concepts in Programming Languages. Cambridge University Press, Cambridge (2003)
Nystrom, N., Clarkson, M.R., Myers, A.C.: Polyglot: An Extensible Compiler Framework for Java. In: Hedin, G. (ed.) CC 2003. LNCS, vol. 2622, pp. 138–152. Springer, Heidelberg (2003)
Ossher, H., Harrison, W., Budinsky, F., Simmonds, I.: Subject-Oriented Programming: Supporting Decentralized Development of Objects. In: Proceedings of the 7th IBM Conference on Object-Oriented Technology (July 1994)
Ousterhout, J.K.: Tcl and the Tk Toolkit. Addison-Wesley, Reading (1994)
PLT Scheme (2006), http://www.plt-scheme.org
Schärli, N., Ducasse, S., Nierstrasz, O., Black, A.: Traits: Composable Units of Behavior. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743, pp. 248–274. Springer, Heidelberg (2003)
Steele, G.L.: Growing a Language. Higher-Order and Symbolic Computation 12, 221–236 (1999)
Ungar, D., Smith, R.B.: SELF: The Power of Simplicity. In: Proceedings OOPSLA 1987. ACM SIGPLAN Notices, vol. 22, pp. 227–242 (December 1987)
Wadler, P.: Monads and composable continuations. List and Symbolic Computation 7, 39–56 (1993)
Wall, L., Christiansen, T., Orwant, J.: Programming Perl, 3rd edn. O’Reilly & Associates (July 2000)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2008 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Lumpe, M. (2008). Growing a Language: The GLoo Perspective. In: Pautasso, C., Tanter, É. (eds) Software Composition. SC 2008. Lecture Notes in Computer Science, vol 4954. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-78789-1_1
Download citation
DOI: https://doi.org/10.1007/978-3-540-78789-1_1
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-78788-4
Online ISBN: 978-3-540-78789-1
eBook Packages: Computer ScienceComputer Science (R0)