We are in the midst of a paradigm shift toward component-oriented software development, and significant progress has been made in understanding and harnessing this new paradigm. Oddly enough, however, the new paradigm does not currently extend to the level at which components themselves are constructed. While we have composition architectures and languages that describe how systems are put together out of atomic program parts, the parts themselves are still constructed on the basis of a previous paradigm: object-oriented programming. We argue that this mismatch impedes the progress of compositional software design: many of the assumptions that underlie object-oriented languages simply do not apply in the open and dynamic contexts of component software environments. What, then, would a programming language that supported component-oriented programming at the smallest granularity look like? Lag oona, our project to develop such a language, tries to answer this question. This paper motivates the key concepts behind Lag oona and briefly describes their realization (using Lag oona itself as the implementation language) in the context of Microsoft’s .NET environment.
Read full abstract