Nella precedente puntata avevo presentato la rielaborazione di una mia precedente definizione del pensiero computazionale: “Un processo mentale per far risolvere problemi a un agente, sia esso persona o macchina, fornendogli una serie di istruzioni che deve eseguire in autonomia”. Ricordo che l’espressione viene usata per indicare gli aspetti culturali dell’informatica – indipendentemente dalla tecnologia digitale in cui essa si manifesta.
Qui faccio un’analisi di dettaglio dei suoi vari termini, segnalando, in qualche caso, alcune semplificazioni che ne alterano la natura. Per motivi di spazio sarò necessariamente sintetico: una versione estesa che racchiude entrambe le puntate dedicate all’argomento sarà disponibile su questo blog interdisciplinare dopo la chiusura dei commenti per questo articolo.
Processo mentale: specifica il concetto sottolineando la sua indipendenza da tecnologie, strumenti concreti e sistemi fisici. Identifica pertanto la natura metodologica del pensiero computazionale, che è applicabile in molti ambiti disciplinari ed è riconosciuto come strumento concettuale per la conoscenza del mondo, in aggiunta a quanto ci danno le scienze fisiche, della vita e sociali (vedi Peter J. Denning).
Far risolvere problemi: un errore fondamentale è descrivere il pensiero computazionale unicamente come la competenza che permette di risolvere problemi (problem solving). I matematici hanno risolto problemi per millenni. Ma solo quando hanno iniziato a riflettere sulla possibilità e sulle implicazioni di “far risolvere” i problemi a qualcun altro, si è messa in moto un’evoluzione che ha portato alla nascita della nuova disciplina scientifica, l’informatica. Correlata a questa semplificazione vi è quella di ritenere che l’essenza del pensiero computazionale sia decomporre il problema in sotto-problemi, per poi ricombinarli. Ma molte volte non è richiesto questo approccio, che non è caratterizzante per il pensiero computazionale.
A un agente: il termine “agente” indica chi esegue le istruzioni e ne mette in rilievo il suo essere distinto rispetto al soggetto in cui avviene il processo mentale. Anche questo è un elemento essenziale per caratterizzare appropriatamente l’informatica rispetto alla matematica da cui è nata. L’agente agisce sui dati che acquisisce per produrre dati come risultato della sua azione (information processing agent). Qui risiede il valore interdisciplinare dell’informatica, perché consente di ottenere un punto di vista sul mondo in grado di complementare la descrizione che sono in grado di farne gli altri tre domini della scienza.
Sia esso persona o macchina: è impreciso pensare che il pensiero computazionale serva solo per gestire macchine, cioè computer. Istruire una squadra di collaboratori a risolvere un problema richiede almeno le stesse capacità cognitive allenate dal pensiero computazionale. Ho già discusso sull’importanza di questa formazione per lo sviluppo delle capacità cognitive razionali, che deve accompagnare e non sostituire altre discipline, egualmente importanti per un’equilibrata e completa maturazione degli studenti. Poi ne servono ovviamente molte altre: cognitive, emozionali e relazionali.
Fornendogli una serie di istruzioni: vuol dire scrivere un programma, cioè codice informatico (o fare coding). Ritenere che il pensiero computazionale sia finalizzato ad imparare a programmare (cioè sia il coding) è una semplificazione snaturante perché scrivere un programma informatico vuol dire niente altro che dare concretezza al processo mentale retrostante. Da questo punto di vista sussiste, tra pensiero computazionale e coding, un po’ la stessa relazione che esiste tra pensiero e linguaggio: quest’ultimo è la forma mediante cui rendiamo concreto il pensiero, cioè ne costituisce una rappresentazione, così come un programma (il codice informatico) costituisce una rappresentazione del pensiero computazionale.
Che deve eseguire in autonomia: l’esecutore deve essere autonomo rispetto al soggetto in cui avviene il processo mentale. Nel caso si tratti di un agente “umano”, il risolutore può, in una certa misura, contare sull’intelligenza dell’esecutore. Nel caso di un agente “meccanico”, cioè di una macchina qual è un computer, non possiamo far leva su alcuna intelligenza (nel senso umano del termine) e dobbiamo quindi esplicitare ogni più piccolo dettaglio. L’allenamento fatto in questo modo da studenti sarà utile nel lavoro che sarà svolto come adulti, quando gli esecutori cui daremo istruzioni saranno persone in grado di colmare le eventuali lacune.