МультиЛисп
Парадигмы | Мультипарадигма : функциональная , императивная , параллельная , мета. |
---|---|
Семья | Лисп |
Разработано | Роберт Х. Холстед мл. |
Разработчик | Массачусетский технологический институт (MIT) |
Впервые появился | 1980 год |
Дисциплина набора текста | Динамичный , скрытый , сильный |
Объем | Лексический |
Язык реализации | Интерлисп |
Платформа | Концертный мультипроцессор |
Лицензия | Собственный |
Под влиянием | |
Лисп , Схема | |
Под влиянием | |
Гамбит , Интерлисп - VAX |
MultiLisp — это функциональный язык программирования , диалект языка Lisp и его диалекта Scheme , расширенный конструкциями для выполнения параллельных вычислений и разделяемой памяти . Эти расширения имеют побочные эффекты , делающие MultiLisp недетерминированным . Наряду с расширениями параллельного программирования MultiLisp также имел некоторые необычные алгоритмы сборки мусора и планирования задач. Как и Scheme, MultiLisp был оптимизирован для символьных вычислений . В отличие от некоторых языков параллельного программирования, MultiLisp включает конструкции для создания побочных эффектов и явного внедрения параллелизма.
Он был разработан Робертом Х. Холстедом-младшим в начале 1980-х годов для использования в 32-процессорном мультипроцессоре Concert , который затем разрабатывался в Массачусетском технологическом институте (MIT) и реализовывался в Interlisp . Это повлияло на развитие диалектов Схемы Гамбит , [1] и Интерлисп- VAX .
PCALL и БУДУЩЕЕ [ править ]
PCALL MultiLisp обеспечивает параллелизм с макросом , где
(PCALL Fun A B C ...)
эквивалентно
(Fun A B C ...)
за исключением того, что аргументы A, B, C,
и т. д. явно разрешено выполнять параллельно; это обходит обычный порядок оценки, который является последовательным и слева направо. Он также использует конструкцию параллельного программирования, называемую Futures , которая напоминает разветвление в сочетании с ленивым вычислением . Используя эту конструкцию, такое выражение, как
(cons (FUTURE A) (FUTURE B))
можно написать, которая будет перекрывать вычисление выражений A и B не только друг с другом, но и с вычислениями, использующими результат вызова cons , пока не будет выполнена операция, требующая корректной информации о значении A или B. .
См. также [ править ]
Ссылки [ править ]
- Холстед, Роберт Х. младший (октябрь 1985 г.). «MultiLisp: язык для параллельных символьных вычислений» . Транзакции ACM в языках и системах программирования . 7 (4): 501–538. дои : 10.1145/4472.4478 . S2CID 1285424 .
- Кумен, Йоханнес Годовое общее собрание (1980). Виртуальная машина Interlisp: исследование ее конструкции и реализации в виде Multilisp (MSc). Университет Британской Колумбии.
- Бейтс, Раймонд Л.; Дайер, Дэвид; Кумен, Годовое общее собрание Йоханнеса (15–18 августа 1982 г.). «Внедрение Interlisp на VAX». LFP '82 Материалы симпозиума ACM 1982 года по LISP и функциональному программированию . Симпозиум ACM по LISP и функциональному программированию. Питтсбург , Пенсильвания, США. стр. 81–87.
- Холстед, Роберт Х. младший (1984). Язык MultiLisp: Лисп для мультипроцессора . Конференция по компьютерам пятого поколения. Токио, Япония.
- Мартинс, В.С. «Параллельные реализации функциональных языков». Материалы 4-го Межд. Семинар по параллельной реализации функциональных языков : 92.
- Скиликорн, Дэвид Б.; Талия, Доменико (июнь 1998 г.). «Модели и языки параллельных вычислений» . Обзоры вычислительной техники ACM . 30 (2): 123–169. дои : 10.1145/280277.280278 . S2CID 9308854 .