MultiLisp - MultiLisp
| Paradigmer | Multi-paradigm : funktionell , tvingande , samtidigt , meta |
|---|---|
| Familj | Läspa |
| Designad av | Robert H. Halstead Jr. |
| Utvecklare | Massachusetts Institute of Technology (MIT |
| Uppträdde först | 1980 |
| Skrivdisciplin | Dynamisk , latent , stark |
| Omfattning | Lexikalisk |
| Implementeringsspråk | Interlisp |
| Plattform | Konsert multiprocessor |
| Licens | Proprietär |
| Påverkad av | |
| Lisp , Scheme | |
| Påverkad | |
| Gambit , Interlisp - VAX | |
MultiLisp är en funktionell programmeringsspråk , en dialekt av språket Lisp , och dess dialekt Scheme , förlängd med konstruktioner för parallella beräkningar exekvering och delat minne . Dessa tillägg innebär biverkningar , vilket gör MultiLisp icke-bestämd . Tillsammans med sina parallellprogrammerande tillägg hade MultiLisp också några ovanliga skräpsamlings- och uppgiftsplaneringsalgoritmer. Precis som Scheme var MultiLisp optimerad för symbolisk datoranvändning . Till skillnad från vissa parallella programmeringsspråk införlivade MultiLisp konstruktioner för att orsaka biverkningar och för att uttryckligen införa parallellism.
Den designades av Robert H. Halstead Jr., i början av 1980-talet för användning på 32-processors Concert multiprocessor som sedan utvecklades vid Massachusetts Institute of Technology (MIT) och implementerades i Interlisp . Det påverkat utvecklingen av systemet dialekter Gambit och Interlisp- VAX .
PCALL och FRAMTID
MultiLisp uppnår parallellism med PCALL makro , där
(PCALL Fun A B C ...)
är ekvivalent med
(Fun A B C ...)
förutom att argumenten A, B, C, etc. uttryckligen får utvärderas parallellt; detta kringgår den vanliga utvärderingsordningen, som är sekventiell och från vänster till höger. Det använder också en parallell programmeringskonstruktion som kallas futures , som liknar gaffel , kombinerat med lat utvärdering . Med hjälp av denna konstruktion, ett uttryck som
(cons (FUTURE A) (FUTURE B))
kan skrivas, vilket kommer att överlappa utvärderingen av uttrycken A och B, inte bara med varandra utan med beräkningar som använder resultatet av nackanropet , tills en operation utförs som behöver korrekt information om värdet på A eller B .
Se även
Referenser
- Halstead, Robert H. Jr. (oktober 1985). "MultiLisp: Ett språk för samtidig symbolisk beräkning". ACM-transaktioner på programmeringsspråk och system . 7 (4): 501–538. doi : 10.1145 / 4472.4478 . S2CID 1285424 .
- Koomen, Johannes AGM (1980). Interlisp Virtual Machine: En studie av dess design och dess implementering som multilisp (MSc). University of British Columbia.
- Bates, Raymond L.; Dyer, David; Koomen, Johannes årsstämma (15–18 augusti 1982). "Implementering av Interlisp på VAX". LFP '82 Proceedings of the 1982 ACM symposium on LISP and function programmering . ACM-symposium om LISP och funktionell programmering. Pittsburgh , Pennsylvania, USA. s 81–87.
- Halstead, Robert H. Jr. (1984). MultiLisp-språket: Lisp för en multiprocessor . Konferens om 5: e generationens datorer. Tokyo, Japan.
- Martins, WS "Parallella implementeringar av funktionella språk". Proceedings of the 4th Int. Workshop om parallell implementering av funktionella språk : 92.
- Skillicorn, David B .; Talia, Domenico (juni 1998). "Modeller och språk för parallell beräkning". ACM-datorundersökningar . 30 (2): 123–169. doi : 10.1145 / 280277.280278 . S2CID 9308854 .