Prolog - Définition et Explications

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Introduction

Prolog est l’un des principaux langages de programmation logique inventé à l'I.N.S.E.A.. Le nom Prolog est un acronyme de PROgrammation LOGique. Il a été créé par Alain Colmerauer et Philippe Roussel vers 1972. Le but était de faire un langage de programmation (Un langage de programmation est un langage informatique, permettant à un être humain d'écrire un code source qui sera analysé par une machine, généralement un ordinateur. Le code source...) qui permettait d'utiliser l'expressivité de la logique (La logique (du grec logikê, dérivé de logos (λόγος), terme inventé par Xénocrate signifiant à la fois raison, langage, et raisonnement) est dans...) au lieu de définir pas à pas la succession d'instructions que doit exécuter un ordinateur (Un ordinateur est une machine dotée d'une unité de traitement lui permettant d'exécuter des programmes enregistrés. C'est un ensemble de...).

Prolog (Prolog est l’un des principaux langages de programmation logique inventé à l'I.N.S.E.A.. Le nom Prolog est un acronyme de PROgrammation LOGique. Il a été créé par Alain Colmerauer et Philippe...) est utilisé dans de nombreux programmes d’intelligence artificielle et dans le traitement de la linguistique par ordinateur (surtout ceux concernant les langages naturels). Sa syntaxe et sa sémantique sont considérées comme très simples et claires (le but original était de procurer un outil (Un outil est un objet finalisé utilisé par un être vivant dans le but d'augmenter son efficacité naturelle dans l'action. Cette augmentation se traduit par la simplification des actions entreprises, par une plus...) pour les linguistes ignorant l’informatique). Beaucoup de recherches menant à l’implémentation actuelle de Prolog vinrent des effets du projet (Un projet est un engagement irréversible de résultat incertain, non reproductible a priori à l’identique, nécessitant le concours et l’intégration...) pour les ordinateurs de la cinquième génération qui utilisaient comme base une variante.

Prolog est basé sur le calcul des prédicats (Le calcul des prédicats du premier ordre, ou calcul des relations, ou logique du premier ordre, ou tout simplement calcul des prédicats est une formalisation du langage des mathématiques proposée par les...) du premier ordre ; cependant il est restreint dans sa version initiale à n’accepter que les clauses de Horn (les versions modernes de Prolog acceptent des prédicats plus complexes, notamment avec le traitement de la négation par l'échec). L’exécution d’un programme Prolog est effectivement une application du théorème (Un théorème est une proposition qui peut être mathématiquement démontrée, c'est-à-dire une assertion qui peut être établie comme vraie au travers d'un raisonnement logique...) prouvant par résolution du premier ordre. Les concepts fondamentaux sont l’unification, la récursivité et le retour sur trace (TRACE est un télescope spatial de la NASA conçu pour étudier la connexion entre le champ magnétique à petite échelle du Soleil et la géométrie du plasma coronal, à...). L'algorithme de résolution de Prolog est basé sur une extension de la SLD-résolution.

Une des particularités de Prolog est que l'on peut construire une base de connaissances dans un ordre indéterminé. Prolog peut ensuite résoudre des séries de problèmes logiques relatifs à une telle base de connaissances (notion base de données (En informatique, une base de données (Abr. : « BD » ou « BDD ») est un lot d'informations stockées dans un dispositif informatique. Les technologies...) déductive).

Les différents types de termes

Prolog n’emploie pas des types de données (Dans les technologies de l'information (TI), une donnée est une description élémentaire, souvent codée, d'une chose, d'une transaction d'affaire, d'un événement,...) selon la manière habituelle des langages de programmation (La programmation dans le domaine informatique est l'ensemble des activités qui permettent l'écriture des programmes informatiques. C'est une étape importante de la conception de logiciel (voire de matériel, cf. VHDL).). Ceci est principalement dû au fait qu'en Prolog, il n'y a pas de distinction réelle entre les données du programme et le programme lui-même (principe de la programmation déclarative). Nous devons parler à ce propos des éléments lexicaux, appelés termes, et qui englobent les types suivants.

Atomes

Les textes constants sont introduits sous forme d’atomes. Un atome (Un atome (du grec ατομος, atomos, « que l'on ne peut diviser ») est la plus petite partie d'un corps simple pouvant se combiner chimiquement avec une autre. Il est...) est une séquence consistant en lettres, nombres et sous-tirets, qui commence par une lettre minuscule. Habituellement, si un atome (Un atome (grec ancien ἄτομος [atomos], « que l'on ne peut diviser ») est la plus petite partie d'un...) non alphanumérique est nécessaire, il est entouré d'apostrophes (par exemple '+' est un atome, + est un opérateur).

Nombres

La plupart des implémentations Prolog ne font pas de différence entre des nombres entiers et à virgule flottante.

Variables

Les variables sont indiquées en utilisant un ensemble (En théorie des ensembles, un ensemble désigne intuitivement une collection d’objets (les éléments de l'ensemble), « une multitude qui...) de lettres, nombres et caractères de soulignement et commençant avec une lettre majuscule.

Par exemple "X3" et "Prix_Unitaire" sont des noms de variables.

Dans l’environnement Prolog, à la différence des langages de programmation procéduraux, une variable (En mathématiques et en logique, une variable est représentée par un symbole. Elle est utilisée pour marquer un rôle dans une formule, un prédicat ou un algorithme. En...) n’est pas un contenant auquel on peut affecter une valeur. Son comportement est plus proche d’une forme, initialement indéfinie, que l'on précise de plus en plus par unification (Le concept d'unification est une notion centrale de la logique des prédicats ainsi que d'autres systèmes de logique et est sans doute ce qui distingue le plus Prolog des autres langages de programmation.). Une fois que la variable est unifiée, sa valeur ne peut plus être modifiée au sein d'une même branche d'évaluation (le retour sur trace permet toutefois de revenir sur cette unification).

La variable anonyme est écrite avec un tiret bas (_). Toute variable dont le nom commence par un tiret bas est également une variable anonyme.

Termes composés

Les termes composés sont les seules façons dont Prolog peut représenter des données complexes. Un terme composé consiste en une tête, aussi appelée foncteur (qui doit être un atome), et des paramètres (sans restriction de type). Le nombre (La notion de nombre en linguistique est traitée à l’article « Nombre grammatical ».) de paramètres, aussi appelé arité du terme, est significatif. Un terme composé est identifié par sa tête et son arité, il est habituellement écrit comme foncteur/arité.

Exemples de termes composés :

  • aime(romeo,juliette)
Le foncteur est aime et l'arité 2, le terme composé s'écrit aime/2.
  • f(g(X),h(Y))
Le foncteur est f et l'arité 2, le terme composé s'écrit f/2.
  • initialisation
Le foncteur est initialisation et l'arité 0, le terme composé s'écrit initialisation/0. Un atome est donc un terme composé d'arité 0.

Listes

Une liste n’est pas un type de données isolé, car elle est définie par une construction récursive (utilisant le foncteur . d'arité 2, c'est donc au niveau de la représentation interne (En France, ce nom désigne un médecin, un pharmacien ou un chirurgien-dentiste, à la fois en activité et en formation à l'hôpital ou en cabinet pendant une durée variable selon le "Diplôme...) un terme composé) :

  1. l'atome [] est une liste vide ;
  2. si T est une liste et H est un élément, alors le terme '.'(H, T) est une liste.

Le premier élément, appelé la tête, est H, suivi par les contenus du reste de la liste, indiqué comme T ou queue. La liste [1, 2, 3] serait représentée en interne comme '.'(1, '.'(2, '.'(3, []))) Un raccourci de syntaxe est [H | T], lequel est surtout utilisé pour construire des règles. La totalité d’une liste peut être traitée en agissant sur le premier élément, et ensuite sur le reste de la liste, par récursivité.

Pour la facilité du programmeur (En informatique, un développeur (ou programmeur) est un informaticien qui réalise du logiciel en créant des algorithmes et en les mettant en œuvre dans un langage de programmation.), les listes peuvent être construites et déconstruites de diverses manières.

  • Énumération d'éléments : [abc, 1, f(x), Y, g(A, rst)]
  • Extraction de l'élément de tête : [abc | L1]
  • Extraction de plusieurs éléments de tête : [abc, 1, f(x) | L2]
  • Expansion du terme : '.'(abc, '.'(1, '.'(f(x), '.'(Y, '.'(g(A, rst), [])))))

Chaînes de caractères

Les chaînes de caractères sont en général écrites comme une séquence de caractères entourés par des apostrophes. Elles sont souvent représentées en interne par une liste de codes ASCII.

Page générée en 0.067 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique