Indica un intervallo di date:
  • Dal Al

Calcolare o capire?

Una delle leggende metropolitane più dure a morire in ambito informatico sostiene che  per essere dei bravi programmatori sia necessario essere dei bravi matematici: dopo tanti anni passati a programmare al pc e ad assumere validissimi programmatori, posso affermare tranquillamente che non è affatto vero :-). Certamente chi è già molto abile in matematica di solito non fatica molto a imparare a programmare (e spesso bene) ma questo non implica in alcun modo il contrario.

Credo che questa leggenda sia nata con i primi computer, usati all’inizio solo per automatizzare calcoli di crescente complessità, per cui un background matematico pareva il presupposto più naturale. In seguito le cose sono cambiate parecchio ma il vecchio preconcetto è evidentemente rimasto intatto.

Va detto che la matematica affonda radici lontane e, senza di essa, non sarebbe stato possibile progettare nemmeno il più semplice dei computer: la storia ci insegna ad esempio che i geometri babilonesi e gli agrimensori egiziani già migliaia di anni fa avevano scoperto empiricamente le prime regole della geometria e avevano intuito i concetti base della matematica. Quando, alcuni secoli dopo, il greco Euclide compì la sua opera di riorganizzazione di tutto il sapere matematico dei suoi tempi, erano già stati fatti diversi passi avanti: era stata scoperta una procedura generale per dedurre un risultato numerico e la matematica si era ormai trasformata in un insieme di regole logiche con cui dimostrare tutte le verità deducibili a partire da pochi ma fondamentali principi.

Da quel momento, calcolare è divenuta un’attività astratta basata su teoremi assoluti e attuata secondo procedure rigorose e meccaniche che in epoca moderna i matematici hanno definito ”algoritmi” (questo è un altro motivo per cui si è diffusa la leggenda metropolitana di cui sopra :-) . Dopo oltre venticinque secoli, la matematica rappresenta una disciplina articolata e vastissima: ha esplorato il mondo dei numeri, scoperto nuove geometrie e sviluppato strumenti di calcolo così potenti e pervasivi da costituire il linguaggio stesso della scienza.

Numeri_41651206

Ma, fin dagli ultimi secoli del Medioevo, la storia della matematica registra anche la comparsa di un “sogno”. Inizialmente un’idea appena accennata e marginale che tuttavia non si è spenta, anzi è cresciuta fino a emergere nel XVIII secolo ed esplodere con vigore nel XX secolo: il sogno di rendere automatico il processo di calcolo affidandolo ad una macchina. Le prime calcolatrici meccaniche costruite fin dal Seicento (prima dal misconosciuto Schickard e poi da Pascal), che servivano ad automatizzare noiosi calcoli, si sono così trasformate in vere macchine universali, cioè in calcolatori digitali in grado di svolgere i più svariati compiti matematici. Questo senza modificare una sola parte della macchina, ma cambiando semplicemente le istruzioni.

Infatti, l’unico requisito per far funzionare correttamente un computer è quello di “scriverne le istruzioni”: programmare un computer per fargli eseguire solo compiti fortemente strutturati, ripetitivi e meccanici può risultare anche relativamente facile e vantaggioso, basta fornire le istruzioni appunto sotto forma di “algoritmi”, intesi come sequenze ben definite e logicamente coerenti.
Diverso è se vogliamo che il computer comprenda quanto scritto in un testo o dialoghi in modo naturale come fosse una persona. In questo caso dobbiamo andare oltre la logica del calcolo, perché le azioni cognitive non sono strutturate, ripetitive o meccaniche, ma esattamente il contrario: un testo può contenere infinite quantità e tipologie di informazioni, espresse nei modi più svariati, e comunque tutti corretti e ammissibili.

Questa considerazione molto semplice e intuitiva fa capire subito che un computer non potrà mai sostituire in toto l’uomo in molti compiti: il nostro cervello non è strutturato come un computer, non procede per algoritmi (anche se è talmente intelligente da idearli e scriverli) e la sua attività centrale, il pensiero, non è in sostanza riconducibile ad una descrizione logico-meccanica. Il pensiero è invece libero e creativo e, sintetizzando in due parole, l’essere umano non è deterministico… ed è bello così :-)

A metà dello scorso secolo, ai primordi dell’era informatica, il geniale Alan Turing ha immaginato un famoso test per stabilire se le macchine possono ragionare come un essere umano. Volendo dimostrare molto concretamente le capacità di ragionamento, Turing ha suggerito l’idea di un esperimento a tre, con un interrogante umano e due interrogati (un uomo e una macchina). Il soggetto che interroga può porre qualsiasi domanda su qualsiasi argomento alternativamente ai due interrogati, che non possono però essere visti. La comunicazione avviene infatti per via scritta, in modo da eliminare anche ogni indizio fisico legato alla voce o al tono usato. Il compito di chi interroga è decidere quale dei due soggetti sia umano e quale sia una macchina, unicamente in base alla pertinenza e alla qualità delle risposte.

Se una macchina supera “il test di Turing” (cioè inganna l’interrogante), beh allora bisogna ammettere che sia una macchina intelligente e in grado di ragionare, qualunque cosa si intenda per “ragionare”. Come è facile immaginare, ad oggi nessun computer ha superato il test di Turing e non prevedo che sarà possibile farlo nemmeno in un lontano futuro…

Se però restringiamo il campo all’idea di un computer (o di un programma, che è la stessa cosa) onnisciente e in grado di capire e ragionare come l’uomo in contesti specifici e più ristretti, allora lo scenario cambia notevolmente. Infatti negli ultimi vent’anni sono stati fatti molti progressi, tanto che i computer non sono più utilizzati per eseguire velocemente tonnellate di calcoli (anche se, in realtà, qualunque programma, per quanto complesso, si riduce al livello più basso ad una serie di operazioni logiche e matematiche elementari).

Un programma può eseguire con successo compiti circoscritti di natura cognitiva, come capire il linguaggio e interpretare il senso di un testo (lo sanno bene i lettori di questo blog :-). La comprensione di un testo è la porta stretta da cui tutti i programmi devono passare per consentire una gestione automatica della conoscenza ,o almeno supportare una gestione umana della stessa. L’obiettivo è sempre quello di far risparmiare tempo alle persone e aumentare la loro efficacia nelle attività personali e di lavoro: parafrasando una famosa pubblicità, no comprensione, no party.

Come vedremo nelle prossime puntate, la comprensione da parte di un computer non necessita per forza di processi simili a quelli umani (anzi, va ricordato che al livello più basso non succede mai, per capire il computer ha sempre bisogno di istruzioni e calcoli matematici) ma è comunque il passaggio fondamentale per passare da una serie di numeri contenuti in una pagina Web alla soluzione per il mal di denti (ricordate l'ultimo post?).