MultiLisp - MultiLisp
Paradigmata | Multi-paradigma: funkční, rozkazovací způsob, 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 | Koncert víceprocesorový |
Licence | Proprietární |
Ovlivněno | |
Lisp, Systém | |
Ovlivněno | |
Gambit, Interlisp -VAX |
MultiLisp je funkční programovací jazyk, a dialekt jazyka Lisp a jeho dialektu Systém, rozšířené o konstrukty pro paralelní výpočty poprava a sdílená paměť. Tato rozšíření zahrnují vedlejší efekty, vykreslování MultiLisp nedeterministické. Spolu s rozšířeními pro paralelní programování měl MultiLisp také něco neobvyklého odvoz odpadu a algoritmy 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 začátku 80. let pro použití na 32procesorovém koncertu víceprocesorový poté vyvíjen v Massachusetts Institute of Technology (MIT) a implementováno v Interlisp. Ovlivnilo to vývoj dialektů systému Gambit,[1] a Interlisp-VAX.
PCALL a BUDOUCNOST
MultiLisp dosahuje paralelismu s PCALL makro, kde
(PCALL Fun A B C ...)
je ekvivalentní k
(Fun A B C ...)
kromě toho, že argumenty A, B, C,
je výslovně povoleno paralelní hodnocení; toto obchází obvyklé pořadí hodnocení, které je postupné a zleva doprava. Využívá také konstrukci paralelního programování nazvanou futures, který se podobá rozvětvení, zkombinováno s líné hodnocení. Pomocí tohoto konstruktu, výraz jako
(nevýhody (BUDOUCNOST A) (BUDOUCNOST 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 nevýhody volání, dokud neprovedete operaci, 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čet". Transakce ACM v programovacích jazycích a systémech. 7 (4): 501–538. doi:10.1145/4472.4478.
- Koomen, Johannes A. G. M. (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 A. G. M. (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, W.S. "Paralelní implementace funkčních jazyků". 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.