Prolog: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
The Prolog system has been discontinued
m link verso la voce relativa alla Risoluzione
 
(7 versioni intermedie di 7 utenti non mostrate)
Riga 22:
Il '''Prolog''' (contrazione del [[Lingua francese|francese]] '''''PRO'''grammation en '''LOG'''ique'') è un [[linguaggio di programmazione]] che adotta il [[paradigma di programmazione|paradigma]] di [[programmazione logica]].
 
È stato ideato da [[Robert Kowalski]] (aspetto teorico), [[Marten Van Emdem]] (dimostrazione sperimentale) e implementato da [[Alain Colmerauer]] negli [[Anni 1970|anni settanta]], costituendoe costituisce un tentativo di costruire un linguaggio di programmazione che consentisseconsenta l'espressione del problema in forma logica, invece dellache in forma traduzione di un [[algoritmo]] di soluzione in forma di istruzioni da eseguire da parteeseguibile delladalla 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, in quanto (lo scopo primitivoper cui venne ideato 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 [[clausola di Horn|clausole di Horn]] che sono disgiunzioni di [[letterale|letterali]] del primo ordine, quantificate universalmente, con al più un letterale positivo.
 
L'esecuzione di un [[Programma (informatica)|programma]] Prolog è comparabile alla dimostrazione di un [[teorema]] mediante la [[regola di inferenza]] detta [[Risoluzione (logica)|risoluzione]] (introdotta da [[John Alan Robinson|Robinson]] nel [[1965]]). I concetti fondamentali sono l'unificazione, la [[algoritmo ricorsivo|ricorsione]] in coda e il [[backtracking]].
I concetti fondamentali sono l'unificazione, la [[algoritmo ricorsivo|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 ===
Line 66 ⟶ 65:
== Programma di esempio ==
 
=== [[Hello world|Hello, world!]] ===
Il seguente esempio stampa il testo "[[Hello world]]".
<syntaxhighlight lang="prolog">
Line 110 ⟶ 109:
 
== Bibliografia ==
*{{RivistaVG|list|8/9|28-30|9/10|1987|titolo=Le basi logiche del Prolog}}
*{{cita testo|url=https://archive.org/stream/LIST1987-08-09#page/n27|titolo=Le basi logiche del Prolog|rivista=LIST|volume=anno 5|numero=n° 8/9|data=15 settembre/15 ottobre 1987|pp=28-30|editore=Edicomp|città=Roma|OCLC=955780660}}
*{{cita testo|url=https://archive.org/stream/IntelligenzaArtificiale1#page/n7|titolo=Il Prolog strumento principe|rivista=Intelligenza Artificiale|numero=1|data=1988|pp=8-12|editore=Arcadia|città=Milano}}
* {{en}} Patrick Blackburn, Johan Bos, Kristina Striegnitz, ''[http://www.learnprolognow.org Learn Prolog Now!] {{Webarchive|url=https://web.archive.org/web/20070826231318/http://www.learnprolognow.org/ |date=26 agosto 2007 }}'', College Publications, 2006, ISBN 1-904987-17-6
* {{en}} J. A. Robinson, ''A Machine-Oriented Logic Based on the Resolution Principle'', in ''Journal of the Association for Computing Machinery'', 12(1), gennaio 1965.