Unifying Aspect-Oriented and Object-Oriented Language Design
I will present work, joint with my PhD student Hridesh Rajan, on the design, implementation, and early evaluation of a programming language construct that unifies aspects in the style of AspectJ and traditional object-oriented classes. The work shows that we can unify aspect-oriented and object-oriented programming without significantly compromising the expressiveness of current aspect languages; that a unified design improves the conceptual integrity of the programming model; and that it significantly improves the compositionality of modules that use aspect-oriented mechanisms. The new approach expands the program design space from the two-layered model of AspectJ-like languages to include hierarchical structures. In particular, it enables a modular and layered separation of integration concerns. To support these claims, I will describe the design and implementation of Eos-U, an AspectJ-like language based on C# that supports a unified class and aspect construct as the basic unit of modularity. The underpinnings of Eos include support for aspect instantiation under program control, instance-level advising, advising as a general alternative to object-oriented method invocation and overriding, and the provision of a separate join-point-method binding construct.