Articulo de referencia

SWI-Prolog

SWI-Prolog es una implementación gratuita del lenguaje de programación Prolog , comúnmente utilizado para la enseñanza y aplicaciones de la web semántica . Cuenta con un amplio ...

SWI-Prolog es una implementación gratuita del lenguaje de programación Prolog , comúnmente utilizado para la enseñanza y aplicaciones de la web semántica . Cuenta con un amplio conjunto de características, bibliotecas para programación lógica con restricciones , multihilo , pruebas unitarias , interfaz gráfica de usuario ( GUI) , interfaz con Java , ODBC y otros, programación literaria , un servidor web , SGML , RDF , RDFS , herramientas para desarrolladores (incluido un IDE con depurador y perfilador de interfaz gráfica ) y una extensa documentación.

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

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

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

Modelo de ejecución

SWI-Prolog no se basa en el modelo de ejecución de Prolog de la Máquina Abstracta de Warren .

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 compuesto por solo siete instrucciones. Las extensiones específicas de SWI-Prolog buscan 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 fallo . Prolog se puede compilar fácilmente a este lenguaje, y el código máquina abstracto se descompila fácilmente de nuevo a Prolog. Esta característica se suele aprovechar para intercalar la ejecución de código compilado e interpretado. [ 3 ]

Programación lógica con restricciones

La funcionalidad de programación lógica con restricciones llegó bastante tarde en la vida de SWI-Prolog, debido a la falta de soporte básico. [ 4 ] Esto cambió a principios de 2004, cuando se añadieron variables con atributos al lenguaje. La biblioteca CHR de Lovaina fue entonces la primera biblioteca CLP en ser portada 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 fue implementada sobre CHR. Posteriormente, se realizó una portada de la biblioteca CLP(QR) de Christian Holzbaur y un solucionador CLP(FD) de dominio finito. Finalmente, se añadió 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 SWI-Prolog pueden distribuirse entre varios servidores y páginas web a través del sistema Pengines. [ 7 ]

XPCE

XPCE es un conjunto de herramientas GUI 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 conjunto de herramientas gráficas XPCE comenzó en 1987, junto con SWI-Prolog. Admite botones , menús , controles deslizantes , pestañas y otros widgets GUI básicos . XPCE está disponible para todas las plataformas compatibles con SWI-Prolog.

PceEmacs es un editor integrado de SWI-Prolog. Es un clon de Emacs implementado en Prolog (y XPCE). Admite indentación correcta , resaltado de sintaxis , verificación completa de sintaxis mediante el analizador sintáctico de SWI-Prolog , advertencias para variables singleton y búsqueda de definiciones de predicados a partir de la información de la base de datos de 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. "Ann: SWI-Prolog 10.0.0 (Estable)" . 3 de diciembre de 2025. Consultado el 5 de diciembre de 2025 .
  2. Tate, Bruce (2022). «Fundamentos de la programación lógica (Capítulo 1)». Programmer Passport: Prolog . Pragmatic Bookshelf. ISBN 9781680509359.
  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) . Theory and Practice of Logic Programming . 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". Theory and Practice of Logic Programming . 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 de JPL 3.x" . SWI-Prolog . Archivado del original el 16 de julio de 2011. Recuperado el 20 de junio de 2010 .
  • Sitio web oficialEdita esto en Wikidata