MultiLisp es un lenguaje de programación funcional , un dialecto del lenguaje Lisp y de su dialecto Scheme , extendido con construcciones para ejecución de computación paralela y memoria compartida . Estas extensiones implican efectos secundarios , lo que hace que MultiLisp no sea determinista . Junto con sus extensiones de programación paralela, MultiLisp también tenía algunos algoritmos inusuales de recolección de basura y programación de tareas. Al igual que Scheme, MultiLisp se optimizó para la computación simbólica. A diferencia de algunos lenguajes de programación paralelos, MultiLisp incorporó construcciones para causar efectos secundarios y para introducir explícitamente el paralelismo.
Paradigmas | Multi-paradigma : funcional , imperativo , concurrente , meta |
---|---|
Familia | Ceceo |
Diseñada por | Robert H. Halstead Jr. |
Desarrollador | Instituto de Tecnología de Massachusetts (MIT |
Apareció por primera vez | 1980 |
Disciplina de mecanografía | Dinámico , latente , fuerte |
Alcance | Léxico |
Lenguaje de implementación | Interlisp |
Plataforma | Multiprocesador de concierto |
Licencia | Propiedad |
Influenciado por | |
Lisp , esquema | |
Influenciado | |
Gambito , Interlisp - VAX |
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 de Tecnología de Massachusetts (MIT) e implementado en Interlisp . Influyó en el desarrollo de los dialectos 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 se permite explícitamente evaluar los argumentos, A, B, C,
etc. en paralelo; esto elude el orden habitual de evaluación, que es secuencial y de izquierda a derecha. También hace uso de una construcción de programación paralela llamada futuros , que se asemeja a la bifurcación , combinada con la evaluación perezosa . Usando esta construcción, una expresión como
(cons (FUTURE A) (FUTURE B))
se puede escribir, que superpondrá la evaluación de las expresiones A y B, no solo entre sí, sino con cálculos que utilizan 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 .
Ver también
- Evaluación especulativa
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 la computación simbólica concurrente". Transacciones ACM sobre lenguajes y sistemas de programación . 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 Britanica.
- Bates, Raymond L .; Dyer, David; Koomen, Johannes AGM (15-18 de agosto de 1982). "Implementación de Interlisp en el VAX". LFP '82 Actas del simposio ACM de 1982 sobre LISP y programación funcional . Simposio 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 5ª Generación. Tokio, Japón.
- Martins, WS "Implementaciones paralelas de lenguajes funcionales". Actas de la IV Int. Taller de Implementación Paralela de Lenguajes Funcionales : 92.
- Skillicorn, David B .; Talia, Domenico (junio de 1998). "Modelos y lenguajes para cómputo paralelo". Encuestas de computación ACM . 30 (2): 123–169. doi : 10.1145 / 280277.280278 . S2CID 9308854 .