human
Veuillez expliquer ce qu'est la "programmation logique"
gpt
La programmation logique est un paradigme de programmation largement basé sur la logique formelle. Tout programme écrit dans un langage de programmation logique est un ensemble de phrases sous forme logique, exprimant des faits et des règles sur un domaine problématique. Les principales familles de langages de programmation logique incluent Prolog, la programmation par ensemble de réponses (ASP) et Datalog. Dans tous ces langages, les règles sont écrites sous forme de clauses :
et sont lus de manière déclarative comme des implications logiques :
H est appelé la tête de la règle et B1, ..., Bn est appelé le corps. Les faits sont des règles qui n'ont pas de corps, et qui s'écrivent sous la forme simplifiée :
Dans le cas le plus simple où H, B1, ..., Bn sont toutes des formules atomiques, ces clauses sont appelées clauses définies ou clauses de Horn. Cependant, il existe de nombreuses extensions de ce cas simple, la plus importante étant le cas où les conditions dans le corps d'une clause peuvent également être des négations de formules atomiques. Les langages de programmation logique qui incluent cette extension ont les capacités de représentation des connaissances d'une logique non monotone.
En ASP et Datalog, les programmes logiques n'ont qu'une lecture déclarative, et leur exécution est effectuée au moyen d'une procédure de preuve ou d'un générateur de modèle dont le comportement n'est pas destiné à être contrôlé par le programmeur. Cependant, dans la famille des langages Prolog, les programmes logiques ont également une interprétation procédurale en tant que procédures de réduction de but :
Considérez la clause suivante comme exemple :
basé sur un exemple utilisé par Terry Winograd pour illustrer le langage de programmation Planner. En tant que clause dans un programme logique, elle peut être utilisée à la fois comme procédure pour tester si X est faillible en testant si X est humain, et comme procédure pour trouver un X qui est faillible en trouvant un X qui est humain. Même les faits ont une interprétation procédurale. Par exemple, la clause :
peut être utilisé à la fois comme une procédure pour montrer que Socrate est humain, et comme une procédure pour trouver un X qui est humain en "assignant" Socrate à X.
La lecture déclarative des programmes logiques peut être utilisée par un programmeur pour vérifier leur exactitude. De plus, les techniques de transformation de programme basées sur la logique peuvent également être utilisées pour transformer des programmes logiques en programmes logiquement équivalents qui sont plus efficaces. Dans la famille Prolog des langages de programmation logique, le programmeur peut également utiliser le comportement connu de résolution de problèmes du mécanisme d'exécution pour améliorer l'efficacité des programmes.