(da: “Scuola e Didattica”, Editrice La Scuola,
Brescia, Anno XXXIV, n.5 (15 novembre 1988)
Prima parte: CONOSCENZE
NOZIONISTICHE
Nel tentativo
di introdurre alcuni concetti di informatica non percorrendo la ‘via storica’
dei linguaggi di tipo procedurale, ma imboccando la ‘via razionale’ dei
linguaggi di programmazione logica, l’Autore presenta un’esperienza didattica di
uso del Prolog di cui pubblichiamo qui la prima parte (La redazione)
Il computer,
come tante altre macchine, è costruito con plastica, vetro, metalli, ecc. e
consuma energia (energia elettrica) per eseguire la sua specifica lavorazione.
Mentre una comune macchina trasforma, ad esempio, un pezzo di legno o di ferro
grezzi in un utensile, il computer “lavora” informazioni.
Le informazioni sono qualcosa di immateriale: per immetterle nel
computer (come materia prima) o per prelevarle (come prodotto finito) occorre
individuare un “linguaggio” che sia comune a noi e al computer stesso. Il PROLOG
è uno di questi linguaggi: ci permette di utilizzare la macchina-computer per
fare informatica, cioè il trattamento automatico delle informazioni.
Per comunicare con la nostra macchina, ci serviremo, dapprima,
solo di frasi molto semplici e, precisamente, di frasi che esprimono una
relazione fra due entità. Esempio:
Il topo mangia il formaggio.
Si può tradurre in PROLOG così:
mangia(topo,formaggio).
Cioè: * non sono stati trascritti gli articoli;
* si è dato un rilievo particolare al predicato verbale;
* sono comparsi segni grafici nuovi.
L’elemento che precede la parentesi,cioè “mangia” è
chiamato PREDICATO mentre gli elementi dentro le parentesi tonde (cioè “topo” e
“formaggio”) separati da virgole, sono chiamati ARGOMENTI.
In PROLOG: – ogni frase semplice (o affermazione o proposizione)
è costituita da un PREDICATO e dai suoi ARGOMENTI;
– gli ARGOMENTI sono separati da virgole e sono racchiusi da
parentesi tonde;
– ogni frase deve terminare con il punto.
Anche l’ordine degli argomenti è importante: fatta una scelta,
occorre restare coerenti con essa. Nel nostro caso, abbiamo scelto di mettere il
soggetto (cioè topo) come primo argomento, per favorire la leggibilità della
frase PROLOG.
Il computer è in grado di recepire una frase PROLOG del tipo
mangia(topo,formaggio).
e di interpretarla, previa traduzione, che esegue
automaticamente, nel linguaggio suo proprio (detto linguaggio macchina,
costruito con un alfabeto di due soli segni). A noi invece tocca fare lo sforzo
di tradurre le informazioni dall’Italiano in PROLOG, quando mandiamo messaggi
al computer e, viceversa, quando riceviamo messaggi dal computer.
Facciamo ancora qualche esercizio di traduzione:
Italiano: studio storia.
PROLOG : studio(io,storia).
E’ stato esplicitato il soggetto. Ed ancora:
Italiano: Marco studia storia e italiano.
PROLOG : studia(marco,storia).
studia(marco,italiano).
Si è scelta questa forma di traduzione, per mantenere invariato
lo schema di frase prescelto.
Già siamo in grado di colloquiare col computer. Ne approfittiamo
subito per fargli un “discorsino” e quindi per interrogarlo in merito.
Supponiamo che la nostra conoscenza relativa alle città di
residenza di alcune persone sia la seguente:
Marco e Tiziana abitano a Roma, Giovanni a Milano, Louis a
Parigi. Parigi è capitale della Francia, Roma dell’Italia.
Tale conoscenza si può riscrivere così:
Marco abita a Roma.
Giovanni abita a Milano.
Louis abita a Parigi.
Tiziana abita a Roma.
Roma è capitale dell’Italia.
Parigi è capitale della Francia.
Traducendo le frasi ad una ad una in PROLOG, avremo:
abita_a(marco,roma).
abita_a(giovanni,milano).
abita_a(louis,parigi).
abita_a(tiziana,roma).
è_capitale_di(roma,italia).
è_capitale_di(parigi,francia).
Affermazioni di questo tipo vengono chiamate, in gergo, FATTI.
La conoscenza ora può essere comunicata al computer: basta
battere sulla tastiera tutte le frasi PROLOG in cui l’abbiamo tradotta. In
pratica abbiamo scritto un PROGRAMMA in linguaggio PROLOG o, come noi
preferiamo, abbiamo descritto un AMBIENTE. A questo punto il computer è già in
grado di lavorare per noi, cioè di rispondere alle domande o, come si dice in
gergo, di raggiungere l’obiettivo, che noi gli assegneremo.
Anche le domande, ovviamente, dovranno essere formulate in
PROLOG: saranno frasi costituite, ognuna, da un PREDICATO (e dai suoi argomenti)
appartenente all’AMBIENTE, e dovranno essere scritte nel punto dello schermo che
il computer stesso ci indicherà. Distinguiamo due tipi di domande.
DOMANDE DI VERIFICA (CHECK)
Sono domande che ci permettono di verificare, ad esempio, se la
conoscenza è stata “recepita”. Infatti:
alla domanda:
abita_a(marco,roma).
il computer risponde: VERO.
In pratica il computer, ricevuta la frase-domanda, si mette
subito al lavoro per dimostrare che essa, nel nostro AMBIENTE, è vera. Al
contrario ogni frase-domanda che il computer non può dimostrare essere vera,
nel nostro AMBIENTE, ottiene come risposta: FALSO. Esempio:
alla domanda: capitale_di(madrid,francia).
il computer risponde: FALSO.
alla domanda: capitale_di(madrid,spagna).
il computer risponde: FALSO.
Finora abbiamo utilizzato domande in cui entrambe le entità
(legate dalla relazione espressa dal predicato) sono note: il computer controlla
se, sulla base delle informazioni presenti nell’AMBIENTE, sussiste, fra quelle
entità, la relazione indicata e risponde di conseguenza VERO o FALSO.
Queste domande sono dette di tipo CHECK o di CONTROLLO o di
VERIFICA.
DOMANDE DI RICERCA (GENERATE)
Consideriamo la domanda:
chi abita a Milano?
Sembra, a prima vista, che la frase non possa essere tradotta in
PROLOG, in quanto ci è sconosciuta una delle entità della relazione: non
sappiamo come tradurre il pronome o sostituente “Chi”. Infatti avremmo in
PROLOG: _______
abita_a(_______,milano).
dove la cornice contorna lo spazio dell’entità mancante, cioè
segna un posto vuoto. Sappiamo però che questa entità (se esiste) appartiene
all’insieme delle persone che godono della proprietà di abitare a Milano.
Siamo di fronte ad una “FRASE APERTA”, frase della quale al momento non si può
stabilire se è vera o falsa. Solo riempiendo il posto con una determinata
entità, potremo stabilire, in base all’entità stessa e alle informazioni
disponibili, se la frase è vera o falsa.
Ebbene, il computer accetta, come domanda, anche una “FRASE
APERTA”. Però la cornice (o posto vuoto) deve essere sostituita da una
lettera maiuscola o da una sequenza di caratteri che cominci con una lettera
maiuscola: VARIABILE.
Per favorire la leggibilità, utilizzeremo, come VARIABILE, una
lettera o un vocabolo che richiami l’entità o il tipo di entità oggetto della
domanda.
Potremmo scrivere, ad esempio, nel nostro caso:
Domanda: abita_a(Persona,milano).
Il computer risponderà:
Persona=giovanni
Analogamente:
Domanda:abita_a(Persona,roma).
Il computer risponderà:
Persona=marco
Persona=tiziana
Si possono porre domande analoghe mediante il predicato
è_capitale_di.
Si possono, inoltre, porre domande con più di una variabile.
Esempio: Domanda: è_capitale_di(Capitale,Stato).
Il computer risponderà:
Capitale=roma Stato=italia
Capitale=parigi Stato=francia
Analogamente: Domanda: abita_a(Persona,Luogo).
Il computer risponderà:
Persona=marco Luogo=roma
Persona=giovanni Luogo=milano
Persona=louis Luogo=parigi
Persona=tiziana Luogo=roma
Abbiamo imparato a descrivere un frammento di conoscenza in
PROLOG mediante frasi semplici, cioè costituite da un solo predicato, che
abbiamo chiamato FATTI. In pratica, scelto un tema, le conoscenze relative a
questo tema sono state tradotte in FATTI ed in base a quei FATTI il computer
risponde a nostre domande, espresse anch’esse nella forma di frasi semplici.
Finora abbiamo imparato a gestire le cosiddette informazioni nozionistiche. Il
computer è stato messo in grado di restituirci le informazioni che noi abbiamo
fornito, così come gliele abbiamo fornite: abbiamo imparato a utilizzare solo
alcune potenzialità del computer, quali la memoria e la ricerca veloce dei dati.
La prossima volta pretenderemo dal computer qualcosa di più.
Vogliamo infatti che il computer impari a ricavare nuove conoscenze dalle
conoscenze di base. E’ possibile, se…. gli insegniamo come fare: dovremo cioè
fornirgli REGOLE. Considereremo frasi del tipo:
Se la mamma sta in casa, Marco studia la lezione.
E vedremo, soprattutto, come il computer è in grado, in certi
ambiti, di “dedurre conoscenze da conoscenze” (in gergo, inferire), alla
stregua di quanto avviene, ad esempio, nel famoso sillogismo aristotelico:
Tutti gli uomini sono mortali.
Socrate è uomo.
_____________________________
Socrate è mortale.
|