
Il computer, si sa, è la macchina logica per eccellenza. Esso riesce a valutare e a risolvere qualsiasi tipo di problema logico. Il problema principale è quello di fargli capire come farlo, ossia di come insegnarli la tecnica e le regole per arrivare ad una conclusione. Se i tradizionali linguaggi di programmazione non sono proprio il massimo per questo scopo e non danno molto aiuto al programmatore, il Prolog è, senza dubbio, uno dei migliori strumenti per approcciarsi al mondo della logica. In questo articolo, peraltro abbastanza divertente e distensivo, spazieremo nella conoscenza di questo fantastico linguaggio di programmazione, focalizzando soprattutto l'attenzione sulla risoluzione di giochi logici, quiz e problemi matematici e divertenti.
Per spiegare il linguaggio Prolog in maniera approfondita ed esauriente non basterebbero migliaia di pagine di letteratura. Per fortuna oggi, con Internet, l'approccio a tale linguaggio è reso molto abbordabile e semplice.
Lo scopo dell'articolo che stiamo andando ad illustrare è quello di applicare il sistema dell'intelligenza artificiale ai fini della risoluzione dei classici giochi matematici e logici. Tutto ciò sarà fatto con semplici esempi e quiz di ogni genere. Ci limitiamo a dare, inizialmente, qualche breve, ma essenziale premessa, per meglio comprendere i successivi contenuti.
Le basi del Prolog
Si tratta di un linguaggio di programmazione orientato all'intelligenza artificiale, con cui si possono creare programmi e applicazioni di ogni genere. Il suo approccio è decisamente differente dagli altri linguaggi, come il C o il Basic. I listati, infatti, sono strutturati in maniera diversa e un tipico programma in Prolog deve contenere i seguenti elementi:
- Esplicitazione dei fatti;
- Definizione delle regole;
- Formulazione delle domande.
I fatti sono l'elencazione delle proprietà di un oggetto, al fine di farle conoscere al sistema e di formare, in tal modo, la base della conoscenza (database).
Le regole servono per definire le relazioni tra gli oggetti. Con esse il sistema deduce nuove regole logiche, in maniera estremamente affidabile ed efficiente.
Le domande (obiettivi o goal) permettono di interrogare il database per ottenere le risposte desiderate, sulla base delle conoscenze acquisite.
Con un esempio basilare e semplice vediamo come il Prolog riesca ad acquisire le informazioni utili (ma indispensabili) a dedurre nuove informazioni e a visualizzare quanto richiesto dall'operatore.
Primo esempio basilare: Albero genealogico
Il linguaggio in oggetto è specializzato per gestire e risolvere anche problemi di questo tipo. Si tratta di una interessante applicazione che raccoglie i nomi di una famiglia, imposta i ruoli e le figure, infine deduce i rapporti di parentela tra i membri. Ovviamente occorre insegnare al computer le regole per arrivare a tali conclusioni. Il tutto è relativamente semplice.
Il primo passo da affrontare è quello di "dare in pasto" al sistema l'elenco delle persone che compongono la dinastia. Per questo scopo abbiamo creato due predicati:
- maschio(X).
- femmina(Y).
Con questi due predicati si creano le basi di conoscenza, elencando tutte le persone che fanno parte della famiglia. Ad esempio, scrivendo:
maschio(giovanni).
si afferma che Giovanni è un maschio (l'argomento tra parentesi deve essere scritto in minuscolo).
Quando si elencano i nominativi, occorre prestare attenzione a non ripetere gli stessi, in caso contrario il compilatore darebbe dei risultati ripetuti e duplicati. Al limite si possono inserire i dati tra doppie virgolette, sotto forma di stringa, diversificandoli in qualche modo. [...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 5283 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Sto riscoprendo il Prolog 😉 ottimo programma con esempi molto interessanti.
E’ stupefacente programmare in Prolog: niente dichiarazioni di variabili, niente cicli, niente condizioni, niente array, niente di niente……
Allora, è molto facile ??
No, tutt’altro, ma il programmatore può dedicarsi esclusivamente alla formulazione del problema specificando SOLO i fatti e i METODI di risoluzione, senza perdersi in altri “inutili” (in questo caso) statements.
E’ proprio bello!!!
Alo momento sul Web gira il seguente quiz:
Se la figlia di Teresa è la madre di mia figlia, chi sono io per Teresa?
Ci sono riferimenti bibliografici relativi all’articolo sul Prolog? Grazie per l’attenzione, Massimo.
Salve Massimo.
No, nell’articolo non ci sono riferimenti bibliografici. SI tratta inoltre di esempi minimali e generalizzabili che si possono trovare anche in rete, opportunamente adattati al presente articolo.
E’ presente, come puoi vedere, il link da dove scaricare il compilatore.
Saluti e grazie.