MultiLisp - MultiLisp

MultiLisp
Paradigmata Multi-paradigma : funkční , imperativní , souběžné , meta
Rodina Lisp
Navrhl Robert H. Halstead Jr.
Vývojář Massachusetts Institute of Technology (MIT
Poprvé se objevil 1980 ; Před 41 lety  ( 1980 )
Psací disciplína Dynamický , latentní , silný
Rozsah Lexikální
Jazyk implementace Interlisp
Plošina Koncertní víceprocesor
Licence Proprietární
Ovlivněno
Lisp , schéma
Ovlivněno
Gambit , Interlisp - VAX

MultiLisp je funkční programovací jazyk , dialekt jazyka Lisp a jeho dialektového schématu rozšířený o konstrukce pro provádění paralelních výpočtů a sdílenou paměť . Tato rozšíření zahrnují vedlejší účinky , což činí MultiLisp nedeterministickým . Spolu s rozšířeními pro paralelní programování měl MultiLisp také neobvyklé algoritmy pro sběr odpadu a plánování úkolů. Stejně jako schéma byl i MultiLisp optimalizován pro symbolické výpočty . Na rozdíl od některých paralelních programovacích jazyků zahrnoval MultiLisp konstrukce pro vyvolání vedlejších účinků a pro výslovné zavedení paralelismu.

Byl navržen Robertem H. Halsteadem Jr. na počátku 80. let pro použití na 32procesorovém multiprocesoru Concert, který byl poté vyvinut na Massachusetts Institute of Technology (MIT) a implementován v Interlispu . Ovlivnilo to vývoj dialektů schémat Gambit a Interlisp- VAX .

PCALL a BUDOUCNOST

MultiLisp dosahuje paralelismu s makrem PCALL , kde

(PCALL Fun A B C ...)

je ekvivalentní k

(Fun A B C ...)

kromě toho, že je výslovně povoleno paralelní hodnocení argumentů A, B, C, atd .; toto obchází obvyklé pořadí hodnocení, které je postupné a zleva doprava. Využívá také konstrukci paralelního programování zvanou futures , která se podobá forkingu , kombinovaná s líným vyhodnocením . Pomocí tohoto konstruktu, výraz jako

(cons (FUTURE A) (FUTURE B))

lze psát, což překrývá vyhodnocení výrazů A a B, nejen navzájem, ale i výpočty, které využívají výsledek volání cons , dokud nebude provedena operace, která vyžaduje správné informace o hodnotě A nebo B .

Viz také

Reference

  • Halstead, Robert H. Jr. (říjen 1985). "MultiLisp: Jazyk pro souběžné symbolické výpočty". Transakce ACM v programovacích jazycích a systémech . 7 (4): 501–538. doi : 10,1145 / 4472,4478 . S2CID   1285424 .
  • Koomen, Johannes AGM (1980). Virtuální stroj Interlisp: Studie jeho designu a jeho implementace jako Multilisp (MSc). University of British Columbia.
  • Bates, Raymond L .; Dyer, David; Koomen, Johannes AGM (15. – 18. Srpna 1982). "Implementace Interlispu na VAX". LFP '82 Proceedings of the 1982 ACM symposium on LISP and funkční programování . Sympozium ACM o LISP a funkčním programování. Pittsburgh , Pensylvánie, Spojené státy. 81–87.
  • Halstead, Robert H. Jr. (1984). Jazyk MultiLisp: Lisp pro více procesorů . Konference o počítačích 5. generace. Tokyo, Japonsko.
  • Martins, WS „Parallel Implementations of Functional Languages“. Sborník ze 4. Int. Workshop o paralelní implementaci funkčních jazyků : 92.
  • Skillicorn, David B .; Talia, Domenico (červen 1998). Msgstr "Modely a jazyky pro paralelní výpočet". ACM Computing Surveys . 30 (2): 123–169. doi : 10,1145 / 280277,280278 . S2CID   9308854 .