Live Webcast 15th Annual Charm++ Workshop

Agents: An Abstraction Mechanism that Labels and Taxonomizes the Objects it Encapsulates
PPL Technical Report 1997
Publication Type: Paper
Repository URL:
In object-oriented languages, an abstraction often involves a group of objects acting as a single entity. The programmer often has a mental vocabulary by which to label the objects: for example, in a particular LR(0) automaton, one object might represent the state ``P ::= R . S''. In a particular instance of a binary-tree, one object might represent the data item ``15''. In general, each object in an abstraction can be mentally labeled, by the programmer, according to some statement of its purpose. The programmer's vocabulary to taxonomize and label the objects constituting an abstraction may be quite sophisticated and detailed. However, that vocabulary is only in the programmer's mind, it does not exist at the language level. The runtime system has no means to tell two instances of class binary-tree-node apart --- it can't even distinguish the nodes of one tree from the nodes of another without sophisticated analysis. Though object-oriented languages make it possible to construct data structures with many different parts, they do not create a language-level vocabulary by which to refer to the different parts of the data structure.

There are several problems in the field of object-oriented parallel processing that have hampered programmers for years, and for which solutions have been elusive. We argue that the lack of solutions to these problems stems from the absence of a vocabulary with which to express those solutions. In particular, the inability to refer to objects by name, and the lack of a vocabulary to distinguish objects from each other, makes it difficult to even describe what is desired from a complex algorithm. When the runtime system can't identify which object is which, it becomes becomes impossible to express such ideas as locality, or interconnectivity, or grouping. Clearly, this is a serious problem for parallel programmers. We have designed a new encapsulation mechanism for parallel processing, the agent declaration. This mechanism makes it possible to create an abstraction whose subcomponents are labeled and taxonomized. Having done so, we straightforwardly address some of the difficulties that have been facing object-oriented parallel programmers for years. The purpose of this research is to explore the consequences of having a vocabulary by which to distinguish objects, and to experiment with powerful language-level constructs that were previously inexpressible.

Joshua M. Yelon, "Agents: an Abstraction Mechanism that Labels and Taxonomizes the Objects it Encapsulates", Parallel Programming Laboratory, Department of Computer Science, University of Illinois at Urbana-Champaign, 1997.
Research Areas