MultiLisp - MultiLisp

MultiLisp
Парадигмы Мультипарадигма : функциональная , императивная , параллельная , мета
Семья Лисп
Разработано Роберт Х. Холстед мл.
Разработчик Массачусетский технологический институт (MIT
Впервые появился 1980 ; 41 год назад  ( 1980 )
Печатная дисциплина Динамичный , скрытый , сильный
Объем Лексический
Язык реализации Интерлисп
Платформа Концертный мультипроцессор
Лицензия Проприетарный
Под влиянием
Лисп , Схема
Под влиянием
Гамбит , Интерлисп - VAX

MultiLisp - это функциональный язык программирования , диалект языка Lisp и его диалекта Scheme , расширенный конструкциями для выполнения параллельных вычислений и разделяемой памяти . Эти расширения включают побочные эффекты , что делает MultiLisp недетерминированным . Наряду с расширениями для параллельного программирования, MultiLisp также имел несколько необычных алгоритмов сборки мусора и планирования задач. Как и Scheme, MultiLisp был оптимизирован для символьных вычислений . В отличие от некоторых языков параллельного программирования, MultiLisp включает конструкции, вызывающие побочные эффекты и явно вводящие параллелизм.

Он был разработан Робертом Х. Холстедом-младшим в начале 1980-х годов для использования на 32-процессорных мультипроцессорах Concert, которые затем разрабатывались в Массачусетском технологическом институте (MIT) и реализовывались в Interlisp . Это повлияло на развитие диалектов Scheme Gambit и Interlisp- VAX .

PCALL и БУДУЩЕЕ

MultiLisp обеспечивает параллелизм с помощью макроса PCALL , где

(PCALL Fun A B C ...)

эквивалентно

(Fun A B C ...)

за исключением того, что аргументы A, B, C, и т. д. явно могут оцениваться параллельно; это обходит обычный порядок оценки, который является последовательным и слева направо. Он также использует конструкцию параллельного программирования, называемую фьючерсами , которая напоминает разветвление в сочетании с ленивым вычислением . Используя эту конструкцию, выражение, такое как

(cons (FUTURE A) (FUTURE B))

может быть записано, что будет перекрывать оценку выражений A и B не только друг с другом, но и с вычислениями, использующими результат вызова cons , до тех пор, пока не будет выполнена операция, которая требует правильной информации о значении A или B .

Смотрите также

Рекомендации

  • Холстед, Роберт Х. младший (октябрь 1985 г.). «MultiLisp: язык для параллельных символьных вычислений». Транзакции ACM по языкам и системам программирования . 7 (4): 501–538. DOI : 10.1145 / 4472.4478 . S2CID   1285424 .
  • Кумен, Йоханнес AGM (1980). Виртуальная машина Interlisp: исследование ее дизайна и реализации как Multilisp (MSc). Университет Британской Колумбии.
  • Bates, Raymond L .; Дайер, Дэвид; Кумен, Йоханнес AGM (15–18 августа 1982 г.). «Внедрение Interlisp на VAX». LFP '82 Труды симпозиума ACM 1982 года по LISP и функциональному программированию . Симпозиум ACM по LISP и функциональному программированию. Питтсбург , Пенсильвания, США. С. 81–87.
  • Холстед, Роберт Х. младший (1984). Язык MultiLisp: Лисп для мультипроцессора . Конференция по компьютерам 5-го поколения. Токио, Япония.
  • Мартинс, WS "Параллельные реализации функциональных языков". Материалы 4-й Междунар. Практикум по параллельной реализации функциональных языков : 92.
  • Skillicorn, Дэвид Б.; Талия, Доменико (июнь 1998 г.). «Модели и языки для параллельных вычислений». ACM Computing Surveys . 30 (2): 123–169. DOI : 10.1145 / 280277.280278 . S2CID   9308854 .