Prolog: l'intelligence artificielle dans vos programmes...
Le succès modéré du langage est sans doute dû à ce que ses créateurs aient voulu l'utiliser comme langage à part entière, ce qui fait que le programmeur bute sur des problèmes où la programmation logique n'est ni naturelle ni très pratique.
Alors qu'à l'inverse elle excelle sur d'autres problèmes où la méthode procédurale est d'un emploi très laborieux, de par sa capacité d'évaluation sur une base de données exprimées sous forme de prédicats.
Par conséquent le langage Prolog prend tout son intérêt si on l'imbrique dans un langage procédural ce qui permet utiliser un type de programmation ou l'autre là où ils permettent d'exprimer le mieux le traitement à réaliser. Par exemple des fonctions procédurales pour dessiner un labyrinthe et y déplacer des entités, des classes pour les caractériser, des clauses logiques pour leur donner un comportement intelligent et intégrer les connaissances ajoutées au fil du temps.
Pour quel types de problèmes Prolog est-il le mieux adapté?
Problèmes que Prolog résoudra pour vous
Relations
Quand on enregistre des données relationnelle sous forme de clauses, par exemple les relations de parenté entre personnes, une évaluation permet de déduire la relation de parenté entre toutes paires de personnes.
Compréhension
Le langage naturel peut se formuler en décomposant les règles de grammaire en clauses, on peut alors réaliser une traduction automatique, ou répondre à des questions usuelles.
Anticipation et explication
La représentation de données sous forme arborescente, ou les données d'une clause sont d'autres clauses, permet d'analyser des hypothèses, prédire des conséquences, trouver des causes.
Court tutoriel Prolog
On apprend à utiliser prolog en installant un interpréteur, par exemple SWI-Prolog ou GNU Prolog. Leur console de commande permet de charger des programmes et d'interagir avec la base de connaissances qu'ils contiennent.
Après téléchargement et installation, on ouvre la console en cliquant sur l'icône SWI ou GNU.
On peut aussi lancer l'interpréteur dans la console du système, par exemple:
swipl -s programme -g "message" -t halt
programme est le nom de votre fichier sans l'extension ".pl".
Un programme est compilé et exécuté avec la commande "consult" de la console Prolog.
Les deux interpréteurs sont compatibles avec le même code source mais SWI répond par true ou false alors que SWI répond par yes ou no.
- Tutoriel Prolog: On enregistre un ensemble de faits.
- Tutoriel Prolog: On énonce un problème sous forme de règles.
- Démo Prolog: Recherche appartement.
Kits Prolog à intégrer à un autre langage
SWI-Prolog est gratuit et développé depuis 1987, cette implémentation peut s'utiliser seule comme plateforme de développement et même comme serveur HTTP. Elle peut parser et générer du code HTML ou JSON et communiquer avec une base de données.
Et elle peut s'interfacer avec d'autres langages comme C++, Java, C#. Il existe depuis peu une version pour WebAssembly: swi-prolog-wasm. Donc utilisable avec JavaScript ou tout langage compilant en wasm.
On peut utiliser Prolog dans une application Web avec une implémentation wasm comme ci-dessus, ou avec un interpéteur écrit en JavaScript comme Tau Prolog par exemple. Il peut fonctionner avec Node.js.
Autre kits pour JavaScript et autres langages:
- JSL. Une extension de programmation logique pour JS basée sur JSON. Permet l'unification. Les données sont ajoutées à la base sous forme d'objets JS et une règle un tableau d'objets.
- CHR.js Un kit de résolution de contraintes exprimées sous forme de règles pour JavaScript.
- Yield Prolog. Peut s'ajouter à JS ou C#. C'est un kit minimaliste.
- Prolog interpreter. Implémenttion basique et très compacte en JavaScript, si l'on veut résoudre des problèmes simples dans une application Web.