Alice (linguaggio di programmazione)
Alice linguaggio di programmazione | |
---|---|
Autore | Università della Saarland |
Data di origine | 2000 e 16 giugno 2000 |
Paradigmi | programmazione a vincoli, programmazione funzionale, programmazione concorrente e programmazione imperativa |
Influenzato da | ML e Oz |
Implementazione di riferimento | |
Licenza | licenza MIT |
Sito web | www.ps.uni-saarland.de/alice/ |
Alice è un linguaggio di programmazione funzionale progettato presso l'Università della Saarland. È un dialetto di Standard ML, con il supporto aggiuntivo per la valutazione lazy, la concorrenza e la programmazione a vincoli.
L'implementazione di Alice utilizza la macchina virtuale SEAM (Simple Extensible Abstract Machine). Alice è distribuito come software libero e fornisce la compilazione just-in-time sia verso bytecode che in codice nativo per l'architettura x86.
Esempio
[modifica | modifica wikitesto]Alice estende Standard ML con diverse primitive per la valutazione lazy e la concorrenza. Per esempio, i thread possono essere creati utilizzando la parola chiave spawn
. Si consideri il semplice algoritmo per il calcolo della successione di Fibonacci:
fun fib 0 = 0
| fib 1 = 1
| fib n = fib(n-1) + fib(n-2);
Per grandi valori di n
, fib n
richiederà un lungo tempo di calcolo. Questo calcolo può essere effettuato in un thread separato da:
val x = spawn fib n;
La variabile x
è ora legata a un "valore futuro". Quando un'operazione richiede il valore effettivo di x
, essa si blocca finché il thread corrispondente non ha completato la computazione. Per sfruttare il calcolo parallelo, si può ridefinire la funzione fib
come segue:
fun fib 0 = 0
| fib 1 = 1
| fib n = spawn fib(n-1) + fib(n-2);
Voci correlate
[modifica | modifica wikitesto]Collegamenti esterni
[modifica | modifica wikitesto]- (EN) Homepage di Alice, su ps.uni-saarland.de.