Articulo de referencia

Janus (lenguaje de programación con restricciones concurrentes)

Janus es un lenguaje de programación de computadoras descrito parcialmente por K. Kahn y Vijay A. Saraswat en el artículo "Actors as a special case of concurrent constraint (log...

Janus es un lenguaje de programación de computadoras descrito parcialmente por K. Kahn y Vijay A. Saraswat en el artículo "Actors as a special case of concurrent constraint (logic) programming" en 1990. [ 1 ] Es un lenguaje de restricciones concurrente sin retroceso.

Janus modela la concurrencia mediante el uso de canales de tipo "bag" . El código que necesita enviar un mensaje a un proceso lo hace restringiendo un "bag" para que sea la unión de otro "bag" y el "bag" único del mensaje. El otro "bag" queda entonces disponible para ser restringido y así enviar mensajes posteriores.

El proceso recibe el mensaje al comparar la bolsa con un patrón que indica que es la unión de un singleton y otra bolsa. La lógica de los canales de bolsas genera una propiedad compartida con el modelo de actores : el orden de llegada de los mensajes no está garantizado. Sin embargo, a diferencia de los actores en el modelo de actores, los procesos en Janus pueden intercambiar sus "buzones", por así decirlo, en forma de bolsas, y pueden contener más de una. Esta capacidad de intercambiar buzones y contener más de uno se hereda en el lenguaje de programación ToonTalk , influenciado por Janus.

El lenguaje de programación Janus recibe su nombre de Jano , el dios romano de dos caras, porque cada variable lógica en Janus tiene dos "caras", dos aspectos que pueden pasarse como argumentos. Estos se denominan " preguntador" y " declarador" . Representan, respectivamente, el derecho a preguntar el valor de la variable (o alguna característica del valor) y el derecho a declarar el valor (o a indicar alguna restricción sobre cuál puede ser el valor). Los aspectos "preguntador" y "declarador" pueden pasarse como argumentos de forma independiente. Ningún derecho implica el otro. La sintaxis del lenguaje impide copiar un "declarador" o utilizarlo más de una vez. Según Kahn y Saraswat, la contradicción lógica se previene estáticamente.

Referencias

  1. Kahn, K.; Saraswat, Vijay A. (1 de octubre de 1990). "Los actores como un caso especial de programación concurrente con restricciones (lógicas)" . ACM SIGPLAN Notices . 25 (10): 57– 66. doi : 10.1145/97946.97955 . Recuperado el 29 de octubre de 2019 .
  • VA Saraswat, KM Kahn, J Levy (1990). "Janus: Un paso hacia la programación de restricciones distribuidas." NACLP.
  • VA Saraswat, M Rinard, P Panangaden (1991). "Los fundamentos semánticos de la programación con restricciones concurrentes." POPL.
  • David Gudeman, Koenraad De Bosschere, Saumya K. Debray (1992). "jc: Una implementación secuencial eficiente y portátil de Janus". Actas de la Conferencia y Simposio Internacional Conjunto sobre Programación Lógica.