Content area
In this dissertation, I investigate the notion of component-oriented programming languages. Simply put, a programming language is component-oriented if (and only if) it facilitates software development following the paradigm of component-oriented programming. Although this definition might not seem well-founded at first, it is exactly in this sense that we commonly speak of structured, modular, or object-oriented programming languages as facilitating software development following their respective paradigms.
The central question I address here is how component-oriented programming languages differ from programming languages for those earlier paradigms. This obviously requires an explanation of component-oriented programming as a software development paradigm as well. Given the “object hype” of the early 1990s, it should come as no surprise that even a paradigm that seems “revolutionary” at first actually leads to mostly “evolutionary” improvements over earlier programming languages. While these improvements derive from the ideas of component-oriented programming, their applicability is not restricted to that setting. In this respect, they are similar to “classic” advances in programming languages such as the proscription against
The main result I present in this dissertation is a framework of design decisions for component-oriented programming languages. This framework can be applied either to revisions of existing languages or to the design of new ones. I focus on the development of this framework, particularly on the development of the two novel language mechanisms it is based on: stand-alone messages and generic message forwarding. Using the example of Lagoona, I illustrate how the framework can be applied to the design and implementation of an actual programming language. Finally, I evaluate the framework (and thus Lagoona) in terms of new solutions to—sometimes long-standing—design and implementation problems drawn from both object-oriented and component-oriented programming.