Alicia | |
---|---|
Semántica | funcional |
clase de idioma | lenguaje de programación paralelo [d] , lenguaje de programación de restricciones [d] ,programación funcionalylenguaje |
tipo de ejecución | compilando a bytecode para la máquina virtual |
Apareció en | 2002 |
Autor | Laboratorio de Sistemas de Programación, Universidad de Saarland |
sistema de tipos | Hindley-Milner |
Implementaciones principales | Alicia (la única) |
sido influenciado | ML estándar , onzas |
Licencia | licencia MIT |
Sitio web | ps.uni-saarland.de/alice/ |
Alice es un lenguaje de programación funcional desarrollado en el Laboratorio de Sistemas de Programación de la Universidad de Saarland . Es un dialecto del lenguaje ML estándar , aumentado con evaluación diferida , concurrencia ( procedimiento múltiple y computación distribuida de llamadas a procedimientos remotos ) y programación de restricciones .
La implementación de Alice de la Universidad de Saarland utiliza la máquina virtual SEAM (Simple Extensible Abstract Machine) . Es un software gratuito y utiliza la compilación sobre la marcha tanto para el código de bytes como para el código nativo x86 .
Las primeras versiones de Alice se ejecutaban en la máquina virtual de Mozart / Oz , lo que permitía que el código de Alice y Oz interoperaran.
La capacidad de llamar a procedimientos remotos en Alice depende de la máquina virtual, ya que utiliza la transferencia directa de código ejecutable de una computadora a otra.
Alice amplía Standard ML con una serie de primitivas para un modelo exótico de cálculo no estricto llamado call-by-targeting que implementa fácilmente el paralelismo . Los hilos se pueden crear usando la palabra reservada spawn .
Considere un algoritmo nativo para calcular los números de Fibonacci :
mentira divertida 0 = 0 | mentira 1 = 1 | mentira n = mentira ( n- 1 ) + mentira ( n- 2 );Para valores grandes de n , el cálculo fib nllevará mucho tiempo. Este cálculo se puede hacer en un hilo separado con:
val x = engendro ( fib ( n ));La variable x ahora está asociada con un llamado valor futuro . Cuando una operación necesita un valor inmediato de x , se bloqueará hasta que el subproceso haya terminado de calcularse. Para un mejor uso del paralelismo, puedes incluso definirlo fibasí:
mentira divertida 0 = 0 | mentira 1 = 1 | fib n = spawn fib ( n- 1 ) + fib ( n- 2 );
Lenguajes de programación | |
---|---|
|