Programmation logique
Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.
Langages à objets
C++ - C# - D
Delphi - Eiffel - Groovy
Java - Lisaac - Python - Ruby
Simula - Smalltalk
Visual Basic - WLangage
Langages impératifs
APL - ASP - Assembleur
BASIC (En programmation, BASIC est un acronyme pour Beginner's All-purpose Symbolic Instruction Code. qui désigne une famille de langages de programmations de haut niveau.) - C - Cobol (COBOL est un langage de programmation de troisième génération créé en 1959 (officiellement le 18 Septembre 1959). Son nom est l'acronyme de COmmon Business Oriented...) - Natural (Natural est un langage de programmation semi-compilé, édité par la société allemande Software AG.)
Forth - Fortran - Limbo
Logo - Pascal - Perl - PHP (PHP (sigle de PHP: Hypertext Preprocessor), est un langage de scripts libre principalement utilisé pour produire des pages Web dynamiques via un serveur HTTP,...)
Langages fonctionnels
Haskell - ML/OCaml
Lisp/Common Lisp
Scheme - XSLT
Langages déclaratifs
Clips - Prolog
Langages concurrents
Ada 95 - Erlang
Voir aussi
Conception - Codage (De façon générale un codage permet de passer d'une représentation des données vers une autre.)
Tests - Optimisations

La programmation logique (La programmation logique est une forme de programmation qui définit les applications à l'aide d'un ensemble de faits élémentaires les concernant et de règles de logique leur...) est une forme 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...) qui définit les applications à l'aide d'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 peut être comprise comme un...) de faits élémentaires les concernant et de règles de logique (La logique (du grec logikê, dérivé de logos (λόγος), terme inventé par Xénocrate signifiant à la fois raison, langage, et raisonnement) est dans une première approche...) leur associant des conséquences plus ou moins directes. Ces faits et ces règles sont exploités par un démonstrateur de 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 construit à partir...) ou moteur (Un moteur est un dispositif transformant une énergie non-mécanique (éolienne, chimique, électrique, thermique par exemple) en une énergie mécanique ou travail.[réf. nécessaire]) d'inférence, en réaction à une question ou requête (Le mot requête, synonyme de demande, est employé dans les domaines suivants :).

Cette approche se révèle beaucoup plus souple que la définition (Une définition est un discours qui dit ce qu'est une chose ou ce que signifie un nom. D'où la division entre les définitions réelles et les définitions nominales.) d'une succession d'instructions que l'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 circuits électroniques...) exécuterait. La programmation logique est considérée comme une programmation déclarative (La programmation déclarative est un paradigme de programmation. Il consiste à créer des applications sur la base de composants logiciels indépendant du contexte et ne comportant aucun état interne. Autrement dit, l'appel d'un de...) plutôt qu’impérative, car elle s'attache davantage au quoi qu'au comment, le moteur (Un moteur (du latin mōtor : « celui qui remue ») est un dispositif qui déplace de la matière en apportant de la...) assumant une large part des enchaînements. Elle est particulièrement adaptée aux besoins de l’intelligence artificielle, dont elle est un des principaux outils.

Vers la démonstration (En mathématiques, une démonstration permet d'établir une proposition à partir de propositions initiales, ou précédemment démontrées à...) automatique (L'automatique fait partie des sciences de l'ingénieur. Cette discipline traite de la modélisation, de l'analyse, de la commande et, de la régulation des systèmes dynamiques. Elle a pour fondements théoriques les...)

Dans les années 1930, Herbrand avait posé les conditions de validité d'une démonstration automatique. En 1953, Quine (Quine désigne le fait d'avoir une ligne dans ce même jeu.) donnait une règle d'inférence originale ; définie pour l'ordre O, elle présentait peu d'intérêt si ce n'est pour améliorer le calcul des circuits logiques. En 1965, Robinson donnait sa Méthode de Résolution : il basait une démonstration automatique sur les conditions d'Herbrand, avec un raisonnement par l'absurde utilisant des énoncés logiques mis sous forme clausale, et une Règle de Résolution, extension à l'ordre 1 de la règle de Quine. Les premiers essais montrèrent que l'idée y était, mais qu'il restait à en trouver une expression efficace : ce sera Prolog.

Approche informatique (L´informatique - contraction d´information et automatique - est le domaine d'activité scientifique, technique et industriel en rapport avec le traitement automatique de l'information par des...)

En 1958, John McCarthy (John McCarthy (né le 4 septembre 1927, à Boston, Massachusetts) est le principal pionnier de l'intelligence artificielle avec Marvin Minsky ; il incarne le courant mettant l'accent sur la logique symbolique.) proposait déjà d’utiliser la logique comme langage declaratif de representation des connaissances, un démonstrateur de théorème devenant un résolveur de problème. La résolution de problèmes est alors répartie entre le cogniticien, responsable de la validité de l’application exprimée logiquement, et le moteur d’inférence, responsable d’une exécution valide et efficace.

En un sens (SENS (Strategies for Engineered Negligible Senescence) est un projet scientifique qui a pour but l'extension radicale de l'espérance de vie humaine. Par une...) plus étroit et plus commun, la programmation logique joue (La joue est la partie du visage qui recouvre la cavité buccale, fermée par les mâchoires. On appelle aussi joue le muscle qui sert...) sur une ambivalence représentation declarative/représentation procédurale : ainsi, un raisonnement régressif associera à l’implication B1&…&Bn → H une procédure " pour établir H, établir B1 puis… puis Bn ". De ce fait, au nom de l’efficacité, le 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.) peut être amené à exploiter les propriétés physiques du démonstrateur, se rapprochant ainsi d’une programmation classique. Cependant, les programmes logiques gardent toujours une interprétation logique pure permettant de garantir leur correction, et, du fait de leur caractère déclaratif, sont plus abstraits que leur contrepartie impérative, tout (Le tout compris comme ensemble de ce qui existe est souvent interprété comme le monde ou l'univers.) en restant exécutables.

Les premières applications de la programmation logique (1964-69) concernèrent des systèmes de questions/réponses. Absys (1969) fut probablement le premier langage de programmation (Un langage de programmation est un langage informatique, permettant à un être humain d'écrire un code source qui sera analysé par...) à base d’assertions.

La programmation logique au sens étroit remonte aux débats de cette époque concernant la représentation des connaissances en intelligence artificielle (L'intelligence artificielle ou informatique cognitive est la « recherche de moyens susceptibles de doter les systèmes informatiques de capacités intellectuelles comparables à celles...). Stanford et Édimbourg, avec J. McCarthy et Kowalski, tenaient pour une représentation déclarative, et le MIT, avec Marvin Minsky (Marvin Lee Minsky (né le 9 août 1927) est un scientifique américain. Il travaille dans le domaine des sciences cognitives et de l'intelligence artificielle. Il est également cofondateur, avec l'informaticien John...) et Seymour Papert, pour une représentation procédurale.

Planner (Hewitt 1969), langage basé sur la logique, émergea cependant au MIT. Son sous-ensemble (En mathématiques, un ensemble A est un sous-ensemble ou une partie d’un ensemble B, ou encore B est sur-ensemble de A, si tout élément du sous-ensemble A est aussi élément du sur-ensemble B. Il peut par...) Micro-Planner (Sussman, Charniak, Winograd) fut utilisé par Winograd pour SHRDLU, programme basé sur l’interprétation d’un dialogue (Le dialogue est une communication entre deux ou plusieurs personnes ou groupes de personnes. Il doit y avoir au minimum un émetteur et un récepteur. Une donnée émise, c'est le message. Un code, c'est la langue et/ou le jargon. Un...) en langue naturelle. Planner invoquait des plans procéduraux à partir de buts et d’assertions, et utilisait des reprises en arrière pour ménager le peu de mémoire (D'une manière générale, la mémoire est le stockage de l'information. C'est aussi le souvenir d'une information.) disponible. Dérivèrent de Planner QA-4, Popler, Conniver, QLISP, Ether.

Cependant, Hayes et Kowalski à Édimbourg essayaient de réconcilier approche déclarative et représentation des connaissances avec l’approche procédurale à la Planner. Hayes (1973) developpa un langage équationnel, Golux, qui pouvait invoquer diverses procedures en altérant le fonctionnement du moteur d’inférence. Kowalski montrait par ailleurs que la SL-resolution traitait les implications comme procédures réductrices des buts.

L'Avènement de Prolog

Alain Colmerauer (Alain Marie Albert Colmerauer (né le 24 janvier 1941 à Carcassonne) est un informaticien français, initiateur du langage de programmation Prolog.), universitaire français passé (Le passé est d'abord un concept lié au temps : il est constitué de l'ensemble des configurations successives du monde et s'oppose au futur sur une...) de la compilation à la traduction automatique (Montréal, 1967-70), eut d'abord l’idée des Q-systèmes (1969), formés de règles de réécriture d’arbres, invoquées selon les besoins et utilisant l’unification. Ces systèmes furent à la base d’une chaîne (Le mot chaîne peut avoir plusieurs significations :) de traduction anglais→français, puis de la rédaction du système Météo qui, au Canada, traduit chaque jour (Le jour ou la journée est l'intervalle qui sépare le lever du coucher du Soleil ; c'est la période entre deux nuits, pendant laquelle les rayons du...) les bulletins météorologiques de l’anglais au français.

Après 1970, Colmerauer revenu à Marseille s’intéressa davantage à l’exploitation de textes qu’à leur traduction ; voulant utiliser la logique pour représenter la sémantique aussi bien que pour les raisonnements liés aux questions, il s’intéressa aux travaux de Robinson sur le Principe de Résolution.

Durant l’été 1971, Colmerauer et Kowalski virent que la forme clausale pouvait représenter les grammaires formelles et qu’un moteur d’inférence pouvait être utilisé pour l’analyse de textes, certains moteurs fournissant une analyse ascendante, et la SL-résolution de Kowalski une analyse descendante. L’été suivant, ils développèrent l’interprétation procédurale des implications, et établirent qu’on pouvait restreindre les clauses aux clauses de Horn, correspondant à des implications où antécédents et conséquent sont des énoncés atomiques.

A. Colmerauer et P. Roussel développèrent alors le langage Prolog comme 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...) permettant de décrire un monde (Le mot monde peut désigner :) en français, et de traiter ensuite des questions sur ce monde, Prolog servant aussi bien à l’analyse/synthèse en français qu’aux raisonnements élaborant les réponses. Ce premier Prolog diffusa rapidement. L’intérêt de Prolog pour l’interrogation en langue naturelle de bases 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éboucha sur un configurateur pour ordinateurs Solar (Télémécanique), dont dériveront divers systèmes d’interrogation en français, en anglais (Warren), en portugais (Pereira, Lisbonne), puis en allemand.

D'autres applications naquirent parallèlement : composition d'un repas diététique (La diététique est la science de l'alimentation équilibrée. Si la nutrition se définit comme la science qui analyse les rapports entre la...), calcul symbolique, organisation (Une organisation est) d'un voyage (Un voyage est un déplacement effectué vers un point plus ou moins éloigné dans un but personnel (tourisme) ou professionnel (affaires). Le voyage s'est considérablement...) aérien...

1976 vit un premier portage de Prolog sur micro-ordinateur.

En 1977, D. Warren développa à Édimbourg un compilateur Prolog, qui apporta à Prolog la performance qui lui manquait. Le Prolog d’Édimbourg devint ainsi un standard.

Développements

En 1982 sortit Prolog II, qui utilisait des systèmes d’équations plutôt que l’unification, et abordait le traitement des arbres infinis.

À partir de 1987, Prolog III intégrait au niveau de l’unification : une manipulation des arbres, éventuellement infinis, avec un traitement spécifique pour les listes ; un traitement complet de l’algèbre de Boole ; un traitement numérique (Une information numérique (en anglais « digital ») est une information ayant été quantifiée et échantillonnée, par opposition à une information dite...) portant sur l’addition, la multiplication (La multiplication est l'une des quatre opérations de l'arithmétique élémentaire avec l'addition, la soustraction et la division .) par une constante et les relations usuelles.

En 1996, Prolog IV s’attaqua résolument au traitement des contraintes. Programmer par contraintes consiste à formuler un problème en termes d’inconnues soumises à une contrainte, énoncé du premier ordre faisant intervenir des opérations et des relations du domaine de calcul. Résoudre la contrainte, et par là le problème, consiste à trouver les valeurs à attribuer aux variables libres de la formule pour la rendre vraie, ce qui unifie la programmation logique et la programmation mathématique (au sens de la recherche (La recherche scientifique désigne en premier lieu l’ensemble des actions entreprises en vue de produire et de développer les connaissances...) opérationnelle). Au prix d’un moteur dix fois plus gros que pour Prolog II, Prolog IV traite un vaste jeu de contraintes, allant des contraintes sur les listes et les arbres aux contraintes numériques, en passant par les contraintes traitées par réduction des intervalles de valeur, s’appliquant aussi bien aux réels qu’aux entiers voire aux booléens.

Descendance

À partir de Prolog, furent développés par exemple Gödel, Oz ou Visual Prolog. λProlog abordait les logiques d'ordre supérieur. Outre datalog et divers langages de programmation logique sous contraintes, le projet (Un projet est un engagement irréversible de résultat incertain, non reproductible a priori à l’identique, nécessitant le concours et...) japonais d'ordinateurs de 5e génération fut à l'origine de nombreux langages de programmation logique concurrente, tels que plus récemment CS Prolog ou Actor Prolog.

Langages de programmation logique

  • Prolog : Le premier langage de programmation logique ;
  • Oz ;
  • Python : PyPy permet de l'utiliser pour la programmation logique.
Page générée en 1.364 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