MultiLisp - 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 ; 41 år sedan  ( 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 .