Programación lógica concurrente - Concurrent logic programming

La programación lógica concurrente es una variante de la programación lógica en la que los programas son conjuntos de cláusulas Horn protegidas de la forma:

B 1 ,…, B n .

La conjunción G 1 ,…, G n se llama la protección de la cláusula y ǀ es el operador de compromiso.

Declarativamente, las cláusulas de Horn protegidas se leen como implicaciones lógicas ordinarias:

H si G 1 y… y G n o B 1 y… y B n .

Sin embargo, procedimentalmente, cuando hay varias cláusulas cuyos jefes H coinciden con un gol dado, entonces todas las cláusulas se ejecutan en paralelo, verificando si sus guardias G 1 ,…, G n cumplen. Si los guardias de más de una cláusula se mantienen, entonces se hace una elección comprometida con una de las cláusulas y la ejecución procede con los subobjetivos B 1 ,…, B n de la cláusula elegida. Estos subobjetivos también se pueden ejecutar en paralelo. Por lo tanto, la programación lógica concurrente implementa una forma de "no me importa el no determinismo", en lugar de "no conozco el no determinismo".

Historia

El primer lenguaje de programación lógica concurrente fue el lenguaje relacional de Clark y Gregory, que era una rama de IC-Prolog. Las versiones posteriores de la programación lógica concurrente incluyen el lenguaje Concurrent Prolog de Shapiro y Guarded Horn Clause de Ueda.

El desarrollo de la programación lógica concurrente recibió un impulso cuando se utilizó GHC para implementar KL1 , el lenguaje de programación de sistemas del Proyecto de Quinta Generación Japonés (FGCS) . El Proyecto FGCS fue una iniciativa de 400 millones de dólares del Ministerio de Industria y Comercio Internacional de Japón , iniciada en 1982, para utilizar computación / procesamiento masivamente paralelo para aplicaciones de inteligencia artificial. La elección de la programación lógica concurrente como el "eslabón perdido" entre el hardware y las aplicaciones fue influenciada por una visita al Proyecto FGCS en 1982 por Ehud Shapiro , quien inventó Concurrent Prolog.

Ver también

Referencias