Alicia (lenguaje de programación)

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 .

Ejemplo

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

Véase también

Notas

Enlaces