software.wikisort.org - Linguaggio

Search / Calendar

Il Prolog (contrazione del francese PROgrammation en LOGique) è un linguaggio di programmazione che adotta il paradigma di programmazione logica.

Prolog
linguaggio di programmazione
AutoreAlain Colmerauer
Data di origine1972
Utilizzolinguaggio general-purpose
ParadigmiProgrammazione logica
Tipizzazionenon esistono tipi di dati
Specifiche di linguaggioISO/IEC 13211-1 (1995)
Estensioni comuni.pl .pro .P
Influenzato daPlanner

È stato ideato da Robert Kowalski (aspetto teorico), Marten Van Emdem (dimostrazione sperimentale) e implementato da Alain Colmerauer negli anni settanta, costituendo un tentativo di costruire un linguaggio di programmazione che consentisse l'espressione del problema in forma logica invece della traduzione di un algoritmo di soluzione in forma di istruzioni da eseguire da parte della macchina. L'attuale implementazione di Prolog è dovuta in gran parte all'efficiente codifica di David H.D. Warren, implementata tramite la sua Warren Abstract Machine (1983).

Il Prolog è impiegato in molti programmi di intelligenza artificiale, la sua sintassi e la semantica sono molto semplici e chiare (lo scopo primitivo era quello di fornire uno strumento di lavoro a linguisti privi di conoscenze informatiche).

Il Prolog si basa sul calcolo dei predicati (precisamente il calcolo di predicati del primo ordine); tuttavia la sintassi è limitata a formule dette clausole di Horn che sono disgiunzioni di letterali del primo ordine quantificate universalmente con al più un letterale positivo.

L'esecuzione di un programma Prolog è comparabile alla dimostrazione di un teorema mediante la regola di inferenza detta risoluzione (introdotta da Robinson nel 1965). I concetti fondamentali sono l'unificazione, la ricorsione in coda e il backtracking.

Molti linguaggi, come Datalog o AnsProlog, sono basati su Prolog.


Sintassi


Nel Prolog, la logica del programma è espressa sotto forma di relazioni e le attività di calcolo vengono attivate da un'interrogazione relativa a tali relazioni.


Tipi di dati


L'elemento generico del Prolog si chiama termine. I termini possono essere costanti (atomi o numeri), variabili o termini composti.

Casi speciali di termini composti:


Regole e fatti


Una regola ha la forma:

Testa :- Corpo.

che si legge: "Testa è vera se Corpo è vero." (Si noti che la regola termina con un punto.)

Un singolo termine (anche composto), senza il segno :-, viene chiamato fatto. I fatti equivalgono a regole senza corpo, che sono considerate automaticamente vere. Un esempio di fatto è:

gatto(tommaso).

Al di là dell'uso strettamente previsto dalla teoria, il Prolog offre anche dei predicati speciali che servono per input/output e altre attività accessorie. P.es. write/1 visualizza un termine sullo schermo.


Programma di esempio



Hello, world!


Il seguente esempio stampa il testo "Hello world".

?- write('Hello World'), nl.

Permutazioni


La potenza di Prolog non risiede comunque nella sua gestione dell'input/output, quanto nella possibilità di rappresentare semplicemente concetti complessi, ad esempio algoritmi combinatori. Ecco un programma che calcola tutte le possibili permutazioni di una parola data come lista di caratteri:

permutation([],[]).
permutation(Xs,[Z|Zs]) :- select(Z,Xs,Ys), permutation(Ys,Zs).
select(X,[X|Xs],Xs).
select(Y,[X|Xs],[X|Ys]) :- select(Y,Xs,Ys).

Meta-Interpretazione


In Prolog è semplice scrivere interpreti e compilatori. Ad esempio, un meta-interprete di Prolog (cioè un interprete Prolog scritto in Prolog) è costituito da solo 3 linee di codice:

vanilla(true).
vanilla((A,B)):- vanilla(A), vanilla(B).
vanilla(X):- X\==true, clause(X,B), vanilla(B).

Implementazioni



Bibliografia



Voci correlate



Altri progetti



Collegamenti esterni


Controllo di autoritàLCCN (EN) sh85107397 · BNF (FR) cb11970224v (data) · J9U (EN, HE) 987007538888605171
Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica

На других языках


[fr] Prolog

Prolog est un langage de programmation logique. Le nom Prolog est un acronyme de PROgrammation en LOGique. Il a été créé par Alain Colmerauer et Philippe Roussel vers 1972 à Luminy, Marseille. Le but était de créer un langage de programmation où seraient définies les règles logiques attendues d'une solution et de laisser le compilateur la transformer en séquence d'instructions. L'un des gains attendus était une facilité accrue de maintenance des applications, l'ajout ou la suppression de règles au cours du temps n'obligeant pas à réexaminer toutes les autres.
- [it] Prolog

[ru] Пролог (язык программирования)

Пролог (англ. Prolog) — язык и система логического программирования, основанные на языке предикатов математической логики дизъюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка.



Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.org внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2025
WikiSort.org - проект по пересортировке и дополнению контента Википедии