De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

Alice ML es un lenguaje de programación diseñado por el Laboratorio de Sistemas de Programación [2] de la Universidad de Saarland , Saarbrücken , Alemania . Es un dialecto de ML estándar , aumentado con soporte para evaluación diferida , concurrencia ( multiproceso y computación distribuida a través de llamadas a procedimientos remotos ) y programación de restricciones .

Resumen [ editar ]

Alice amplía el ML estándar de diversas formas que lo distinguen de su predecesor. Alice proporciona características de concurrencia como parte del lenguaje base mediante el uso de un tipo futuro que representa un valor proporcionado por un hilo de ejecución independiente. Un hilo que usa un valor futuro se bloqueará en un intento de acceder al valor hasta que el hilo que lo realiza haya completado el cálculo. También se proporciona un concepto relacionado denominado promesa , que permite que un hilo proporcione un valor futuro que calculará en otro hilo. Las variables de tipo futuro y promesa se utilizan para implementar la sincronización del flujo de datos.

Al igual que el lenguaje funcional de Haskell , Alice proporciona facilidades para permitir una estrategia de evaluación perezosa en los programas, a diferencia de la estrategia de evaluación ansiosa tradicional del ML estándar. Mientras que Haskell usa el modelo perezoso por defecto, Alice usa un modelo de evaluación ansioso por defecto, necesitando una declaración de programación explícita para que un cálculo evalúe perezosamente.

La implementación de Alice de la Universidad de Saarland utiliza la máquina virtual Simple Extensible Abstract Machine (SEAM) . Es un software gratuito y cuenta con compilación justo a tiempo para código de bytes y código nativo para la arquitectura x86 .

Las primeras versiones de Alice se ejecutaban en la máquina virtual (VM) del Sistema de Programación Mozart (Oz), lo que permitía la interfaz entre el código de Alice y Oz .

La llamada a procedimiento remoto de Alice depende de la máquina virtual, porque puede enviar código para ser calculado de una computadora a otra.

Ejemplo [ editar ]

Alice amplía el ML estándar con varias primitivas para evaluación diferida y concurrencia. Por ejemplo, los hilos se pueden crear utilizando la spawn palabra clave . Considere el algoritmo ingenuo para calcular los números de Fibonacci :

 fun  fib  0  =  0  |  fib  1  =  1  |  fib  n  =  fib ( n- 1 )  +  fib ( n- 2 );

Para valores grandes de n, llevará mucho tiempo calcular. Este cálculo se puede realizar en un hilo separado porfib n

 val  x  =  spawn  fib  n ;

La variable xahora está ligada a un supuesto futuro . Cuando una operación requiere el valor de x, se bloquea hasta que el hilo finaliza con el cálculo. Para explotar el paralelismo, uno podría incluso definir fib de la siguiente manera:

 fun  fib  0  =  0  |  fib  1  =  1  |  fib  n  =  spawn  fib ( n- 1 )  +  fib ( n- 2 );

Ver también [ editar ]

  • Oz (lenguaje de programación)

Referencias [ editar ]

  1. ^ Alice , DE: Universidad de Saarland
  2. ^ "Laboratorio de sistemas de programación" . Archivado desde el original el 5 de octubre de 2006 . Consultado el 8 de agosto de 2006 .

Enlaces externos [ editar ]

  • Página web oficial
  • Varias publicaciones sobre Alice ML y sus conceptos