Введение

Язык программирования *Lisp (или StarLisp) — это язык программирования, диалект языка Lisp. Он был разработан в 1985 году двумя сотрудниками Thinking Machines Corporation, Клиффом Лассером и Стивом Омохундро, как средство обеспечения эффективного, но высокоуровневого языка для программирования новой 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 для оптимальной маршрутизации данных.