MultiLisp - MultiLisp
| 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 | |
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.
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 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
Referencias
- 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 a 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 .