GOLOG est un langage de programmation logique de haut niveau conçu pour la spécification et l'exécution d'actions complexes dans des domaines dynamiques. Il est fondé sur le calcul des situations, un formalisme logique du premier ordre pour raisonner sur l'action et le changement. Développé à l'Université de Toronto, GOLOG permet à un interpréteur de maintenir une caractérisation directe du monde modélisé, permettant aux applications de raisonner sur les préconditions, les effets et les séquences d'actions potentielles avant de s'engager dans un cours d'action spécifique.
Contrairement aux langages procéduraux conventionnels tels que C, qui exécutent des instructions dans un ordre linéaire prédéterminé, GOLOG opère sur un modèle abstrait. Le code source définit le problème et l'interpréteur génère la séquence d'actions, ce qui en fait un langage de programmation de cinquième génération. Cette approche est particulièrement adaptée à des domaines complexes comme la robotique, où le solveur doit déterminer dynamiquement la prochaine action en fonction de l'état actuel.
Contexte historique
Le calcul des situations, le formalisme fondateur de GOLOG, a été proposé pour la première fois par le pionnier de l'IA John McCarthy en 1963. Ce cadre logique a fourni un moyen de représenter les mondes dynamiques, les actions et leurs effets, jetant les bases de langages de programmation ultérieurs capables de raisonner sur l'action et le changement. GOLOG a émergé de cette tradition, intégrant le calcul des situations dans un paradigme de programmation pratique.
Description du langage
Un interpréteur GOLOG maintient automatiquement une caractérisation directe du monde dynamique modélisé, en se basant sur des axiomes fournis par l'utilisateur concernant les préconditions, les effets des actions et l'état initial. Cela permet à l'application de raisonner sur l'état du monde et de considérer les impacts de différentes actions potentielles avant de se concentrer sur une action spécifique. Le langage définit un espace d'états dans lequel un agent est autorisé à opérer, et un chemin est trouvé par recherche dans l'espace d'états. Pour accélérer ce processus, les programmes GOLOG sont souvent réalisés sous forme de réseaux hiérarchiques de tâches.
GOLOG est un langage de programmation logique, distinct des langages de programmation conventionnels. Dans un langage procédural comme C, le programmeur crée une sous-routine avec des instructions que l'ordinateur exécute linéairement. En revanche, GOLOG travaille avec un modèle abstrait, et l'interpréteur génère la séquence d'actions. Le code source définit le problème, et c'est au solveur de trouver la prochaine action, facilitant la gestion de problèmes complexes issus de la robotique et d'autres domaines.
Extensions et dialectes
Au-delà du GOLOG original, plusieurs extensions ont été développées. ConGOLOG fournit la concurrence et les interruptions, permettant des comportements d'agent plus complexes. D'autres dialectes comme IndiGOLOG et Readylog ont été créés pour des applications en temps réel où les lectures de capteurs sont mises à jour à la volée. Ces extensions élargissent l'applicabilité de GOLOG à des environnements dynamiques et interactifs.
Applications
GOLOG a été utilisé pour modéliser le comportement d'agents autonomes, combinant un formalisme d'action basé sur la logique pour décrire l'environnement avec des constructions pour bâtir des actions complexes utilisant des caractéristiques typiques des langages de programmation. Il est appliqué au contrôle de haut niveau des robots et des processus industriels, aux agents virtuels et à la simulation d'événements discrets. De plus, GOLOG peut être utilisé pour développer des systèmes d'agents de type Belief-Desire-Intention (BDI), courants dans les systèmes multi-agents et la robotique cognitive.
Planification et script
Contrairement au langage de définition de domaine de planification (PDDL), GOLOG prend en charge à la fois la planification et le script. La planification implique de définir un état objectif dans le modèle du monde, et le solveur amène le système logique dans cet état. Le script de comportement implémente des procédures réactives qui s'exécutent comme un programme informatique. Par exemple, dans la création d'histoires, l'utilisateur définit ce qui doit être vrai à la fin de l'intrigue. Un solveur applique des actions possibles à la situation actuelle jusqu'à ce que l'état objectif soit atteint, avec la spécification de l'état objectif et des actions possibles réalisée dans le modèle logique du monde. Alternativement, un comportement réactif câblé n'a pas besoin de solveur ; la séquence d'actions est fournie dans un langage de script, et l'interpréteur GOLOG, écrit en Prolog, exécute le script pour amener l'histoire à l'état objectif.
Voir aussi
- situation-calculus (non listé, mais pertinent)
- logic-programming (non listé, mais pertinent)
- Autonomous Agents (non listé, mais pertinent)
- Robotics (non listé, mais pertinent)