A growable language

Guy Lewis Steele · 2006

I gave a talk at 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 growth of a user community. Moreover, language growth may be more effective if growing user community can participate.This raises an interesting technical question: how might explicit goal of planning for growth over time affect design of a programming language?.The Fortress programming language project at Sun Microsystems Laboratories has three principal design goals: to promote 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 language to grow and to be extended by 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 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 ion, 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 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 libraries in order to present to programmer a scientific application language that is formula- and array-oriented.

Read the paper · More papers on PaperTik