Squeak Prolog
From OFSET Wiki
Contents |
[edit] Introduction
Prolog est un langage de programmation logique. La programmation en général est impérative, cela signifie que l'on donne à l'ordinateur des instructions à éxécuter, lui indiquant comment agir et effectuer sa tâche.
Avec la programmation logique, on donne à l'ordinateur les données et les contraintes décrivant une tâche et l'ordinateur se débrouille pour trouver une ou plusieurs solutions.
Avec Squeak, on peut bénéficier des 2 modes de programmations.
- Un programme écrit avec SmallTalk ou Etoys peut interroger un programme écrit en Prolog.
- Un programme en Prolog peut exécuter des expressions Smalltalk.
[edit] Documentation
Prolog a été initialement écrit en Smalltalk/V par By Mike Teng puis porté en Squeak par Bolot Kerimbaev.
Documentation de Prolog Smalltalk/V avec annotations pour Squeak :
Cette version a fonctionné jusqu'à l'image Squeak 3.6
Stephane Rollandin a revu le code qui fonctionne maintenant pour les images 3.8 et suivantes ainsi que l'image Etoys 3.0 (pour OLPC).
Ci-dessous c'est à la version de Stephane Rollandin et au projet d'améliorer Prolog que cette page est destinée.
[edit] Téléchargement et installation
Utiliser SqueakMap pour télécharger et installer Prolog.
Aide: [vidéo: Exemple d'utilisation de SqueakMap]
[edit] Les premiers pas
[edit] Appeler l'interface
Après installation, une fenêtre apparait indiquant les commandes à exécuter pour démarrer.
Sélectionner la ligne: Family new openGui. "doIt" et exécuter le code (touches alt/d windows ou pomme/d Mac.
Une nouvelle fenêtre s'ouvre:
[edit] Description de l'interface
Squeak Prolog contrairement aux autres Prolog est organisé en classes comme Smalltalk.
Ces classes sont dites des Experts et en principe regroupent les règles dites clauses qui traitent d'une sorte de problème.
La liste clauses se trouve dans le panneau en haut à droite, le nom des Experts en haut à gauche, au milieu les noms de différents groupes de clauses permettent de n'afficher que les clauses d'un groupe.
En bas un espace de travail permet de poser des questions à l'expert.
Le nom de l'expert auquel on s'adresse s'affiche suivit de :? . Ce nom est celui de l'expert sélectionné dans le panneau en haut à gauche.
[edit] Premier exemple
L'expert Family connait quelques relations entre les membres d'une famille.
father est la relation Père qui a deux arguments: le père et l'enfant.
Pour demander tous les couples (père,enfant), écrire father(x,y).
father est le nom de la relation, il est suivit d'une paire parenthèse (sans espace )contenant les arguments séparés par une virgule.
Les arguments peuvent être soit des objets éléments de la relation, soit des variables.
Si ce sont des variables, on obtiendra en réponse la liste des valeurs que peuvent prendre les variables dans l'ordre d'apparition des variables dans la relation.
Les variables commencent par une minuscule, contrairement aux autres Prolog.
On obtient:
La signification des éléments de la relation dépend du choix du programmeur, ici le premier argument représente le père, le second l'enfant.
[edit] Autres questions
Il est possible de poser d'autres questions en utilisant les réponses reçues.
Family ?- father('John',x).
'Mary'
'David'
S'il n'y a qu'une variable, on obtient directement sa valeur.
S'il n'y a pas de valeur, cela signifie que l'on demande si cette relation est vraie, la réponse sera Yes ou No.
Family ?- father('John','Mary').
Yes
Family ?- father('John','Nancy').
No.
[edit] Tutoriels
Pour aller plus loin: Tutoriel débutants




