Skip Navigation

Colloquium Details

The Development of the Emerald Programming Language

Author:Andrew Black Portland State University
Date:June 07, 2007
Time:15:30
Location:220 Deschutes
Host:Yannis Smaragdakis

Abstract

[This is a talk to be given at the History of Programming Languages (HOPL) conference. HOPL takes place every 15 years, so this is a unique opportunity to hear about a historic account of the design and development of an influential programming language.]

Emerald was a research programming language developed at the University of Washington from 1983 to 1987. Emerald was object-based, in the sense that it provided objects but not classes or inheritance; its distinguishing feature was support for distribution, including mobile objects and processes. Along the way, Emerald also made significant strides in type theory, including implementations of what have since become known as F-bounded polymorphism and generic data structures.

Emerald's type system thoroughly separated an object's implementation from its type. Letting the compiler choose an implementation was only possible if this did not change the semantics, so we were forced to define the semantics abstractly. Thus, the semantics of parameter passing could not depend on the relative locations of the invoking and invoked objects. Emerald did include features to control the location of objects: to fix and unfix an object at a specific location, to move an object to a remote location with a invocation, and to cause an object to "visit" a remote location for the duration of an invocation. Using these features did not change the semantics of a program, but might dramatically change its performance.

Although Emerald's support for remote invocation has been widely reproduced, remote invocation has rarely been implemented with such semantic transparency. Implementations of mobile objects are still rare, and languages that incorporate mobility into their semantic model rarer still.

Biography

Andrew Black was awarded his doctorate in programming language design by the University of Oxford, after writing his thesis under Tony Hoare. He then went on to work in operating systems and distributed systems for more than twenty years, bringing the perspective of a language designer to those disciplines. One early project, combining language design with distributed systems engineering, is the subject of today's talk.

In addition to working in industry and at most of the major research labs, Black has held faculty positions at the University of Washington, Harvard (as an adjunct), OGI and OHSU. He is now a professor at PSU, where his recent research has focussed on programming environments as well as languages. He is an organizer of a workshop on extensible program representations for IDEs (EPRIDE) to be held in conjunction with ECOOP this July.