2012-05-17 6 views
6

Ich verwende Prolog für ein akademisches Projekt. Ich wollte wissen, ob es für Prolog eine Möglichkeit gibt, mit anderen Programmiersprachen zu interagieren. Was ich will ist eine einfache Eingabe/Ausgabe-Umleitung von Prolog Frage und Antworten.Integrieren von Prolog in andere Umgebungen

Ich weiß, dass Prolog C-Funktionen in einigen Prolog-Implementierungen aufrufen kann. d.h. SWI Prolog.

Was ich brauche ist eine einfache Eingabe/Ausgabe-Umleitung von Prolog Fragen und die Antwort, die der Benutzer bietet.

Jede Hilfe würde wirklich geschätzt werden.

Antwort

6

Ich sehe keine echte Anforderung für eine fremdsprachige Schnittstelle für Ihre Aufgabe: Verwenden Sie Prolog IO, es ist einfach zu bedienen und effizient. Sie könnten auch mit nur Unterstützung von protocol/1 beginnen. Nur ein Kuss Beratung ...

Eine Fremdsprache-Schnittstelle ist obligatorisch, wenn Sie etwas in dieser anderen Sprache implementiert benötigen.

SWI-Prolog C++ interface es ist viel einfacher zu verwenden als C-Gegenstück und ermöglicht sowohl die Erweiterung der Sprache mit wirklich einfachen integrierten Codierungen als auch die Einbettung der Engine in eine eigenständige "Haupt". Und diese zwei Aspekte können elegant cohexieren: sagen wir für einen schnellen Prototyp, implementieren wir einfach die eingebauten und benutzen die oberste REPL-Ebene, während eine vollständige Anwendung die Engine starten kann, um sie als Logik-Engine zu verwenden und (hoffentlich über REPL getestet) Abfragen im Hintergrund.

Dann gibt es JPL Schnittstelle zu SWI-Prolog und Java. Ich weiß wenig darüber ... Ich habe ein Problem auf der SWI-Prolog-Mailingliste gesehen, hauptsächlich aufgrund der Komplexität der verschiedenen Threading-Modelle. Aber sicherlich funktioniert es.

Eine interessante Entwicklung tritt auf, um die IDE in Eclipse zur Verfügung zu stellen (PDT, Prolog Development tools). Ich denke, sie benutzen ihre eigene Java-Schnittstelle. Derzeit könnte eine bessere Wahl als JPL sein.

Aber die interessanteste Schnittstelle SWI-Prolog kann heute vorschlagen, es ist die HTTP-Server-Infrastruktur. Wenn Sie WEB-Client-Entwicklung (HTML/JavaScript/XML/RDF) kennen, haben Sie viele Tools, um Ihr Design in MVC Client/Server aufzuteilen. Prolog führt einen Web Service aus, und ein Rich Client interagiert mit dem Endbenutzer. Diese Architektur macht Ihre Anwendung bereit, lokal auch im Freien zu laufen.

Bitte beachten Sie die relevanten How To Abschnitt ... Ist keine einfache Aufgabe, aber (IMHO) eine sehr lohnende und langjährige.

1

Werfen Sie einen Blick auf Amzi Prolog + Logic Server - sein Zweck ist, Prolog-Programme als Komponente zu anderen konventionellen Sprachen zugänglich zu machen.

1

Es hängt von der Prolog-Verteilung ab, die Sie verwenden. Wie bereits erwähnt, bietet SWI-Prolog verschiedene Schnittstellen für die gebräuchlichsten Anwendungen wie C, C++, Datenbanken, HTTP, XML und andere. Die Ciao Verteilung kann auch nützlich sein für das, was Sie suchen. In diesem Fall ist C so überprüfen Sie diesen Link Ciao Prolog and C