Invited Speaker: Dr. Guy L. Steele Jr.
Wednesday, Oct 25, from 8:30 to 10:00
A Growable Language
I gave a talk at the 1998 OOPSLA called "Growing a Language" (sometimes remembered as "the words-of-one-syllable talk") in which I suggested that programming languages have become such complex artifacts that they cannot be designed all at once; rather, they must grow over time. Therefore, programming language designers should plan for such growth, along with the growth of a user community. Moreover, language growth may be more effective if the growing user community can participate.
This raises an interesting technical question: how might the explicit goal of planning for growth over time affect the design of a programming language?
The Fortress programming language project at Sun Microsystems Laboratories has three principal design goals: to promote the expression and use of multithreaded parallel algorithms; to support a large variety of syntactic notations, including (as far as possible) standard mathematical notation as used to specify scientific computations; and to allow the language to grow and to be extended by the user community. (This work has been funded in part by DARPA through their program for High Productivity Computing Systems.)
The Fortress design team has followed a key strategic design principle: whenever we consider adding a feature to the language, we ask whether it might better be provided by a library routine, written in Fortress source code, so that it can be modified, extended, or replaced by others. To this end, we have incorporated rather elaborate mechanisms for encapsulation and abstraction, including composable components and a parameterized polymorphic object-oriented type system. The result is that we have a fairly complicated language for library writers that enables them to write libraries that present a relatively simple set of interfaces to the application programmer. Thus Fortress is as much a framework for language developers as it is a language for coding scientific applications. We find ourselves using objects and traits extensively within the libraries in order to present to the programmer a scientific application language that is formula- and array-oriented.
Biography: Sun Fellow Guy Steele is a researcher for Sun Microsystems Laboratories, working on the Programming Language Research project. His research interests include Algorithms, Compilation, Distributed Systems, High Performance Computing, Java, Lisp, Scheme, Object Oriented Programming, Operating Systems, Programming Languages, Software, and Supercomputer design.