Alice | |
---|---|
Semantik | funktionelle |
Sprog klasse | parallelt programmeringssprog [d] , constraint programmeringssprog [d] ,funktionelt programmeringssprogogprogrammeringssprog |
Udførelsestype | kompilering til bytekode for den virtuelle maskine |
Dukkede op i | 2002 |
Forfatter | Programmering Systems Lab, Saarland University |
Type system | Hindley-Milner |
Større implementeringer | Alice (den eneste) |
Blev påvirket | Standard ML , Oz |
Licens | MIT licens |
Internet side | ps.uni-saarland.de/alice/ |
Alice er et funktionelt programmeringssprog udviklet på Programming Systems Lab ved Saarland University . Det er en dialekt af Standard ML-sproget , udvidet med doven evaluering , samtidighed ( multithreading og remote procedure call distributed computing ) og begrænsningsprogrammering .
Alice's implementering af Saarland University bruger SEAM (Simple Extensible Abstract Machine) virtuelle maskine . Det er gratis software og bruger on-the-fly kompilering til både bytecode og x86 native kode .
Tidlige versioner af Alice kørte i Mozart / Oz virtuelle maskine , hvilket tillod kode på Alice og Oz at fungere sammen.
Evnen til at kalde fjernprocedurer i Alice afhænger af den virtuelle maskine, fordi den bruger den direkte overførsel af eksekverbar kode fra en computer til en anden.
Alice udvider Standard ML med en række primitiver for en eksotisk model for ikke-streng beregning kaldet call-by-targeting , der nemt implementerer parallelisme . Tråde kan oprettes ved at bruge det reserverede ord spawn .
Overvej en indbygget algoritme til beregning af Fibonacci-tal :
sjov fib 0 = 0 | fib 1 = 1 | fib n = fib ( n- 1 ) + fib ( n- 2 );For store værdier af n vil beregningen fib ntage lang tid. Denne beregning kan udføres i en separat tråd med:
val x = spawn ( fib ( n ));Variablen x er nu forbundet med en såkaldt fremtidig værdi . Når en operation har brug for en umiddelbar værdi på x , vil den blokere, indtil tråden er færdig med at beregne. For en bedre brug af parallelitet kan du endda definere det fibsådan:
sjov fib 0 = 0 | fib 1 = 1 | fib n = spawn fib ( n- 1 ) + fib ( n- 2 );
Programmeringssprog | |
---|---|
|