Articulo de referencia

MultiLisp

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 parale...

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

  1. 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 .