270 likes | 338 Views
YAFOOL?. Amélie Cordier – 09 Novembre 2004. Plan de la présentation. Yafool? Les paradigmes de programmation Principes d'implantation En pratique… Programmer en Yafool Liens. YAFOOL?. Historique Définition. Yafool? - Historique.
E N D
YAFOOL? Amélie Cordier – 09 Novembre 2004
Plan de la présentation • Yafool? • Les paradigmes de programmation • Principes d'implantation • En pratique… • Programmer en Yafool • Liens YAFOOL ? - Amélie Cordier
YAFOOL? Historique Définition
Yafool? - Historique • YAFOOL : Yet Another Frame-based Object-Oriented Language • Créé en 1985 par Roland Ducournau, à l’INRIA • Objectif : développer un outil de représentation des connaissances pour des systèmes experts. YAFOOL ? - Amélie Cordier
Yafool? - Définitions • “Langage” orienté objet, de type frames • C'est un ensemble de primitives plus qu'un langage. • Ecrit en Le_Lisp. L'accès à LISP est total et immédiat • Combine programmation procédurale et programmation objet YAFOOL ? - Amélie Cordier
Les paradigmes de programmation Les 4 paradigmes de programmation Positionnement de Yafool
Les 4 paradigmes de programmation (1/2) • Orientée procédures : • Les procédures sont actives • Les données sont passives Exemple: LISP, C, Basic, etc. • Orientée objets : • L'objet est un ensemble données (attributs) + procédures (comportements) • Les actions se traduisent par des messages interprétés par les objets • La notion d'héritage permet de structurer les objets en classes et sous-classes Exemple: SIMULA, SMALLTALK, Java selon Bobrow et Stefik - 1983 YAFOOL ? - Amélie Cordier
Les 4 paradigmes de programmation (2/2) • Orientée données : • Les actions réflexes lient les données aux procédures • Les réflexes sont déclenchés lors d'accès spécifiques aux données (lecture, écriture, etc.) Exemples : KRL, Shirka • Par les règles (programmation logique) : • Le comportement du système est dicté par des ensembles de couples conditions/actions. • L'invocation d'une règle est guidée par filtrage (pattern matching) sur les données. YAFOOL ? - Amélie Cordier
Positionnement de Yafool Programmation orientée objets + données (LOOD) • De l'objet : • Notion d'objet, attribut, comportement (slot) • Lien d'héritage est-un (inclusion et appartenance) • Des données : • Notion de réflexe • Principe de base d'implantation des frames YAFOOL ? - Amélie Cordier
Frames et objets Distinction entre les frames et les objets: • Un objet possède des procédures • Un frame ne possède pas de procédures propres MAIS ses attributs en possèdent YAFOOL ? - Amélie Cordier
Implantation de Yafool Représentation des frames Les concepts du langage La notion d'objet, l'héritage
Représentation des frames • Liste d'association à deux niveau. (objet (slot-1 (facet-11, val-11) … (facet-1k, val-1k)) … (slot-i (facet-i1, val-i1) … (slot-n …)) • Les facettes définissent des modalités sur les attributs : valeur, contrainte, réflexe, etc. • Le triplet frame-slot-facette permet d'obtenir une valeur YAFOOL ? - Amélie Cordier
Les concepts du langage (1/2) • Deux entités : • Noyau dur • Primitives du système (fonctions d'accès élémentaires au triplets, création, lecture écriture effacement) • Gestion des mécanismes d'héritage • Déclenchement des attachement procéduraux (réflexes et comportement) • ... YAFOOL ? - Amélie Cordier
Les concepts du langage (2/2) • Noyau mou • Autorise une syntaxe plus souple et plus elliptique • Définit l'ensemble des objets du noyau dur qui seront utilisés de façon standard • Extensible et/ou modifiables au niveau de la syntaxe, des concepts, des objets systèmes et des utilitaires. YAFOOL ? - Amélie Cordier
Niveaux d'utilisation de Yafool • Utilisateur de base : • noyau mou seulement • Utilisateur évolué (qui étend le langage) : • noyaux dur et mou • Utilisateur haut niveau : • accès au source YAFOOL ? - Amélie Cordier
La notion d'objet • Le nombre de facettes et de slots est illimité • Tous les concepts YAFOOL sont des objets, même les slots et les facettes. • Il existe un mécanisme d’héritage entre les objets donc : => Les slots et les facettes peuvent donc être hiérarchisés. YAFOOL ? - Amélie Cordier
La notion d'héritage • L'héritage : un des élément clé de la POO • L'héritage dans YAFOOL : • Par délégation : si un objet ne peut répondre à un message, il délègue le message à ses successeurs (ancêtres) dans le graphe d'héritage. • Multiple, gère les exceptions. • Pas de différence entre relation d'instanciation et relation de spécification. YAFOOL ? - Amélie Cordier
En pratique… Applications utilisant YAFOOL YAFOOL aujourd’hui
Applications utilisant YAFOOL • Plate-forme Cassis (K6) du CNET: • CNET : France Télécom Recherche • Modélisation des réseaux téléphoniques • Système ReSyn : • Aide à la synthèse en chimie organique • Développée par Framentec et le LIRMM pour Roussel-UCLAF • Utilisée dans le cadre du GDR CNRS TICCO (Traitement Informatique de la Connaissance en Chimie Organique). YAFOOL ? - Amélie Cordier
YAFOOL aujourd’hui • La version la plus à jour de YAFOOL : • Version 3.22 • Automne 1991 • Selon son concepteur, YAFOOL est « mort » à cause de : • L’abandon du langage Le_LISP v15 par l’INRIA • L’échec de son successeur, développé par ILOG YAFOOL ? - Amélie Cordier
Programmer en Yafool … un exemple “simple”
Un exemple “simple” Création de la racine de l’univers: (big-bang avant-JC (bla-bla toute la gaule est occupee… (toute? non car un petit village…) d apres goscinny et uderzo)) Description d’une instance de l’univers : ? (creation lieu ‘rome ()) = rome ? (creation personnage ‘cesar ‘((bercail rome))) = cesar YAFOOL ? - Amélie Cordier
Un exemple “simple” Observation du contenu d’un objet : ? ^Vcesar (cesar (est-un (value personnage) (herit personnage avant-JC objet-ideal)) (instance-de (value personnage)) (bercail (value rome))) = cesar Lecture de l’attribut d’un objet, définition d’une valeur : ? (bercail cesar) = rome ? (:= lieu-actuel cesar rome) = rome YAFOOL ? - Amélie Cordier
Un exemple “simple” Les réflexes ont bien fonctionné : ? (lieu-actuel cesar) = rome ? (presents rome) = (cesar) Vérification de la présence de quelqu’un : ? (:? Lieu-actuel cesar ‘bologne) = () ? (:? Lieu-actuel cesar rome) = rome YAFOOL ? - Amélie Cordier
Un exemple “simple” Suppression et ajout d’éléments : ? (:- presents rome) = (cesar) ? (lieu-actuel cesar) = () ? (:+ presents rome cesar) = cesar ? (:+ presents rome ‘(neron cesar)) = neron ? (presents rome) = (cesar neron) YAFOOL ? - Amélie Cordier
Un exemple “simple” Comportement : (personnage (aller-en-foret (methode () when (:? lieu-actuel (bercail)) (:= lieu-actuel foret)))) (saluer (methode))) ----------------------------------------------------------------------------------------------------------- ? (aller-en-foret cesar) Il n y a pas de methode saluer pour cesar avec (()) = foret ? (presents rome) = (neron) ? (presents foret) =(cesar) YAFOOL ? - Amélie Cordier
Liens http://liris.cnrs.fr/amelie.cordier/recherche/Yafool/biblio.html Source de la présentation : Ducournau, R. - Quinqueton, J. YAFOOL : encore un langage objet a base de frames! Version 2.1. Rapport technique de l'INRIA-Rocquencourt