Prolog/Introduzione: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Correzione errori comuni - Lista
Diablo (discussione | contributi)
mNessun oggetto della modifica
Riga 3:
{{Da wikificare}}
 
 
Poiché il '''prolog''' è pesantemente basato sulla logica formale, potrebbe essere utile fare prima qualche esperienza prima di iniziare ad impararlo. Prenderci la mano può aiutare a comprendere la parte strettamente teorica. La prima parte di questo testo deve aiutare a comprendere i fondamenti della logica allo scopo di capire meglio come funziona il prolog. Saranno discussi due aspetti della logica: la [[w:logica|logica proposizionale]] e la logica del primo ordine.
== Che cos'è il Prolog? ==
 
Il '''Prolog''' è un linguaggio di programmazione ''dichiarativo''. Ciò significa che in Prolog non scrivete che cosa dovrebbe fare il calcolatore linea per linea, come nei linguaggi procedurali C e Java. L'idea generale dietro i linguaggi dichiarativi è descrivere una situazione. Sulla base di questo codice, l'interprete o il compilatore vi dirà una soluzione. Nel caso del Prolog, vi dirà se una frase di Prolog sia vera o no, e, se contiene le variabili, quali valori devono avere.
Ciò può suonare come una panacea per i programmatori, ma la verità è che il Prolog è usato raramente in questo modo. Benché l'idea dichiarativa sia alla base del Prolog, è possibile vedere il codice di Prolog come procedurale. Un programmatore di Prolog lavorerà secondo la parte del codice che sta leggendo o scrivendo. Il Prolog tuttavia, come esperienza di programmazione procedurale, non è utile (si dice spesso che è più facile da imparare per qualcuno che non abbia alcun'esperienza di programmazione procedurale).
Il Prolog è considerato un linguaggio difficile da padroneggiare, particolarmente quando l'allievo prova a scorrere velocemente le cose, principalmente a causa del modo differente di pensare che l'allievo deve adottare e della quantità di ricorrenza nei programmi in Prolog.
Una volta imparato ad usarlo correttamente, tuttavia, il Prolog può essere molto potente.
 
== Perché imparare Il Prolog ==
 
Imparare il Prolog certamente non sarà sempre fruttuoso quanto imparare [[Dal C al C++|C++]], [[Linguaggio Java|Java]] o [[Linguaggio Python|Python]]. Il Prolog è più utile nelle zone relative alla ricerca in intelligenza artificiale, quali soluzione dei problemi, la progettazione o l'interpretazione di linguaggio naturale. Alcuni campi che non sono rigorosamente IA, quale la costruzione di analizzatori o parser, possono anche trarre giovamento notevole dal Prolog.
Tuttavia anche quelli che non lavorano quotidianamente con sistemi di linguaggio naturale possono trarre beneficio dal Prolog. Poiché il prolog usa determinate tecniche di programmazione che sono considerate difficili o avanzate (come la ricorsione), il Prolog può servire a migliorare la comprensione in queste tecniche.
 
Un programmatore Prolog certamente avrà una comprensione approfondita di tali concetti come la ricorsione, cercando problem trees e constraint logic programming. Il Prolog può persino servire da strumento di abbozzo per provare le idee di programmazione di base prima di realizzarle con linguaggi procedurali. A causa del legame con la logica dei predicati, imparare il prolog può condurre ad una comprensione maggiore della logica di predicato (viceversa, chiunque abbia sperimentato la logica di attributo certamente potrà apprendere meglio il Prolog).
 
Inoltre, se state cercando di migliorare il vostro resume come webdesigner, il Prolog potrebbe non essere la strada da seguire. Il Prolog è ancora principalmente un linguaggio ''universitario''. Ciò non significa che è puramente per fare test o tecniche di outlining. Programmi molto complessi sono stati scritti in Prolog. Soprattutto il Prolog è un linguaggio complesso, potente e elegante, che può ispirare soddisfazione grande ai suoi programmatori (così come una rabbia immensa).
 
L'apprendimento del Prolog richiede una certa attenzione. Come dichiarato prima, impararlo non è facile. Non funziona naturalmente come i linguaggi procedurali e quindi richiede un modo specifico di pensare.
Per impararlo occorre saper apprendere con calma e assorbire bene i concetti prima di andare oltre. È inoltre consigliabile usare più di un testo o manuale nell'apprendimento, per ottenere prospettive multiple su un concetto. Come nota finale, una volta che avrete acquistato padronanza di qualche cosa di ingannevole che non sia spiegato chiaramente qui, sentitevi liberi di modificare questo testo, di modo che altri allievi possano imparare più facilmente.
 
Prima di iniziare devi installare sul tuo sistema un editor di testo ed un compilatore prolog. L'editor di testo ti permette di di scrivere programmi ed il compilatore prolog (chiamato anche '''interprete''') ti permetterà di eseguirli.
 
=== Compilatori ===
 
Le seguenti implementazioni di prolog sono libere (al limite per uso personale o educativo, assicurati di leggere la documentazione legale). Semplicemente scaricane uno ed assicurati di installarlo seguendo le istruzioni del sito web:
 
*[http://www.swi-prolog.org/ SWI Prolog]: un'implementazione open source semplice e robusta conforme ad entrambi gli standards Prolog (ISO and Edinburgh) ed ha molte librerie extra e predicati built-in. Esiste addirittura un kit di strumenti separato per creare finestre e grafica chiamato XPCE. Supporta varie piattaforme.
*[http://pauillac.inria.fr/~diaz/gnu-prolog/ GNU Prolog]: Una implementazione open source relativamente nuova. Ha un supporto per la programmazione in logica vincolata, una estensione di prolog.
*[http://www.visual-prolog.com/ Visual Prolog]: Un ambiente di sviluppo completo per uno sviluppo in stile orientato agli oggetti di Prolog. Include compilatore, linker, editore, editori per il dialogo grafico, sistema di building, debugger, librerie e molto altro.
 
Le seguenti implementazioni di prolog sono proprietarie:
 
*[http://www.sics.se/ SICSTUS Prolog]: Probabilmente la più nota e conosciuta implementazione professionale comprensiva di ambiente di sviluppo per prolog. ISO-conforme, tante librerie e supporto per la programmazione in logica vincolata. Libero solo per una valutazione.
 
*[http://www.sics.se/quintus/ Quintus Prolog]: commerciale sempre della SICSTUS. Valutazione gratuita.
 
=== Text editor ===
 
I programmi che scriverai sono dei semplici files di testo, che possono essere letti e scritti da qualsiasi text editor. Alcune implementazioni di prolog hanno il proprio, per gli altri ecco qui una lista. Molti forniscono le funzioni di base utili per scrivere programmi in prolog, come [[w:indentazione|indentazione]], l'aggiustamento delle parentesi ed alcuni danno anche la possibilitàdi evidenziare le parti importanti del tuo codice prolog.
 
*[http://www.crimsoneditor.com/ Crimson Editor ]: Un editor di testi libero per windows con tanti strumenti.
*[http://www.gnu.org/software/emacs/emacs.html GNU Emacs]: Una implementazione open-source e libera del classico editor di testi stile Unix. Fose non molto agevole, ha un sacco di strumenti.
*[http://www.textpad.com/ Textpad ]: Un text-editor ricco per Windows. La prova è gratuita.
 
== Logica Proposizionale ==