Skip to content

Latest commit

 

History

History
45 lines (32 loc) · 2.22 KB

003_Programmazione_logica.md

File metadata and controls

45 lines (32 loc) · 2.22 KB

Programmazione logica

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?")

Caratteristiche della programmazione logica

  • 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.