stringtranslate.com

SWI-Prólogo

SWI-Prolog es una implementación gratuita del lenguaje de programación Prolog , comúnmente utilizado para la enseñanza y aplicaciones web semánticas . Tiene un rico conjunto de funciones, bibliotecas para programación de lógica de restricciones , subprocesos múltiples , pruebas unitarias , GUI , interfaz con Java , ODBC y otros, programación alfabetizada , un servidor web , SGML , RDF , RDFS , herramientas de desarrollo (incluido un IDE con Depurador de GUI y generador de perfiles de GUI ) y documentación extensa.

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 (Human-Computer Studies).

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 tienen como objetivo 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 en Prolog. Esta característica a menudo se aprovecha para intercalar la ejecución de código compilado e interpretado. [3]

Programación lógica de restricciones

La funcionalidad de programación de lógica de restricciones llegó bastante tarde en la vida útil 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 CHR de Leuven fue entonces la primera biblioteca CLP que se portó a SWI-Prolog. Mencionamos la biblioteca INCLP(R) de SWI-Prolog (De Koninck et al. 2006), que proporciona restricciones no lineales sobre los reales y se implementó sobre CHR. Más tarde vino una adaptación de la biblioteca CLP(QR) de Christian Holzbaur y un solucionador CLP(FD) de dominio finito. Finalmente, se añadió un solucionador booleano CLP(B). [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 en varios servidores y páginas web a través del sistema Pengines. [7]

XPCE

XPCE es un conjunto de herramientas GUI [8] orientado a objetos independiente de la plataforma para SWI-Prolog, Lisp y otros lenguajes interactivos y de escritura dinámica . 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 GUI básicos . 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 completa de sintaxis llamando al analizador SWI-Prolog , advertencia para variables singleton y búsqueda de definiciones de predicados basadas en la información fuente de la base de datos Prolog.

Interfaces

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

Ver también

Referencias

  1. ^ "Versión V9.2.2".
  2. ^ https://www.linkedin.com/in/jan-wielemaker-6a270a1b3/
  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). Fracasos 2016: 45–61.
  6. ^ Wielemaker, enero; 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, enero; 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-Prólogo .
  10. ^ Paul Singleton (febrero de 2004). "Instalación de JPL 3.x". SWI-Prólogo .

enlaces externos