No veo ningún requisito verdadero para una interfaz de idioma extranjero para su tarea: use Prolog IO, es fácil de usar y eficiente. También puede comenzar simplemente con el soporte de protocol/1. Solo un consejo de KISS ...
Una interfaz de idioma extranjero es obligatorio cuando necesita algo implementado en ese otro idioma.
SWI-Prolog C++ interface es mucho más fácil de usar que la contraparte C, y permite tanto ampliar el idioma con una codificación interna realmente sencilla como integrar el motor en un "main" independiente. Y estos dos aspectos pueden ser coherentes con coherencia: supongamos que para un prototipo rápido implementamos los comandos incorporados, y usamos el nivel superior REPL, mientras que una aplicación completa puede iniciar el motor para ser utilizado como motor lógico, y enviar el (probadamente probado a través de REPL) consultas en segundo plano.
Luego está JPL para la interfaz SWI-Prolog y Java. Sé muy poco al respecto ... He visto algunos problemas reportados en la lista de correo de SWI-Prolog, debido (principalmente) a la complejidad de los diferentes modelos de subprocesos. Pero ciertamente está funcionando.
Se está produciendo un desarrollo interesante para poner a disposición el IDE en Eclipse (PDT, herramientas de desarrollo de Prolog). Creo que usan su propia interfaz Java. Actualmente podría ser una mejor opción que JPL.
Pero la interfaz más interesante que SWI-Prolog puede proponer hoy es la infraestructura del servidor HTTP. Si conoce el desarrollo de cliente WEB (HTML/JavaScript/XML/RDF) tiene muchas herramientas para dividir su diseño en MVC Client/Server. Prolog ejecuta un servicio web y un cliente enriquecido interactúa con el usuario final. Esta arquitectura hace que su aplicación esté lista para ejecutarse localmente también en la naturaleza.
Por favor, consulte la sección correspondiente How To ... No es una tarea simple, pero (en mi humilde opinión) una muy gratificante y de larga duración.
Otra opción es comunicarse usando sockets. –
La interfaz C# también funciona con F #. – joel76