Articulo de referencia

Cálculo de unión

El cálculo de unión es un cálculo de procesos desarrollado en INRIA . Fue desarrollado para proporcionar una base formal para el diseño de lenguajes de programación distribuidos...

El cálculo de unión es un cálculo de procesos desarrollado en INRIA . Fue desarrollado para proporcionar una base formal para el diseño de lenguajes de programación distribuidos y, por lo tanto, evita intencionalmente las construcciones de comunicación presentes en otros cálculos de procesos, como las comunicaciones de encuentro , que son difíciles de implementar en un entorno distribuido. [ 1 ] A pesar de esta limitación, el cálculo de unión es tan expresivo como el cálculo π completo . Se han demostrado codificaciones del cálculo π en el cálculo de unión, y viceversa. [ 1 ]

El cálculo de unión es un miembro de la familia de cálculos de procesos del cálculo π , y puede considerarse, en su esencia, un cálculo π asíncrono con varias restricciones fuertes: [ 1 ]

  • La restricción del alcance, la recepción y la recepción replicada se fusionan sintácticamente en una sola construcción, la definición ;
  • La comunicación se produce únicamente con nombres definidos;
  • Para cada nombre definido, existe exactamente una recepción replicada.

Sin embargo, como lenguaje de programación, el cálculo de unión ofrece al menos una ventaja sobre el cálculo π: el uso de patrones de unión multidireccionales y la capacidad de comparar mensajes de múltiples canales simultáneamente. [ 2 ]

Implementaciones

Lenguajes basados ​​en el cálculo de unión

El lenguaje de programación join-calculus es un nuevo lenguaje basado en el cálculo de procesos join-calculus. Está implementado como un intérprete escrito en OCaml y admite programación distribuida con tipado estático, comunicación remota transparente, movilidad basada en agentes y detección de fallos. [ 3 ]

  • Aunque no se basa explícitamente en el cálculo de unión, el sistema de reglas de CLIPS lo implementa si cada regla elimina sus entradas cuando se activa (retira los hechos relevantes cuando se dispara).

Muchas implementaciones del cálculo de unión se realizaron como extensiones de lenguajes de programación existentes:

  • JoCaml es una versión de OCaml extendida con primitivas de cálculo de unión.
  • C# polifónico y su sucesor extienden C#.
  • MC# y Parallel C# extienden Polyphonic C#.
  • Unirse a Java extiende Java
  • Una propuesta de Concurrent Basic que utiliza el cálculo de unión.
  • JErlang (la J es de Join, Erjang es Erlang para la JVM) [ 4 ]

Incrustaciones en otros lenguajes de programación

Estas implementaciones no modifican el lenguaje de programación subyacente, sino que introducen operaciones de cálculo de uniones mediante una biblioteca personalizada o un DSL:

  • Las bibliotecas ScalaJoins y Chymyst están escritas en Scala.
  • JoinHs de Einar Karttunen y syallop/Join-Language de Samuel Yallop son DSL para el cálculo de uniones en Haskell.
  • Joinads: diversas implementaciones del cálculo de uniones en F#
  • CocoaJoin es una implementación experimental en Objective-C para iOS y Mac OS X.
  • La biblioteca Join de Python en Python 3 [ 5 ]
  • C++ a través de Boost [ 6 ] (para Boost desde 2009, aprox. v. 40, la versión actual (dic. '19) es 72).

Referencias

  1. 1 2 3 Cedric Fournet, Georges Gonthier (1995). "El CHAM reflexivo y el cálculo de unión" . Actas de POPL ., pág. 1
  2. Petricek, Tomas. "TryJoinads (IV.) - Concurrencia usando cálculo de unión" . tomasp.net . Recuperado el 24 de enero de 2023 .
  3. Cedric Fournet, Georges Gonthier (2000). "El cálculo de unión: un lenguaje para la programación móvil distribuida" . Semántica aplicada. Escuela Internacional de Verano, APPSEM 2000 : 268–332 .
  4. "JErlang: Erlang con Joins" . Archivado del original el 8 de diciembre de 2017. Consultado el 18 de abril de 2015 .
  5. Join Python, Cálculo de unión para Python por Mattias Andree
  6. Yigong Liu - Biblioteca de coordinación y concurrencia de mensajes asíncronos de unión
  • INRIA, Únete a la página principal de Cálculo
  • Microsoft Research, El cálculo de unión: un lenguaje para la programación móvil distribuida