*Lisp (o StarLisp ) es un lenguaje de programación , un dialecto del lenguaje Lisp . [1] Fue concebido en 1985 por dos empleados de Thinking Machines Corporation , Cliff Lasser y Steve Omohundro , como una forma de proporcionar un lenguaje eficiente pero de alto nivel para programar la naciente Connection Machine (CM).
En el momento en que se diseñó y construyó Connection Machine, el único lenguaje que se estaba desarrollando activamente para ella era un lenguaje de nivel ensamblador llamado PARIS ( Parallel Instruction Set ). Se hizo evidente que se necesitaba una mejor forma de programar la máquina, y rápidamente. Esperar a que se completara Connection Machine Lisp (CM Lisp), una implementación del lenguaje de programación de muy alto nivel Lisp con extensiones de computación paralela ) no era una opción. CM Lisp había sido propuesto por Danny Hillis y se esperaba que el desarrollo continuara durante varios años más.
Inicialmente se desarrolló un intérprete de *Lisp. Se hizo evidente rápidamente que se necesitaría un compilador de *Lisp , que tradujera *Lisp a Lisp y PARIS, para alcanzar la velocidad de gigaFLOPS que se podía alcanzar en teoría con una máquina de conexión. El compilador de *Lisp fue escrito por Jeff Mincy y se lanzó por primera vez en 1986. En 1987, Alan Egolf, entonces empleado de United Technologies , y JP Massar, empleado de Thinking Machines, desarrollaron una aplicación que lograba más de dos gigaFLOPS, un simulador de estela de helicóptero. [2]
Al mismo tiempo, JP Massar desarrolló un simulador de *Lisp, un emulador pensado para ejecutar código *Lisp en máquinas estándar no paralelas. Este simulador todavía existe [3] y fue adaptado a Common Lisp (CL) del Instituto Nacional de Estándares Estadounidenses (ANSI) en 2001. Existe una versión anterior escrita en el CL original en el repositorio de inteligencia artificial (IA) de la Universidad Carnegie Mellon (CMU) . [4]
Cliff Lasser, Jeff Mincy y JP Massar trabajaron en versiones posteriores de *Lisp, que implicaron mejoras significativas en sus funciones y rendimiento, hasta 1989. *Lisp fue implementado en Thinking Machines CM5 alrededor de 1990-1991 por JP Massar y Mario Bourgoin.
StarLisp se escribió en Common Lisp (CL) y, por lo tanto, tenía todo el poder de CL. Para usar una Connection Machine, se necesitaba un host o un front-end . Para usar *Lisp, ese front-end tenía que ejecutar CL. Las máquinas de Symbolics que usaban Genera y las estaciones de trabajo de Sun Microsystems que ejecutaban Lucid Common Lisp de Lucid Inc. se usaban para operar *Lisp.
StarLisp operaba con variables paralelas ( PVARS ) , que representaban la memoria de la máquina de conexión y eran esencialmente vectores : un elemento por procesador CM (o procesador virtual).
StarLisp consistía en operaciones estándar en PVAR, como suma y multiplicación de vectores, junto con primitivas de comunicación que esencialmente reordenaban los elementos de un PVAR utilizando el hardware de comunicación del CM para enrutar los datos de manera óptima.