Welcome to the Adaptive Programming Seminar (formerly known as the Demeter seminar): We will meet this quarter on Monday afternoons from 3-5 in 107 Cullinane Hall. ===================== Please take a look at: http://www.ccs.neu.edu/research/demeter We have now Adaptive Perl! ===================== May 20: We will cover three topics as time permits: Michael Werner: Itineraries An itinerary is somewhat similar to a propagation pattern but without the automatic customization. Itineraries are suitable for describing navigation-like behavior in richly interconnected systems such as shared object-oriented databases. For a draft of the paper on itineraries, see ~werner/itinerary/itinerary.ps ========================================= Karl Lieberherr: Aspect-Oriented Programming: We are in discussions with Xerox PARC to find a definition of what is common to Open Implementation, Adaptive Programming with traversals, Adaptive Programming with grammars, Synchronization patterns etc. I will give a summary. See also: http://www.ccs.neu.edu/research/demeter/adaptive-patterns/AOP/ ================================================== Doug Orleans and Salil Pradhan: Marrying Java and Adaptive Programming =================================================== May 27: Salil Pradhan: Compiling Adaptive Programs Two approaches to compiling adaptive programs have been proposed so far: The TOPLAS '95 and ESOP '96 approaches. This talk proposes a third approach which creates shorter, but slightly slower programs. The compilation algorithm is very efficient and seems to match well with compiling context objects. TOPLAS '95: ftp://ftp.ccs.neu.edu/pub/people/lieber/PXL94-adaptive-soft.ps ESOP '96: ftp://ftp.ccs.neu.edu/pub/people/lieber/PPL-comp-adaptive.ps (journal version) (joint work with Jens Palsberg, Boaz Patt-Shamir and Karl Lieberherr) ============================= May 13: Today we will have an informal discussion on Java and adaptive programming. ------------ May 6: Linda Seiter: Evolution of Object Behavior using Context Relations An approach to help both design patterns and adaptive programming. See URL: ftp://ftp.ccs.neu.edu/pub/people/lieber/context.ps (joint work with Jens Palsberg (MIT) and Karl Lieberherr) ABSTRACT: A collection of design patterns was described by Gamma, Helm, Johnson, and Vlissides in 1994. Recognizing that designs change, each pattern ensures that a certain system aspect can vary over time, for example, the operations that can be applied to an object, or the algorithm of a method. The patterns are described by constructs such as the inheritance and reference relations, attempting to emulate more dynamic relationships. As a result, the design patterns demonstrate how awkward it is to program natural concepts of behavior evolution when using a traditional object-oriented language. In this paper we present a new relation between classes: the context relation. It directly supports behavior evolution, and it is meaningful at the analysis, design, and implementation level. At the design level, we picture a context relation as a new form of arrow between classes, and at the implementation level, we use a small extension of C++. The basic idea is that if class C is context related to a base class B, then B-objects can get their functionality dynamically altered by C-objects. Our language construct for doing this is a generalization of the method update in Abadi and Cardelli's imperative object calculus. A C-object may be explicitly attached to a B-object, or it may be implicitly attached to a group of B-objects for the duration of a method invocation. We demonstrate how the context relation can be used to easily program the Adapter, Bridge, Chain-of-Responsibility, Decorator, Iterator, Observer, State, Strategy, and Visitor patterns. Our claim is that by adding context relations to the design and implementation vocabulary, many known design patterns become unnecessary. {\bf Keywords:} Reusable design, a new class relation, behavior composition. If there is time left, Doug Orleans and Karl Lieberherr will outline how to integrate context objects with Java. For a discussion, see: http://www.ccs.neu.edu/home/lieber/Demeter-and-Java.html ------ April 29: Crista Lopes from Xerox PARC will be visiting us and she will talk about the design of a language for distributed applications that separates different concerns of distribution. This talk outlines the design and implementation of a language for a representative class of distributed systems. This language addresses the issues that are specific to distribution, such as synchronization, parameter passing semantics and failure handling, without getting in the way of the program that implements the basic functionality of the applications. The different concerns of distributed applications are separated at the programming language level, and yet they refer to each other in a consistent way, making it possible to assemble a coherent program from different pieces of code. ----- Planned talks for future meetings: Linda Seiter: Evolution of Object Behavior using Context Relations An approach to help both design patterns and adaptive programming. See URL: ftp://ftp.ccs.neu.edu/pub/people/lieber/context.ps (joint work with Jens Palsberg and Karl Lieberherr) =================================================== Salil Pradhan: Compiling Adaptive Programs Two approaches to compiling adaptive programs have been proposed so far: The TOPLAS '95 and ESOP '96 approaches. This talk proposes a third approach which creates shorter, but slightly slower programs. The compilation algorithm is very efficient and seems to match well with compiling context objects. TOPLAS '95: ftp://ftp.ccs.neu.edu/pub/people/lieber/PXL94-adaptive-soft.ps ESOP '96: ftp://ftp.ccs.neu.edu/pub/people/lieber/PPL-comp-adaptive.ps (journal version) (joint work with Jens Palsberg, Boaz Patt-Shamir and Karl Lieberherr) =================================================== Doug Orleans and Salil Pradhan: Marrying Java and Adaptive Programming =================================================== Michael Werner: Itineraries An itinerary is somewhat similar to a propagation pattern but without the automatic customization. Itineraries are suitable for describing navigation-like behavior in richly interconnected systems such as shared object-oriented databases. -- Karl Lieberherr