Alice (programmeringssprog)

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 .

Eksempel

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

Se også

Noter

Links