Articulo de referencia

SWI-Prólogo

SWI-Prolog es una implementación libre del lenguaje de programación Prolog , comúnmente utilizado para la enseñanza y aplicaciones web semánticas . Tiene un amplio conjunto de c...

SWI-Prolog es una implementación libre del lenguaje de programación Prolog , comúnmente utilizado para la enseñanza y aplicaciones web semánticas . Tiene un amplio conjunto de características, bibliotecas para programación lógica de restricciones , multiprocesamiento , pruebas unitarias , GUI , interfaz con Java , ODBC y otros, programación alfabetizada , un servidor web , SGML , RDF , RDFS , herramientas para desarrolladores (incluido un IDE con un depurador de GUI y un generador de perfiles de GUI ) y una extensa documentación.

SWI-Prolog se ejecuta en plataformas Unix , Windows , Macintosh y Linux .

SWI-Prolog ha estado en continuo desarrollo desde 1987. Su autor principal es Jan Wielemaker .

El nombre SWI se deriva de Sociaal-Wetenschappelijke Informatica ("Informática de las Ciencias Sociales"), el antiguo nombre del grupo de la Universidad de Ámsterdam , donde trabajaba Wielemaker cuando inició el desarrollo de SWI-Prolog. [2] El nombre de este grupo ha cambiado a HCS (Estudios Humano-Computadora).

Modelo de ejecución

SWI-Prolog no se basa en el modelo de ejecución Warren Abstract Machine de Prolog.

En cambio, se basa en una versión extendida de la máquina virtual ZIP, una máquina virtual mínima para Prolog que implementa un lenguaje simple que consta de solo siete instrucciones. Las extensiones específicas de SWI-Prolog apuntan a mejorar el rendimiento de varias maneras: se introducen instrucciones ad hoc para admitir la unificación , la invocación de predicados , algunos predicados integrados de uso frecuente, aritmética , flujo de control y negación como falla . Prolog se puede compilar fácilmente en este lenguaje y el código de máquina abstracto se descompila fácilmente nuevamente en Prolog. Esta característica a menudo se explota para intercalar la ejecución de código compilado e interpretado. [3]

Programación lógica de restricciones

La funcionalidad de programación lógica de restricciones llegó bastante tarde en la vida de SWI-Prolog, porque carecía del soporte básico. [4] Esto cambió a principios de 2004, cuando se agregaron variables atribuidas al lenguaje. La biblioteca Leuven CHR fue entonces la primera biblioteca CLP en ser trasladada a SWI-Prolog. Mencionamos la biblioteca INCLP(R) de SWI-Prolog (De Koninck et al. 2006), que proporciona restricciones no lineales sobre los números reales y se implementó sobre CHR. Más tarde llegó una adaptación de la biblioteca CLP(QR) de Christian Holzbaur y un solucionador CLP(FD) de dominio finito. Finalmente, se agregó un solucionador CLP(B) booleano. [5]

Extensiones para SWI-Prolog

SWI-Prolog se instala con un marco web basado en gramáticas de cláusulas definidas . [6] Las consultas de SWI-Prolog pueden distribuirse entre varios servidores y páginas web a través del sistema Pengines. [7]

XPCE

XPCE es un kit de herramientas de interfaz gráfica de usuario orientado a objetos e independiente de la plataforma [8] para SWI-Prolog, Lisp y otros lenguajes interactivos y de tipado dinámico . Aunque XPCE fue diseñado para ser independiente del lenguaje, ha ganado popularidad principalmente con Prolog. El desarrollo del kit de herramientas gráficas XPCE comenzó en 1987, junto con SWI-Prolog. Admite botones , menús , controles deslizantes , pestañas y otros widgets básicos de interfaz gráfica de usuario . XPCE está disponible para todas las plataformas compatibles con SWI-Prolog.

PceEmacs es un editor integrado de SWI-Prolog. PceEmacs es un clon de Emacs implementado en Prolog (y XPCE). Admite sangría adecuada , resaltado de sintaxis , verificación de sintaxis completa mediante la llamada al analizador SWI-Prolog , advertencias para variables singleton y búsqueda de definiciones de predicados en función de la información de origen de la base de datos Prolog.

Interfaces

JPL es una interfaz bidireccional entre Java y Prolog. [9] Requiere tanto SWI-Prolog como Java SDK . [10] Se instala como parte de SWI-Prolog.

Véase también

Referencias

  1. ^ "Versión V9.2.2".
  2. ^ https://www.linkedin.com/in/jan-wielemaker-6a270a1b3/ [ URL básica ]
  3. ^ Körner, Philipp; Leuschel, Michael; Barbosa, João; Costa, Vítor Santos; Dahl, Verónica; Hermenegildo, Manuel V.; Morales, José F.; Wielemaker, enero; Díaz, Daniel; Abreu, Salvador; Ciatto, Giovanni (2022). "Cincuenta años de prólogo y más allá". Teoría y práctica de la programación lógica . 22 (6): 776–858. doi :10.1017/S1471068422000102. hdl : 10174/33387 . ISSN  1471-0684. Este artículo incorpora texto de esta fuente, que está disponible bajo la licencia CC BY 4.0.
  4. ^ Jan Wielemaker, Tom Schrijvers, Markus Triska, Torbjörn Lager: SWI-Prolog. TPLP 12(1–2): 67–96 (2012).
  5. ^ Markus Triska: El solucionador de restricciones booleanas de SWI-Prolog (descripción del sistema). FLOPS 2016: 45–61.
  6. ^ Wielemaker, Jan; Huang, Zhisheng; van der Meij, Lourens (2008). "SWI-Prolog y la Web" (PDF) . Teoría y práctica de la programación lógica . 8 (3): 363–392. doi :10.1017/S1471068407003237. S2CID  5404048.
  7. ^ Wielemaker, Jan; Lager, Torbjorn (14 de mayo de 2014). "Pengines: programación WebLogic simplificada". Teoría y práctica de la programación lógica . 14 (número especial 4-5): 539-552. arXiv : 1405.3953 . doi :10.1017/S1471068414000192. S2CID  9949345.
  8. ^ Programación en XPCE/Prolog.
  9. ^ Paul Singleton; Fred Dushin; Jan Wielemaker (febrero de 2004). "JPL: Una interfaz bidireccional Prolog/Java". SWI-Prolog .
  10. ^ Paul Singleton (febrero de 2004). «Instalación del JPL 3.x». SWI-Prolog .
  • Sitio web oficial
Obtenido de "https://es.wikipedia.org/w/index.php?title=SWI-Prolog&oldid=1242403018"