stringtranslate.com

МультиЛисп

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

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

PCALL и БУДУЩЕЕ

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

(PCALL Fun A B C ...)

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

(Fun A B C ...)

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

(cons (FUTURE A) (FUTURE B))

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

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

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

  1. ^ ВикиСисоп; Микаэлм; Бьюлюсье; Теденс, Дэн (06 февраля 2019 г.). «Гамбит» . Проверено 21 апреля 2019 г.