Alice (programmeringsspråk)

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 .

Exempel

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 );

Se även

Anteckningar

Länkar