MultiLisp - 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 ; Hace 41 años  ( 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 .