Alice | |
---|---|
Semantik | funktionell |
Språkklass | parallellt programmeringsspråk [d] , constraint programmeringsspråk [d] ,funktionellt programmeringsspråkochprogrammeringsspråk |
Utförandetyp | kompilering till bytekod för den virtuella maskinen |
Framträdde i | 2002 |
Författare | Programming Systems Lab, Saarlands universitet |
Typ system | Hindley-Milner |
Stora implementeringar | Alice (den enda) |
Blivit påverkad | Standard ML , Oz |
Licens | MIT-licens |
Hemsida | ps.uni-saarland.de/alice/ |
Alice är ett funktionellt programmeringsspråk utvecklat vid Programming Systems Lab vid Saarlands universitet . Det är en dialekt av standard ML-språket , förstärkt med lat utvärdering , samtidighet ( multithreading och fjärranrops-anrop distribuerad datoranvändning ) och begränsningsprogrammering .
Alices implementering av Saarlands universitet använder den virtuella maskinen SEAM (Simple Extensible Abstract Machine) . Det är gratis programvara och använder kompilering direkt till både bytekod och x86 - kod .
Tidiga versioner av Alice körde i Mozart / Oz virtuella maskinen , vilket gjorde att koden på Alice och Oz kunde samverka.
Möjligheten att anropa fjärrprocedurer i Alice beror på den virtuella maskinen, eftersom den använder direkt överföring av körbar kod från en dator till en annan.
Alice utökar Standard ML med ett antal primitiver för en exotisk modell av icke-strikt beräkning som kallas call-by-targeting som enkelt implementerar parallellism . Trådar kan skapas med det reserverade ordet spawn .
Tänk på en inbyggd algoritm för att beräkna Fibonacci-tal :
fun fib 0 = 0 | fib 1 = 1 | fib n = fib ( n- 1 ) + fib ( n- 2 );För stora värden på n kommer beräkningen fib natt ta lång tid. Denna beräkning kan göras i en separat tråd med:
val x = spawn ( fib ( n ));Variabeln x är nu associerad med ett så kallat framtidsvärde . När en operation behöver ett omedelbart värde på x blockeras den tills tråden har beräknats färdigt. För en bättre användning av parallellism kan du till och med definiera det fibså här:
fun fib 0 = 0 | fib 1 = 1 | fib n = spawn fib ( n- 1 ) + fib ( n- 2 );
Programmeringsspråk | |
---|---|
|