Prolog: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
→Sintassi: Regole e fatti da wikipedia inglese, saltando qualcosa |
m link verso la voce relativa alla Risoluzione |
||
(34 versioni intermedie di 18 utenti non mostrate) | |||
Riga 4:
|didascalia =
|autore = [[Alain Colmerauer]]
|data = [[1972]]
|versione =
|utilizzo = linguaggio general-purpose
|paradigmi = [[Programmazione logica]]
|tipizzazione = non esistono tipi di dati
|specifiche = ISO/IEC 13211-1 (1995)
|estensione = .pl .pro .P
|influenzato_da = <!-- Lista di linguaggi che hanno influenzato il linguaggio in esame, citare le fonti -->
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)
Il Prolog è impiegato in molti programmi di [[intelligenza artificiale]]
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]].
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''
* Un '''atomo''' è un nome generico senza significato intrinseco,
* Un '''numero''' può essere intero o decimale.
* Una '''variabile''' è indicata per mezzo di una stringa di lettere, numeri e
* Un '''termine composto''' è formato da un atomo detto "funtore" e da uno o più argomenti - anch'essi termini - scritti tra parentesi e separati da virgole, p.es. <code>
Casi speciali di termini composti:
* Una '''lista''' è una collezione ordinata di termini, separati da virgole; viene indicata per mezzo di parentesi quadre; è ammessa la lista vuota <code>[]</code>. Esempi: <code>[1,2,3]</code> e <code>[rosso,verde,blu]</code>.
Riga 49:
Una '''regola''' ha la forma:
<syntaxhighlight lang="prolog">
Testa :- Corpo.
</syntaxhighlight>
che si legge: "Testa è vera se Corpo è vero
Un singolo termine (anche composto), senza il segno
<syntaxhighlight lang="prolog">
gatto(tommaso).
</syntaxhighlight>
== Programma di esempio ==
===
Il seguente esempio stampa il testo "[[Hello world]]".
<syntaxhighlight lang="prolog">
Line 87 ⟶ 91:
== Implementazioni ==
{{div col}}
* [http://www.jiprolog.com JIProlog]▼
* Amzi! Prolog▼
* Ciao Prolog
* [[GNU Prolog]]
* YAP Prolog▼
* [[SWI-Prolog]]▼
* SICStus Prolog▼
▲* Amzi! Prolog
* Lpa Prolog
* Prolog.NET
▲* SICStus Prolog
* XSB▼
*
▲* [[SWI-Prolog]]
▲* [http://eclipseclp.org/ ECLiPSe]
* [https://web.archive.org/web/20190317003033/http://apice.unibo.it/xwiki/bin/view/Tuprolog/WebHome tuProlog]
▲* [[Visual Prolog]] (ex Turbo Prolog)
▲* [[XSB]]
▲* YAP Prolog
{{div col end}}
== Bibliografia ==
*{{RivistaVG|list|8/9|28-30|9/10|1987|titolo=Le basi logiche del Prolog}}
* Patrick Blackburn, Johan Bos, Kristina Striegnitz: ''Learn Prolog Now!''[http://www.learnprolognow.org] College Publications, 2006, ISBN 1-904987-17-6▼
*{{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
* {{en}} J. A. Robinson, ''A Machine-Oriented Logic Based on the Resolution Principle
== Voci correlate ==
Line 116 ⟶ 122:
== Collegamenti esterni ==
*
* {{en}} [http://www.prolog.info Prolog.info] Notizie e risorse sul Prolog e AI.
{{Principali linguaggi di programmazione}}
{{Controllo di autorità}}
{{portale|informatica}}
[[Categoria:Linguaggi di programmazione logica]]
|