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