La programmazione logica è un paradigma di programmazione informatica che ha le sue basi nella logica matematica in cui le dichiarazioni del programma esprimono fatti e regole sui problemi all'interno di un sistema.
Le regole sono scritte come clausole logiche con una testa e un corpo. Seguono anche un approccio dichiarativo piuttosto che imperativo.
Per capire come risolvere un problema nella programmazione logica, è necessario conoscere i blocchi costitutivi: fatti e regole.
Differenza tra programmazione imperativa e programmazione dichiarativa. Immagina di entrare nel tuo locale preferito e di ordinare un caffè.
L'approccio imperativo sarà:
- Entra nella caffetteria
- Fai la fila e attendi che il barista ti chieda il tuo ordine
- Ordine
- Sì, per asporto, per favore
- Pagare
- Presenta la tua carta fedeltà per raccogliere punti
- Prendi il tuo ordine e vattene L'approccio dichiarativo:
- Un grande latte da asporto, per favore
Quindi, piuttosto che fornire un'istruzione passo-passo (imperativo), dici al sistema di cosa hai bisogno e lasci che provi a trovare una soluzione (dichiarativa).
Prolog segue il paradigma logico ed è probabilmente il linguaggio più famoso della famiglia di programmatori logici.
- I fatti sono affermazioni fondamentali sul dominio del problema
- (ad es. "Socrate è un uomo")
- Le regole sono inferenze sui fatti nel dominio
- (ad es. "Tutti gli uomini sono mortali").
- Le query sono domande su quel dominio
- (ad es. "Socrate è mortale?")
- La programmazione logica può essere utilizzata per esprimere la conoscenza in un modo che non dipende da implementazione, rendendo i programmi più flessibili, compressi e comprensibili.
- Consente di separare la conoscenza dall'uso, ovvero è possibile modificare l'architettura della macchina senza cambiare i programmi o il loro codice sottostante.
- Può essere modificato ed esteso in modo naturale per supportare forme speciali di conoscenza, ad esempio come meta-livello di conoscenza di ordine superiore.
- Può essere utilizzato in discipline non computazionali basandosi su ragionamento e mezzi precisi di espressione.