|
L'informatica nella scuola usando il PROLOG (prima puntata) |
|
(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. |
|
|