Введение
Язык программирования *Lisp (или StarLisp) — это язык программирования, диалект языка Lisp. Он был разработан в 1985 году двумя сотрудниками Thinking Machines Corporation, Клиффом Лассером и Стивом Омохундро, как средство обеспечения эффективного, но высокоуровневого языка для программирования новой Connection Machine (CM).
*Lisp (or StarLisp) is a programming language, a dialect of the language Lisp. It was conceived of in 1985 by two employees of the Thinking Machines Corporation, Cliff Lasser and Steve Omohundro, as a way to provide an efficient yet high level language for programming the nascent Connection Machine (CM).
Прелюдия
В то время, когда Connection Machine проектировалась и строилась, единственным языком, который активно разрабатывался для неё, был язык ассемблера под названием PARIS (Параллельный набор инструкций). Стало очевидно, что для программирования машины нужен был более эффективный способ, и как можно скорее. Ожидание завершения разработки Connection Machine Lisp (CM Lisp) – реализации языка программирования Lisp очень высокого уровня с расширениями для параллельных вычислений – было неприемлемым. CM Lisp был предложен Дэнни Хиллисом, и ожидалось, что его разработка займет еще несколько лет.
Разработка
Первоначально был разработан интерпретатор *Lisp. Быстро стало очевидно, что для достижения скорости в гигаФЛОПС, теоретически возможной для Connection Machine, потребуется компилятор *Lisp, переводящий *Lisp в Lisp и PARIS. Компилятор *Lisp был написан Джеффом Минси и впервые выпущен в 1986 году. В 1987 году Алан Эгольф, сотрудник United Technologies в то время, и Дж. П. Массар, сотрудник Thinking Machines, разработали приложение, достигающее производительности более двух гигаФЛОПС – симулятор вихревого следа вертолета. Одновременно Дж. П. Массар разработал *Lisp Simulator, эмулятор, предназначенный для запуска *Lisp-кода на стандартных, непараллельных машинах. Этот симулятор до сих пор существует и в 2001 году был портирован на American National Standards Institute (ANSI) Common Lisp (CL). Более ранняя версия, написанная на оригинальном CL, хранится в репозитории искусственного интеллекта (ИИ) Университета Карнеги-Меллона (CMU). Клифф Лассер, Джефф Минси и Дж. П. Массар до 1989 года работали над более поздними версиями *Lisp, включающими значительные улучшения функций и производительности. В 1990–1991 годах Дж. П. Массар и Марио Буржуан реализовали *Lisp на Thinking Machines CM5.
Реализация
StarLisp был написан на Common Lisp (CL) и, следовательно, обладал всей мощью CL. Для использования Connection Machine требовался хост или интерфейс. Для работы с *Lisp этот интерфейс должен был поддерживать CL. Машины Symbolics, работающие под управлением Genera, и рабочие станции Sun Microsystems с Lucid Common Lisp от Lucid Inc. использовались для управления *Lisp. StarLisp работал с параллельными переменными (PVARS), которые представляли собой память Connection Machine и по сути являлись векторами: по одному элементу на процессор CM (или виртуальный процессор). StarLisp включал в себя стандартные операции над PVARS, такие как сложение и умножение векторов, а также примитивы связи, которые эффективно переупорядочивали элементы PVAR, используя коммуникационное оборудование CM для оптимальной маршрутизации данных.