MultiLisp es un lenguaje de programación funcional , un dialecto del lenguaje Lisp y de su dialecto Scheme , extendido con construcciones para la ejecución de computación paralela y memoria compartida . Estas extensiones implican efectos secundarios , lo que hace que MultiLisp sea no determinista . Junto con sus extensiones de programación paralela, MultiLisp también tenía algunos algoritmos inusuales de recolección de basura y planificación de tareas. Al igual que Scheme, MultiLisp fue optimizado para la computación simbólica . A diferencia de algunos lenguajes de programación paralela, MultiLisp incorporó construcciones para causar efectos secundarios y para introducir paralelismo explícitamente.
Fue diseñado por Robert H. Halstead Jr. a principios de la década de 1980 para su uso en el multiprocesador Concert de 32 procesadores que se estaba desarrollando en el Instituto Tecnológico de Massachusetts (MIT) y se implementó en Interlisp . Influyó en el desarrollo de los dialectos de Scheme Gambit [ 1 ] e Interlisp - VAX .
PCALL y FUTURO
MultiLisp logra el paralelismo con la macro PCALL , donde
(PCALL Fun A B C ...)
es equivalente a
(Fun A B C ...)
excepto que los argumentos,A, B, C, etc., se permiten explícitamente en paralelo; esto elude el orden habitual de evaluación, que es secuencial y de izquierda a derecha. También utiliza una construcción de programación paralela llamada futures , que se asemeja a forking , combinada con evaluación perezosa . Usando esta construcción, una expresión como
(cons (FUTURE A) (FUTURE B))
se puede escribir, lo que superpondrá la evaluación de las expresiones A y B, no solo entre sí, sino también con cálculos que utilicen el resultado de la llamada cons , hasta que se realice una operación que necesite información correcta sobre el valor de A o B.
Véase también
Referencias
- ↑ WikiSysop; Mikaelm; Bjlucier; Thedens, Dan (6 de febrero de 2019). "Gambito" . Consultado el 21 de abril de 2019 .
- Halstead, Robert H. Jr. (octubre de 1985). "MultiLisp: un lenguaje para computación simbólica concurrente" . ACM Transactions on Programming Languages and Systems . 7 (4): 501– 538. doi : 10.1145/4472.4478 . S2CID 1285424 .
- Koomen, Johannes AGM (1980). La máquina virtual Interlisp: un estudio de su diseño y su implementación como Multilisp (MSc). Universidad de Columbia Británica.
- Bates, Raymond L.; Dyer, David; Koomen, Johannes AGM (15–18 de agosto de 1982). "Implementación de Interlisp en VAX". Actas del simposio LFP '82 de la ACM sobre LISP y programación funcional . Simposio de la ACM sobre LISP y programación funcional. Pittsburgh , Pensilvania, Estados Unidos. págs. 81–87 .
- Halstead, Robert H. Jr. (1984). El lenguaje MultiLisp: Lisp para un multiprocesador . Conferencia sobre computadoras de quinta generación. Tokio, Japón.
- Martins, WS "Implementaciones paralelas de lenguajes funcionales". Actas del 4º Taller Internacional sobre la Implementación Paralela de Lenguajes Funcionales : 92.
- Skillicorn, David B.; Talia, Domenico (junio de 1998). "Modelos y lenguajes para computación paralela" . ACM Computing Surveys . 30 (2): 123– 169. doi : 10.1145/280277.280278 . S2CID 9308854 .
- Lenguajes de programación concurrentes
- Lenguajes de programación de tipado dinámico
- Lenguajes funcionales
- Familia de lenguajes de programación Lisp
- Lenguajes de programación multiparadigma