libertas.sm logo news informazioni san marino rimini romagna
libertas romagna san marino applicazioni mobile apple android
h 11:18 giovedì 24 maggio 2012/1711 d.F.R. english version

Informatica nella didattica utilizzando il linguaggio prolog (Marino Cecchetti)

Condividi:

 L'informatica nella scuola

usando il  PROLOG (terza puntata)

(“Scuola e Didattica”, Editrice La Scuola, Brescia, Anno XXXIV,  n.10 (15 febbraio 1989)

  

        Parte Terza: IL SOGNO (O LA PROFEZIA) DI LEIBNIZ

Presentiamo su questo numero la parte conclusiva del lavoro dedicato all’informatica con il linguaggio PROLOG (v. nn. 5 e 8 della Rivista).

In questa parte vengono presentate regole e basi di conoscenza del linguaggio in questione (La redazione).

 

Abbiamo già visto che è possibile dialogare col computer. Descritto l'AMBIENTE si possono porre interrogazioni ed il computer risponde a tono. In pratica disponiamo di una macchi­na che sembra in grado di risolvere questioni del tipo: date delle affermazioni, verificare se una certa altra affermazione è "logicamente deducibile" dalle precedenti. Questioni di questa natura sono e sono state oggetto di vivo interesse fin dall'antichità. Già Aristotele aveva individuato un certo numero di forme di ragionamento corrette, dette sillogismi. Consideriamo due esempi di sillogismo aristoteli­co del tipo più noto:

             Tutti gli uomini sono mortali

             Socrate è un uomo

             _____________________________

             Socrate è mortale

 

             Tutti gli ateniesi sono democratici

             Lisippo è ateniese

             _____________________________

             Lisippo è democratico

Se si prende in esame solo la forma delle proposizioni (esulando dal significato), ci si accorge che, nell'un caso e nell'altro, il ragionamento si svolge secondo un identico schema:

             Tutti gli  A  sono  P 

             B è un A

             _____________________

             B è un P

In pratica dalle forme delle due ipotesi (proposizioni sopra la riga) si ricava automaticamente la forma della conclusione (proposizione sotto la riga), con un procedimento indipendente dal significato delle proposizioni. Quindi il sillogismo costituisce una regola sintattica per la con­nessione dimostrativa delle proposizioni, senza riguardo del loro significato: è  una regola di deduzione o inferenza.

Ebbene anche in PROLOG, come nel sillogismo, abbiamo:

  *le premesse: sono le frasi  PROLOG che costituiscono l'AMBIENTE cioè il programma;

  * la conclusione: è la domanda;

  *la regola di deduzione: è una  regola già  presente nel computer (che parla PROLOG), detta REGOLA DI RISO­                                                   LUZIONE.

 

D'altra parte in PROLOG le proposizioni, rispetto a quelle del sillo­gismo, presentano una maggiore varietà di forme; il numero delle premesse è (teoricamente) illimitato; le premesse possono essere o affermazioni di base (FATTI) o affermazioni sotto condi­zione (REGOLE). Quindi il computer si presenta come una macchina in grado di verifi­care se una certa proposizione è "logicamente deducibile" da un gruppo iniziale di proposizioni: esso utilizza, come nel sillogismo, una regola di deduzione di natura sintattica ma è in grado di  operare anche in ambiti più articolati e complessi di quello del sillogismo.

Può essere interessante vedere come si è arrivati a tanto!

Le forme corrette del ragionamento, fin dall'antichità, sono state oggetto di una materia specifica: la logica. Essa rimase a lungo (per quasi due millenni) e si sviluppò all'interno della filosofia, come studio delle argomentazioni valide nello svolgimento di un discorso "convincente". Verso la metà del 1800 si fa preponderante l'apporto della matematica: viene introdotto il "calcolo simbolico" in analogia appunto con quello matema­tico, per garantire alla logica la precisione ed il rigore propri della matematica.

Già nel 1600 Leibniz "sognava" in questi termini: "Io ritengo di poter escogitare una certa scrittura universale, me­diante la quale possiamo eseguire calcoli su ogni genere di argomenti e trovare dimostrazioni come nell'algebra e nell'arit­metica"..."Quo facto quando orientur controversiae, non magis di­sputatione opus erit inter duos philo­sophos, quam inter duos computistas. Suffi­ciet enim calamos in manus sumere sedere­que ad abbacos et sibi mutuo (accito si placet amico) dicere, cal­culemus".

Stupefacente, quel "calculemus"!

In pratica si afferma che un ragionamento dimostrativo potrebbe essere trattato alla stregua di un problema matematico: le pre­messe corrispondono ai dati iniziali, la conclusione alla so­luzione. Come per risolvere un problema si applicano, a partire dai dati iniziali, un certo numero di regole di calcolo per ricavare l'elemento incognito, così nel ragionamento da un gruppo di premesse attra­verso  regole di deduzione si giunge alla conclusione. In entrambi i casi si ha una catena: si passa da un anello  all'altro o con regole di calcolo o con regole logiche: da ciò che si sa e si conosce come vero, si produce "un nuovo" vero. In entrambi i casi occorre disporre prioritariamente di un opportuno linguaggio preciso e rigoroso in cui formalizzare la que­stione, cioè tradurla in nudi simboli, da trattare con regole di manipolazione che non facciano riferimento al contenuto di significa­to.

Accogliendo il suggerimento di Leibniz, ripensiamo al modo di trattare una questione di tipo matematico. Ad esempio, supponiamo che Giorgio ed Anto­nio possiedano rispettivamente trecentottantaquattro e centoquarantatre modellini di automobile  e che abbiamo deciso di mettersi assieme. Anzitutto tradurremo la questione in linguaggio aritme­tico. Tale lin­guag­gio, come è ben noto, nella forma più comune, poggia su un alfa­beto di dieci segni detti cifre

      0  1  2  3  4  5  6  7  8  9

coi quali si possono scrivere tutti i numeri: ogni numero è rappresen­ta­to da una successione finita di questi segni (una "parola" del linguag­gio), costruita secondo le regole del "siste­ma di numerazione posizio­nale". Nel nostro caso: 384 e 143. 

Questo che a noi sembra il "sistema naturale" per scrivere i numeri è in realtà un modo che si è affermato fra altri modi, lentamente ed assai tardi in Europa, a partire dal 1200.

Il sistema di numerazione usato dai romani e in genere da tutti i popoli antichi (India esclusa) è senz'altro meno conveniente, in quanto  non ha le qualità di agilità e snellezza di un sistema posizionale: con l'aumentare della grandezza del numero rappresentato occorre introdurre nuovi simboli, non si possono eseguire i calcoli in colonna ecc.

Invece, nel nostro sistema, il procedimento di calcolo relativo alle opera­zioni elementari è semplicissimo. Nel nostro caso:

           384 +

           143 =

           ______

           527

Il calcolo, anche con numeri molto grandi, può essere eseguito facilmente e velocemente perfino da chi sa contare solo sulla punta delle dita. E' sufficiente infatti rispettare alcune semplici regole: cominciare dall'ultima colonna a destra, trasformare la cifra della prima riga, cioè 4, nella successiva (secondo l'ordine alfabetico) e questa a sua volta nella successiva e così via ripe­ten­do il procedimento tante volte quanto indicato dalla cifra della seconda riga (stessa colonna), cioè 3 volte nel nostro caso:    

          4 -----> 5 -----> 6 ----->7

Così si comincia a formare il numero-risultato: abbiamo trovato l'ultima cifra. Si riprende quindi dalla penultima colonna:

          8 ----> 9 -----> 0 -----> 1 -----> 2

e così si ottiene la penultima cifra. Poichè, questa volta, nel pro­cesso di trasformazione, si è dovuto ricominciare la successione delle cifre, il processo  per la terzultima colonna parte non con la cifra 3, ma già con la successiva cioè 4 (si è effettuato il riporto).

          4 ----> 5

E così abbiamo ottenuto: 527, che per noi (ce ne eravamo quasi dimen­ticati!) ha un significato ben preciso.

Nell'eseguire il calcolo non è intervenuto in alcun momento un "atto creativo della mente": si sono effettuate manipolazioni, trasformazioni di simboli con "procedimenti di tipo meccanicistico". Così l'arte del calcolo, riservata nei tempi antichi a pochi specialisti, può essere, nel nostro sistema di numerazione, insegnata anche ai bambini. Anzi il "far calcolo" è ormai così semplice che può "impararlo" anche una macchina, essendo divenuto appunto una mera trasforma­zione di simboli. Il procedimento è completamente  staccato dal significato dei simboli stessi: esi­stono le condizioni per la sua automatizzazione.

 

Se ne avvide Pascal, verso la metà del 1600. Egli progettò e costruì la prima macchina in grado di eseguire l'addizione (e la sottrazione): un comples­so sistema di ruote, ingranaggi e fine­strelle attraverso le quali si possono leggere le cifre. C'è una ruota per ogni colonna ed ogni  ruota ha dieci denti numerati: quando una ruota effettua un giro com­pleto (nel passaggio dal dente 9 al dente 0), viene agganciata attraverso un ingranaggio e fatta avanzare di un dente anche la ruota precedente, rendendo così automatico il riporto. La macchina di Pascal, detta "pascalina", viene anche chiamata "macchina a riporto".    

E' l'inizio del processo di automatizzazione che segnerà il progresso tecnico e scientifico dei secoli successivi. A questa prima macchina si accompagnerà poco dopo quella di Leibniz che esegue anche moltipli­ca­zioni e divisioni.

 

Ebbene Leibniz sogna di poter fare altrettanto in altro ambito: si propone di costruire "un linguaggio" cioè un sistema di simboli che permetta di rappresentare qualsiasi tipo di proposizioni (con cui esprimiamo i nostri pensieri) e di trattare le relative rappresenta­zioni simboliche con regole di manipolazione svincolate dal significato, in modo da assicurare alla conclusione la oggettività propria del risultato di un calcolo aritmetico.

Già Raimondo di Lullo (1235-1315) aveva tentato di costruire un proce­dimento meccanico che consentisse di ricavare, a partire da alcune affermazioni di base, una conclusione coerente. Ma è certamente merito di Leibniz l'aver proposto, in campo logico, il superamento dei vecchi schemi aristotelici e medioevali e indica­to con chiarezza una nuova prospettiva di sviluppo.

Secondo questa nuova visione  della logica, diventa fondamentale la ricerca di un opportuno, appropriato linguaggio che risponda allo scopo.

La scelta del linguaggio è molto importante. Basta pensare a quanto è avvenuto in aritmetica. L'utilizzazione del sistema numerico posizio­nale, invece, ad esempio, dei sistemi dell'antichità classica, non solo ha consentito una grande semplificazione nella rappresentazione dei numeri e nelle procedure di calcolo, ma ha creato anche le condizioni per la meccanizzazione del calcolo stesso.

Dunque Leibniz propone di cercare un linguaggio che permetta di rap­presentare simbolicamente tutte le questioni e permetta di ana­lizzare i ragio­namenti con il rigore e l'auto­matismo che vigono in aritme­tica e in algebra.

Queste idee furono riprese successivamente da altri pensatori. Ma si può dire che il messaggio è stato pienamente capito solo a distanza di secoli. Bisogna infatti aspettare il 1800, perché maturino le condizioni opportune, quando cioè si incomincia a riorganizzare funzionalmente i vari campi scientifici e si ripen­sa ai loro fondamenti. In questo ambito, due millenni dopo Aristotele, si colgono e vengono messi  in luce i limiti della logica tradizionale e se ne intravede il superamento nella formulazione di metodi nuovi e rigorosi, in analogia a quelli comunemente usati in matematica. Con Boole (1815-1864) si incomincia a costruire un "calcolo logico" che prescinde dal significato dei simboli e dipende esclusivamente dalle leggi che ne regolano l'uso, proprio come avviene in algebra: sorge la "logica formale".  La logica, armai trapiantata nel campo matema­tico, acquista un vi­gore del tutto nuovo, che sembra voler compensare il precedente lunghissimo periodo di ristagno. Vi contribuiscono studiosi di diversa nazio­nalità: Russel (inglese come Boole), Peano (italiano), Gottlob Frege (tedesco) ecc.

Gottlob Frege (1848-1925) introduce la "logica dei predicati", il nucleo fondamentale della logica moderna. Essa costituisce un linguaggio formale di strutture simboliche che si presta ad essere utilizzata per descrivere conoscenze e può essere vista come una teoria generale del ragionamento corretto (ingloba ad esempio il sillogismo aristotelico).

E' possibile in tale linguaggio rappresentare le proposi­zioni: si possono descrivere gli oggetti (termini) che ne sono coinvolti e si possono descrivere proprietà degli oggetti e  relazioni fra oggetti (predicati). Così una proposizione elementare diven­ta un simbolo di predicato unito ad un insieme ordinato di termini come argomenti.

Abbiamo ritrovato una terminologia che ci è familiare!

Infatti il PROLOG è un sottoinsieme della logica dei predicati: i FATTI (proposizioni) e le REGOLE (relazioni fra proposizioni) e la stessa domanda  sono espressi nella formalizzazione propria di tale logica.

Ad esempio la proposizione "il topo mangia il formaggio" può tradursi in tale linguaggio:

            mangia(topo, formaggio)

Cioè è possibile mantenere i segni (i caratteri) della lingua italiana scritta, tenendo però presente che ad esempio "mangia" ora   è nient'altro che  il nome simbolico della relazione che lega i nomi simbolici "topo" e "formaggio": tanto è vero che potremmo (ma ovviamente risulterebbe meno immediata la interpre­tazione) tra­durre la frase di partenza in tanti altri modi:

             m(t,p)  oppure  m112(t0,p) ecc.

E' certamente opportuno non cadere in un puro meccanismo formale, in modo da poter continuare a tener presente il significato, per "continuare a pensare".

Nella logica dei predicati esiste un in­sieme di regole che consente di verificare se una data proposizione è conseguenza impli­cita delle proposizioni iniziali. Ebbene il PROLOG contiene un "motore inferen­ziale" cioè una regola di deduzione di tipo generale, applicabile su qualsiasi BASE DI CONOSCENZA, descritta nell'AMBIENTE. Il motore inferenziale è già presente nel computer (che parla PROLOG) e può essere considerato dall'utilizzatore, "una parte del computer stesso": tale regola si fonda su un metodo di deduzione, detto "principio di risoluzione", dovuto al matematico J.A. Robinson (1965). Mentre la BASE DI CONO­SCENZA va costrui­ta, ovviamente, di volta in volta, la regola di de­duzione è sempre la stessa.

L'effetto di tale regola di deduzione è equivalente a quello che si avrebbe se si procedesse con regole deduttive che tenessero conto anche del significato delle proposizioni. Cioè, in altre parole, la regola di deduzione, pur manipolando rappresentazioni sim­boliche delle proposizioni ed esclusivamente sul piano sintat­tico, arriva alla stessa conclusione cui si perverrebbe procedendo in modo ordinario, cioè tenendo conto e del piano sintattico e del piano semantico.

Consideriamo una situazione molto semplice relativa alla consueta base di FATTI

                abita_a(marco,roma).

                abita_a(giovanni,milano).

                abita_a(louis,parigi).

                abita_a(tiziana,roma).

                è_capitale_di(roma,italia).

                è_capitale_di(parigi,francia).

 

in cui si chiede di verificare che

                è_capitale_di(parigi,francia).               

Il computer mette a confronto il simbolo di predicato contenuto nella domanda, cioè è_capitale_di con i simboli di predicato che figurano nella lista dei FATTI: il confronto viene eseguito, scorrendo la lista dei FATTI dall'alto verso il basso, "meccani­camente", in ordine, carattere per carattere. Perciò sono immediatamente esclusi,  i primi quattro FATTI. Quando i simboli di predicato coincidono, come nel caso del quinto FATTO, allora vengono confrontati nell'ordine gli argomen­ti: nel nostro caso, si ha ancora un fallimento in quanto non coincidono i primi argomenti cioè "parigi" e "roma". Finalmente il confronto con il sesto FATTO si risolve positivamente ed il computer può rispon­dere: VERO.

Ovviamente in genere la ricerca è più lunga e complessa perchè la domanda può essere di tipo GENERATE,  può comportare confronti con la TESTA di REGOLE  ecc., tuttavia non cambia la natura del procedimento di ricerca. 

In conclusione, il computer può sviluppare deduzioni corrette, alla stregua della macchina di Pascal che sa trovare la somma di due numeri: in entrambi i casi si hanno regole di manipolazione simbolica precise e rigorose che garantiscono la correttezza del procedimento.

Di fronte alle prime macchine calcolatrici, il filosofo Thomas Hobbes (1588-1679) esclamava: "Ottone e ferro sono stati investiti della funzione del cervello ed istruiti a compiere una delle più difficili operazioni della mente". Ci si avviava verso la liberazione dalla fatica di far calcoli. A questo proposito Leibniz aveva detto: "Non è ammis­sibile che studiosi e scien­ziati, anzichè elaborare e confrontare nuove teorie, perdano le proprie ore come schiavi nelle fatiche del calcolo, che potrebbe essere affidato a chiunque se si potessero usare le macchine...".

Oggi le macchine, come abbiamo visto, sono diventate anche un importante strumento per la rappresentazione, la raccolta e la gestione delle conoscenze. Trattare conoscenze costituisce una attività sempre più rilevante nella società moderna. La tecnologia stessa non si identifica più solo con le macchine che trasformano materiali, ma, anche nell'opinione comune,  sta diventando sempre più  rilevante il peso dei sistemi per la raccolta e la gestione delle conoscenze.

Il computer può aiutare a prendere decisioni, ad impostare razio­nalmente una strategia, può aiutare non solo a fare, ma anche a decidere: la logica assume il ruolo di perno nel progetto informatico giapponese detto "della Quinta Generazione", per il quale il linguaggio standard è il PROLOG.


Cerca nel sito

Cerca tra news, articoli e comunicati!


nel sito news e comunicati
Sponsor
Sponsor
Sponsor
Sponsor
Sponsor
Libertas.sm © 2012 by Belcom - testata di informazioni e news sulla Repubblica di San Marino