(“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 macchina 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 aristotelico 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 connessione
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
sillogismo, presentano una maggiore varietà di forme; il numero delle premesse
è (teoricamente) illimitato; le premesse possono essere o affermazioni di base
(FATTI) o affermazioni sotto condizione (REGOLE). Quindi il computer si
presenta come una macchina in grado di verificare 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 matematico, 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, mediante la quale possiamo
eseguire calcoli su ogni genere di argomenti e trovare dimostrazioni come
nell’algebra e nell’aritmetica”…”Quo facto quando orientur controversiae, non
magis disputatione opus erit inter duos philosophos, quam inter duos
computistas. Sufficiet enim calamos in manus sumere sedereque ad abbacos et
sibi mutuo (accito si placet amico) dicere, calculemus”.
Stupefacente, quel “calculemus”!
In pratica si afferma che un ragionamento dimostrativo potrebbe
essere trattato alla stregua di un problema matematico: le premesse
corrispondono ai dati iniziali, la conclusione alla soluzione. 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 attraverso 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 questione, cioè tradurla in nudi simboli, da trattare con
regole di manipolazione che non facciano riferimento al contenuto di
significato.
Accogliendo il suggerimento di Leibniz, ripensiamo al modo di
trattare una questione di tipo matematico. Ad esempio, supponiamo che Giorgio ed
Antonio possiedano rispettivamente trecentottantaquattro e centoquarantatre
modellini di automobile e che abbiamo deciso di mettersi assieme. Anzitutto
tradurremo la questione in linguaggio aritmetico. Tale linguaggio, come è ben
noto, nella forma più comune, poggia su un alfabeto 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 è
rappresentato da una successione finita di questi segni (una “parola” del
linguaggio), costruita secondo le regole del “sistema di numerazione
posizionale”. 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 operazioni 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 ripetendo 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
processo 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
dimenticati!) 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 trasformazione di simboli. Il procedimento è completamente staccato dal
significato dei simboli stessi: esistono 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 complesso sistema di ruote, ingranaggi e finestrelle 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 completo (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 moltiplicazioni 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 rappresentazioni 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
procedimento 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 indicato 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
posizionale, 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
rappresentare simbolicamente tutte le questioni e permetta di analizzare i
ragionamenti con il rigore e l’automatismo che vigono in aritmetica 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 ripensa 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 matematico, acquista un vigore del tutto nuovo,
che sembra voler compensare il precedente lunghissimo periodo di ristagno. Vi
contribuiscono studiosi di diversa nazionalità: 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 proposizioni:
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 diventa 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 interpretazione) tradurre 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 insieme di regole che
consente di verificare se una data proposizione è conseguenza implicita delle
proposizioni iniziali. Ebbene il PROLOG contiene un “motore inferenziale” 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 CONOSCENZA va costruita, ovviamente, di volta in volta, la
regola di deduzione è 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 simboliche delle proposizioni ed
esclusivamente sul piano sintattico, 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, “meccanicamente”, 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 argomenti: 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ò
rispondere: 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 è ammissibile che studiosi e
scienziati, 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 razionalmente 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.
|