MultiLisp - MultiLisp

MultiLisp
Paradigmas Multi-paradigma : funcional , imperativo , concorrente , meta
Família Lisp
Projetado por Robert H. Halstead Jr.
Desenvolvedor Instituto de Tecnologia de Massachusetts (MIT
Apareceu pela primeira vez 1980 ; 41 anos atrás  ( 1980 )
Disciplina de digitação Dinâmico , latente , forte
Escopo Lexical
Linguagem de implementação Interlisp
Plataforma Multiprocessador concerto
Licença Proprietário
Influenciado por
Lisp , Scheme
Influenciado
Gambit , Interlisp - VAX

MultiLisp é uma linguagem de programação funcional , um dialeto da linguagem Lisp , e de seu dialeto Scheme , estendido com construções para execução de computação paralela e memória compartilhada . Essas extensões envolvem efeitos colaterais , tornando o MultiLisp não determinístico . Junto com suas extensões de programação paralela, o MultiLisp também tinha alguns algoritmos incomuns de coleta de lixo e agendamento de tarefas. Como Scheme, MultiLisp foi otimizado para computação simbólica . Ao contrário de algumas linguagens de programação paralela, MultiLisp incorporou construções para causar efeitos colaterais e para introduzir explicitamente o paralelismo.

Ele foi projetado por Robert H. Halstead Jr., no início dos anos 1980, para uso no multiprocessador Concert de 32 processadores, então sendo desenvolvido no Massachusetts Institute of Technology (MIT) e implementado no Interlisp . Influenciou o desenvolvimento dos dialetos Scheme Gambit e Interlisp- VAX .

PCALL e FUTURO

MultiLisp atinge paralelismo com a macro PCALL , onde

(PCALL Fun A B C ...)

é equivalente a

(Fun A B C ...)

exceto que os argumentos A, B, C, etc. têm permissão explícita para serem avaliados em paralelo; isso contorna a ordem usual de avaliação, que é sequencial e da esquerda para a direita. Ele também faz uso de uma construção de programação paralela chamada de futuros , que se assemelha a bifurcação , combinada com avaliação preguiçosa . Usando esta construção, uma expressão como

(cons (FUTURE A) (FUTURE B))

pode ser escrito, o que irá sobrepor a avaliação das expressões A e B, não apenas entre si, mas com cálculos que usam o resultado da chamada de contras , até que seja realizada uma operação que necessite de informações corretas sobre o valor de A ou B .

Veja também

Referências

  • Halstead, Robert H. Jr. (outubro de 1985). "MultiLisp: uma linguagem para computação simbólica simultânea". Transações ACM em linguagens de programação e sistemas . 7 (4): 501–538. doi : 10.1145 / 4472.4478 . S2CID   1285424 .
  • Koomen, Johannes AGM (1980). A Máquina Virtual Interlisp: Um Estudo do Seu Desenho e Implementação como Multilisp (MSc). University of British Columbia.
  • Bates, Raymond L .; Dyer, David; Koomen, Johannes AGM (15–18 de agosto de 1982). “Implementação do Interlisp no VAX”. LFP '82 Proceedings of the 1982 ACM symposium on LISP and Functional Programming . Simpósio ACM sobre LISP e programação funcional. Pittsburgh , Pensilvânia, Estados Unidos. pp. 81–87.
  • Halstead, Robert H. Jr. (1984). A linguagem MultiLisp: Lisp para um multiprocessador . Conferência sobre Computadores de 5ª Geração. Tóquio, Japão.
  • Martins, WS "Implementações Paralelas de Linguagens Funcionais". Atas da 4ª Int. Workshop sobre a implementação paralela de linguagens funcionais : 92.
  • Skillicorn, David B .; Talia, Domenico (junho de 1998). "Modelos e linguagens para computação paralela". Pesquisas de computação ACM . 30 (2): 123–169. doi : 10.1145 / 280277.280278 . S2CID   9308854 .