Seconda parte
Fisica e Metafisica
K.R.Popper
Il neopositivismo logico nei primi decenni del ‘900 sosteneva che la Metafisica, esempio assoluto di pensiero non calcolante e non algoritmico, fosse totalmente insensato in quanto composto da enunciati non empirici, in nessun modo verificabili. Il killer ufficiale di questo movimento, Karl Popper, pur essendo d’accordo sul fatto che gli enunciati della Metafisica non possano essere falsificati e siano quindi privi di fondamento scientifico, non è però d’accordo sul fatto che la Metafisica sia inutile o dannosa. Facciamo qualche esempio per dimostrare che Popper aveva ragione. Zenone di Elea, filosofo quasi-napoletano del V secolo a.c., per difendere il suo maestro Parmenide sull’ Unicità e Immutabilità dell’ Essere, dimostrò che i ragionamenti degli avversari portavano a paradossi. Lungi dall’essere dei raccontini come spesso vengono presentati, i paradossi di Zenone rappresentano la scoperta dell’Infinito e verranno risolti solo con la distinzione chiara e rigorosa delle serie numeriche convergenti rispetto a quelle divergenti. Si parte quindi dalla difesa di un amico e si arriva a scoprire un problema estremamente fecondo che porterà alla scoperta dell’analisi infinitesimale. Democrito di Abdera, anche lui filosofo del V / IV secolo a.c., proprio per evitare i paradossi di Zenone introdusse la teoria atomica della materia. Non osservò ovviamente alcun atomo ma ci arrivò per via deduttiva e metafisica. Se la infinita divisibilità della materia porta ai paradossi di Zenone, l’ovvia soluzione è pensare che la divisione all’infinito si possa avere solo in matematica ma non in fisica. Qui, prima o poi, si incontrano delle particelle non ulteriormente divisibili, gli atomi appunto. Quindi la metafisica, in certi casi, lungi dall’essere inutile, si rivela addirittura preziosa. Ridurre il pensiero a semplice calcolo espunge troppo dalla nostra base conoscitiva e così si perde ciò che è più caratteristico dell’agire umano: la creatività.
Deduzione, induzione, abduzione
Si dice che il ragionamento algoritmico è basato sulla deduzione mentre la scienza si basa sull’induzione. L’abduzione invece, altro meccanismo di ragionamento studiato da Aristotele, è il regno della libertà e della creatività; in quest’ultimo procedimento ci si espone al rischio, all’errore e questo fatto lungi dall’essere un limite finisce per esserne il vero vantaggio in termini di conquista di verità nuove e inaspettate, autentiche rivoluzioni del pensiero.
DEDUZIONE
La deduzione è il ragionamento logico per eccellenza, il sillogismo assolutamente sicuro che però è banale e ci dice veramente poco sul mondo. Tanto è vero che le sue verità vengono spesso definite, non a caso, sterili.
Un esempio è il famoso sillogismo di Aristotele. Tutti gli uomini sono mortali, Socrate è un uomo, quindi Socrate è mortale. Che è del tipo A implica B, ma è vero A, quindi B.
Come risulta dalla tabella di Verità, si dimostra facilmente che il ragionamento in oggetto è una legge logica, si tratta cioè di un ragionamento valido, cioè sempre vero. Questo ragionamento può essere formalizzato con un algoritmo e ripetuto anche da una macchina. Non ci sono problemi, possiamo fare del buon coding su di esso. Ma come detto è tautologico, non è un processo fecondo. Serve per sistematizzare ma non per scoprire.
INDUZIONE
Il ragionamento induttivo è quello che molti attribuiscono alla scienza (in realtà le cose sono più complicate) e rappresenta una generalizzazione che parte dall’osservazione di un certo numero di casi fino alla formulazione di una Legge. Se faccio cadere dalla torre di Pisa un centinaio di oggetti e osservo che tutti cadono allo stesso modo (magari nel vuoto, la cosa è curiosa perché Galilei poteva solo ipotizzare l’assenza di aria) allora posso concludere che tutti i corpi cadono secondo una certa legge.
In logica questo si esprime in questo modo :
Come risulta dalla tabella di verità, l’induzione non è una legge logica (nella colonna del risultato della tabella di verità c’è una F che sta per falso) ; ciò significa che l’induzione è vera solo in certi casi, non in tutti. Si tratta comunque di un procedimento fecondo, almeno nel contesto della scoperta scientifica, esso infatti ci permette di allargare la nostra base conoscitiva e di arrivare a pensieri, idee e procedure che non possono essere fatte in maniera diretta con il solo procedimento deduttivo.
ABDUZIONE
Un esempio è il seguente:
L’autobus è in forte ritardo. Se c’è molto traffico, allora l’autobus arriva in ritardo, quindi è possibile che oggi ci sia traffico.
Il ragionamento abduttivo è certamente quello meno sicuro, più esposto al rischio, comunque più vicino al procedimento della nostra intelligenza creativa, tanto che in certi casi procede anche con una forzatura delle regole. Questa forzatura, che si può rivelare infruttuosa in molti casi, ci può portare tuttavia a grandi scoperte scientifiche. In molti ambiti come le scienze sociali e la medicina, campi nei quali la scienza è tutt’altro che esatta, si procede per tentativi, intuizioni e congetture; in una parola ‘ci si butta’, ce la tentiamo, esattamente come fanno i bambini, che sperimentano, si tuffano, non hanno paura di sbagliare, prima che il mondo degli adulti, con la complicità della scuola, li standardizzi e li riduca ad unità. Il ragionamento abduttivo è la ricerca di un modello che spieghi la realtà, anche quando ci mancano alcuni o molti dati. In certi casi questa procedura ci porta a risultati stupefacenti, come nel caso della mela di Newton o di certe strategie di Galilei, in risposta al cardinale Bellarmino. Prendendo in prestito le parole del filosofo, matematico e logico americano C. S. Peirce possiamo dire che l’abduzione ‘ è l’unica forma di ragionamento suscettibile di accrescere il nostro sapere, ovvero permette di ipotizzare nuove idee, di indovinare, di prevedere ’ .
Se questi ragionamenti sono corretti, la domanda che ci dobbiamo porre è la seguente: vogliamo veramente ridurre l’intero sapere ad algoritmo ? Possiamo pretendere di far fare tutto alle macchine ? Vogliamo veramente mettere in secondo piano le tipologie di ragionamento che si rivelano più feconde ?
Coding, pensiero computazionale, vari tipi di logica, pensiero critico
Tralasciamo volutamente affermazioni avventate come quelle che sostengono che il coding sarebbe utile per sviluppare l’intelligenza, concentriamoci invece sulla pretesa identità di coding e pensiero computazionale. Ovviamente la cosa è priva di senso. Gli uomini calcolano da sempre, da tanto tempo prima che comparisse un computer o un linguaggio di programmazione. In questo caso più che scoprire l’acqua calda ci si copre di ridicolo. Esistono molti modi di calcolare, di costruire algoritmi e il coding è solo l’ultimo arrivato e neanche, a mio parere, il più interessante. La matematica è pensiero calcolante, fare una torta di mele significa rispondere ad una specie di diagramma di flusso, risolvere con carta e matita una delle leggi logiche enunciate sopra è pensiero computazionale. Quindi dire che il pensiero computazionale lo si può insegnare solo con il coding è una forzatura totalmente inaccettabile. Possiamo fare ragionamenti interessanti anche con la filosofia, con la sintassi di un linguaggio naturale o con procedure legate al mondo del lavoro. Mentre ho parecchie riserve circa il fatto che spostando dei blocchetti colorati si possa parlare di pensiero computazionale. Non che alla scuola primaria non si possa insegnare il coding, io la penso come Comenio e come Bruner: si può insegnare tutto a tutti e a qualsiasi età, a patto che si sia in grado di operare le dovute traduzioni nel linguaggio del bambino. C’è anche un fatto molto pragmatico che mi porta a considerare il coding come un problema secondario. Le persone che sviluppano codice ad alto livello consigliano di studiare matematica, non un linguaggio di programmazione che è solo strumentale rispetto al ragionamento vero e proprio. La matematica è il coding giusto, che non passa mai di moda. Sembra tuttavia che abbia il difetto di potersi insegnare senza necessità di acquistare software o hardware, senza che ci sia bisogno di riconvertire i docenti della scuola attraverso corsi di formazione di qualche ora e con attestati che sminuiscono soprattutto chi il coding lo pratica veramente.
Veniamo ad un’altra questione. Sappiamo bene che non tutto il pensiero è calcolabile, chiediamoci ora se la logica matematica e la stessa matematica lo sono. Chiediamoci se questa forma di pensiero sia un corpus così sicuro e monolitico, esprimibile in termini di zero ed uno. Vedremo che le cose sono molto più complicate, come ci insegnano K. Goedel e A. Turing.
Intanto sappiamo che la logica classica, basata sugli algoritmi , non è l’unica logica possibile. Nella storia della filosofia, per primo Hegel ha posto l’accento su una logica di tipo diverso, che lui definiva dialettica, dove, lungi dal considerare assurdo il principio di contraddizione, questo viene anzi considerato come l’unico pensiero in grado di cogliere una realtà processuale fatta di una affermazione e del suo contrario (A e non-A) non disgiunte ma unite in una unità superiore chiamata sintesi o Auf-Hebung: inveramento e superamento della contraddizione, questa volta non espunta ma ammessa.
Se non piace il contesto filosofico possiamo rimanere in quello strettamente logico dove si parla di Fuzzy Logic o logica sfumata, dove gli enunciati possono assumere oltre che i tradizionali valori di zero e uno, anche valori intermedi, anche qui intesi come superamento della granitica e assoluta credenza nei principi aristotelici di non contraddizione e di terzo escluso. Del resto nell’ambito della stessa logica classica si è scoperto che se si introducono gli operatori modali ( è possibile che, è necessario che), ci si trova immersi nei cosiddetti contesti opachi che più che agli algoritmi rimandano alla filosofia.
In certe occasioni, quando si parla di coding, si fa riferimento anche al fatto che questo svilupperebbe spirito critico. La cosa mi sembra un tantino avventata. Il coding consente rigore, grande attenzione per il risultato ma non credo che sviluppi la capacità critica e la creatività dei bambini.
Pensiero e Calcolabilità
Abbiamo visto che il coding si considera pensiero fecondo perché, per il tramite di un linguaggio di programmazione, sarebbe in grado di arrivare all’obiettivo prefissato con procedura algoritmica in un numero finito di passi. Chiediamoci, ma tutto il pensiero può essere calcolabile ? La risposta è ovviamente negativa, la cosa sorprendente è che neanche la logica e la matematica sono completamente calcolabili, e quindi, ovviamente, men che meno lo può essere un programma di un computer per quel problema. Come è noto, il programma logicista di Frege e Russell, che prevedeva la riduzione a logica di tutta la matematica, considerando la prima come la struttura della realtà ( gli atomi logici del primo Wittgenstein ), si è dimostrata falsa ed è stata abbandonata dai suoi sostenitori stessi. Come sappiamo, non tutta la matematica è completa (1° e 2° teorema di Goedel) ed inoltre non tutta la matematica è decidibile (Alan Turing). Più precisamente, nel 1931 il logico austriaco Kurt Goedel dimostrò che:
In ogni teoria matematica T sufficientemente espressiva da contenere l’aritmetica, esiste una formula ф tale che, se T è coerente, allora né ф né la sua negazione non-ф, sono dimostrabili in T.
Ciò significa che in ogni formalizzazione coerente della matematica, capace di esprimere almeno i numeri naturali e le operazioni di somma e prodotto, esiste una proposizione sintatticamente corretta che non può essere dimostrata o confutata all’interno dello stesso sistema. La matematica e la logica, paradigmi di rigore, analiticità e algoritmi per eccellenza, sono incomplete. Se questo vale per l’aritmetica, figuriamoci per il resto del pensiero umano. Il nostro pensiero matematico lungi dall’essere completo e chiuso, risulta invece aperto e stimolante, dove non tutto è calcolabile e quindi non tutto è verificabile meccanicamente, considerato che molte parti sfuggono agli algoritmi. Si pensi ai numeri transfiniti e ai paradossi degli insiemi autoreferenziali, scoperti dai greci e formalizzati da Russell e altri. Tutto questo suggerisce che l’operazione di riduzione dell’intero pensiero ad algoritmo meccanico è indebita sia in matematica che in logica, figuriamoci per il pensiero empirico.
Il ragionamento che sta alla base dei teoremi di limitazione di Goedel viene esteso da Turing alle macchine. Da vero ingegnere della conoscenza Alan Turing, dopo aver inventato mentalmente il primo computer ( la macchina universale ), riesce a dimostrare che esistono problemi che non possono essere decisi da queste macchine, vale a dire problemi che non possono essere decisi in un numero finito di passi per mezzo di un algoritmo (1937). La loro indecidibilità non è empirica ma proprio logica; ciò significa che nè oggi, nè un domani potranno essere decidibili e quindi resi formali con un algoritmo.
In considerazione di questi risultati, che cosa facciamo, rinunciamo a tutto quello che non è decidibile per la nostra ideologia del coding ? Direi che è molto più facile prendere il coding per il poco che è, specialmente se paragonato a questi che sono veri problemi del pensiero umano.
Quando si dice che il coding serve per ottenere più facilmente una strategia didattica basata sul problem solving, come la mettiamo con le parti del nostro sapere in cui la soluzione non esiste ed è logicamente impossibile che esista ? Non tutto è decidibile, non tutto è risolvibile, non tutto si traduce in algoritmo, ciononostante, noi uomini viviamo bene lo stesso. Quando proprio non ne possiamo più di ragionamenti troppo astratti, solo sintattici, piuttosto che perderci in un metalinguaggio infinito, ci diamo un taglio e se il ragionamento ci convince dal punto di vista intuitivo, anche se non ne possediamo la dimostrazione logica, andiamo avanti lo stesso. Per tornare al nostro problema iniziale, il coding propagandato come nuovo paradigma pedagogico, la novella teoria del tutto didattico, si scontra in maniera radicale con questi risultati che sono acquisiti e conosciuti da molto tempo.
Pensiero convergente e pensiero divergente
Ciò che manca nella scuola di oggi è l’attenzione verso la creatività, non verso il pensiero convergente. Più che coding lancerei un grande progetto per favorire la creatività. In questo sono totalmente d’accordo con sir Ken Robinson: tutti i bambini nascono creativi, poi piano piano la scuola li rende standard e ne inibisce la creatività.
Coding e sviluppo dell’intelligenza del bambino
Senza coding è possibile arrivare al pensiero logico ? Ovviamente si, che si insegni il coding oppure no, tutti i bambini del mondo, secondo gli studi dell’ epistemologo genetico Jean Piaget raggiungono dagli 11 ai 13 anni il pensiero formale o logico matematico. Ma se tutti raggiungono lo stadio dell’intelligenza formale, del pensiero computazionale, a cosa serve il coding ? In termini di raggiungimento vero e proprio del pensiero computazionale ne possiamo tranquillamente fare a meno; non nego però che può essere un utile strumento per favorire o accelerare uno sviluppo che già c’è (vedi la critica di Bruner a Piaget).
L’importante è ricordarsi che il mondo lì fuori non è quello studiato dal coding, non è quello interno al computer. Il mondo lì fuori si chiama realtà e viene studiato dalle scienze classiche come la Fisica, la Biologia ed ha come linguaggio di base e trasversale un coding che non passa mai di moda: la Matematica. Una cosetta che è iniziata molto prima del coding e che penso gli sopravviverà. Quando si produce un programma software non è importante tanto la sua traduzione in un linguaggio, il suo codice.
Importante è studiare e capire la realtà che si vuole tradurre in codice. Se non abbiamo studiato e compreso a sufficienza questa realtà, il nostro codice sarà inutile. Per capire questa realtà serve studiare proprio questa realtà che non è semplice, libera da incrostazioni, pulita e perfettamente analitica con nei touch screen. Si tratta di un processo lento, complesso, che rimanda a più saperi, che spesso non sono neanche decidibili o calcolabili. Quindi il coding, se proprio ci deve essere, viene per ultimo. I progetti che servono sono quelli che ci mettono a posto in matematica e nelle scienze, dove la scuola italiana è molto debole e non certo quelli sul coding. Se i nostri ragazzi hanno difficoltà in matematica, capiscono poco i concetti scientifici di base, per cosa utilizziamo il coding, per formalizzare in un linguaggio di programmazione moderno la nostra ignoranza ?Se avessi un figlio piccolo che vuole fare da adulto il programmatore non lo inviterei a studiare uno qualsiasi dei tanti linguaggi di programmazione, lo inviterei a studiare Filosofia, Matematica, Fisica, Logica, Arte, Storia, Latino e Greco: Cultura in generale insomma. Per il coding avrà tempo. Se considerate che i ragazzi che frequentano la scuola primaria andranno in pensione (ammesso che ci sia ancora qualcosa come il sistema pensionistico) intorno al 2060, vi renderete conto che in quel tempo, probabilmente, si studierà ancora Fisica, Matematica, Biologia, Filosofia, mentre difficilmente resterà qualcosa di Scratch o simili.