Incremental Programming with Extensible Decisions

This paper appeared in the 1st International Conference on Aspect-Oriented Software Development (AOSD), April 22-26, 2002, Enschede, The Netherlands.

It is available as PS, PDF, DVI, or LATEX (with bibliography).

Slides from my presentation are also available as PS, PDF, DVI, or LATEX.

This paper formed the basis for my thesis proposal. The programming language described has been renamed from Fred to Socrates.


Languages that support incremental programming, that is, the construction of new program components by specifying how they differ from existing components, allow for clean separation of concerns. Object-oriented languages support incremental programming with inheritance and dynamic dispatch features: whenever a message is sent, a decision occurs, but the branches of the decision can be specified in separate components. Aspect-oriented programming and predicate dispatching both introduce language mechanisms that improve on this support by allowing an extensible decision to depend on information about the message send other than just the dynamic type of the receiver or arguments. A small prototype language is presented that unifies the best features of these mechanisms, providing uniform support for incremental programming whether concerns are crosscutting or not. The language is demonstrated with a running example, a small data structure library that is incrementally extended with optimizations and new operations.

BibTeX entry

  author = 	 {Doug Orleans},
  title = 	 {Incremental Programming With Extensible Decisions},
  booktitle = 	 {Proceedings of the 1st International Conference on Aspect-Oriented Software Development (AOSD)},
  year =	 2002,
  address =	 {Enschede, The Netherlands},
  month =	 {April}

Doug Orleans <>
Last modified: Tue Mar 9 01:26:32 EST 2004