Ease es un lenguaje de programación paralela de propósito general . Fue diseñado por Steven Ericsson-Zenith, investigador de la Universidad de Yale , el Instituto de Ciencia e Ingeniería Avanzada en Silicon Valley, California, la Escuela Nacional Superior de Minas de París y la Universidad Pierre y Marie Curie , el departamento de ciencias de la Sorbona . [ 1 ]
El libro Process Interaction Models es la especificación del lenguaje Ease. Ease combina las construcciones de procesos de comunicación secuencial (CSP) con estructuras de datos lógicamente compartidas llamadas contextos . Los contextos son tipos de datos paralelos que construyen los procesos y proporcionan una forma para que estos interactúen.
El lenguaje incluye dos constructores de procesos.
Una cooperación incluye una sincronización de barrera explícita y está escrita:
Si un proceso termina antes que otro, esperará hasta que los demás procesos hayan finalizado.
Una subordinación crea un proceso que comparte los contextos que están dentro del alcance cuando se crea y finaliza cuando se completa (no espera a otros procesos) y se escribe:
Los procesos subordinados se detienen si intentan interactuar con un contexto que ha finalizado porque el proceso padre se ha detenido. Esto permite crear procesos especulativos que finalizarán si su resultado no es necesario.
La potente sintaxis de replicación permite crear múltiples procesos. Por ejemplo,
crea n procesos sincronizados, cada uno con una constante local i .
Los procesos no pueden compartir variables locales ni cooperar en la construcción de contextos compartidos. Ciertos tipos de contexto, denominados recursos , garantizan la semántica de llamada-respuesta.
Existen cuatro funciones según el contexto:
- leer (contexto, variable) – copia un valor del contexto compartido a la variable .
- write (contexto, expresión) – copia el valor de la expresión al contexto compartido .
- put (context, name) – mueve el valor vinculado a name al contexto compartido . El valor de name queda posteriormente indefinido .
- obtener (contexto, nombre) – mueve un valor del contexto y lo vincula al nombre . El valor se elimina del contexto.
Los tipos de contexto son Singletons , Bags o Streams y pueden ser matrices indexadas.
La facilidad tiene una definición semiótica . Esto significa que tiene en cuenta el efecto que el lenguaje tiene sobre el programador y cómo desarrolla algoritmos. El lenguaje fue diseñado para facilitar el desarrollo de programas paralelos.
Referencias
Bibliografía
- John Redman, Una implementación del lenguaje de programación Ease, Universidad de Australia Occidental, 1991
- TH MacKenzie, TI Dix, "Una implementación de C-with-Ease para multiprocesadores de memoria distribuida", Conferencia Internacional IEEE sobre Sistemas Paralelos y Distribuidos, 2002
- TH MacKenzie, TI Dix, "Primitivas paralelas basadas en la facilidad de uso orientadas a objetos en C++," icpads, pág. 623, Conferencia Internacional sobre Sistemas Paralelos y Distribuidos (ICPADS'98), 1998
- Lenguajes de programación concurrentes
- Control de concurrencia
- Temas básicos de lenguajes de programación