Paradigm(s) | parallel |
---|---|
Appeared in | 1985 |
Designed by | Cliff Lasser and Steve Omohundro |
Developer | Thinking Machines Corporation |
Influenced by | Lisp |
OS | Connection Machine |
The *Lisp (aka StarLisp) programming language was conceived of in 1985 by Cliff Lasser and Steve Omohundro (employees of the Thinking Machines Corporation) as a way of providing an efficient yet high-level language for programming the nascent Connection Machine.
Contents |
At the time the Connection Machine was being designed and built, the only language being actively developed for it was an Assembly-level language known as PARIS (Parallel Instruction Set). It became evident that a better way to program the machine was needed and needed quickly. Waiting for the completion of CM Lisp, or "Connection Machine Lisp" (an implementation of the very high-level programming language Lisp with parallel programming extensions) was not an option. CM Lisp had been proposed by Danny Hillis, and development was expected to continue for several more years.
A *Lisp interpreter was initially developed. It quickly became apparent that a *Lisp compiler, translating *Lisp into Lisp and PARIS, would be needed to attain the gigaflop speeds that were theoretically attainable by a Connection Machine. The *Lisp compiler was written by Jeff Mincy and was first released in 1986. (An application achieving more than two gigaflops, a helicopter wake simulator, was developed by Alan Egolf, then an employee of United Technologies, and J. P. Massar, a Thinking Machines employee, in 1987; see "Helicopter Free Wake Implementation On Advanced Computer Architectures", International Conference on Basic Rotorcraft Research, 1988)
A *Lisp Simulator, an emulator meant to run *Lisp code on standard, non-parallel machines, was developed at the same time by JP Massar. This simulator still exists,[1] and was ported to ANSI Common Lisp in 2001. An older version written in the original Common Lisp, exists in the Carnegie Mellon University AI Archives.[2]
Later versions of *Lisp, involving significant upgrades to its functionality and performance, were worked on by Cliff Lasser, Jeff Mincy and J. P. Massar through 1989. *Lisp was implemented on the Thinking Machines CM5 circa 1990-1991 by J. P. Massar and Mario Bourgoin.
StarLisp was essentially a set of macros written on top of Common Lisp, and therefore had the full power of Common Lisp behind it. To use a Connection Machine, one needed a host or 'front-end'. To use *Lisp, that front-end had to run Common Lisp. Symbolics' machines using Genera OS and Sun Microsystems workstations running Lucid Inc.'s Lucid Common Lisp were both used for *Lisp.
StarLisp operated on PVARS (Parallel Variables). PVARS represented Connection Machine memory, and were essentially vectors: one element per CM processor (or virtual processor).
StarLisp consisted of standard operations on PVARS, like vector addition and multiplication, along with communications primitives that essentially reordered the elements of a PVAR using the CM's communications hardware to optimally route the data.