Quando affrontiamo un problema o abbiamo un’idea, spesso intuiamo la soluzione ma non siamo in grado di formularla in modo operativo per metterla in pratica. Il pensiero computazionale è proprio questo, la capacità di immaginare e descrivere un procedimento costruttivo che porti alla soluzione. Come imparare a parlare ci aiuta a formulare pensieri complessi, così il pensiero computazionale ci offre strumenti ulteriori a supporto della fantasia e della creatività.
Con il pensiero computazionale si definiscono procedure che vengono poi attuate da un esecutore, che opera nell’ambito di un contesto prefissato, per raggiungere degli obiettivi assegnati.
Per questo il pensiero computazionale è per tutti!
E’ una capacità trasversale che va sviluppata il prima possibile. Non è solo per informatici e programmatori, ma programmare è il modo migliore per acquisirlo. Per questo in Europa e nel mondo si svolgono ogni anno campagne di alfabetizzazione per la diffusione del coding. E’ per questa stessa ragione che noi parleremo di coding e giocheremo con la programmazione senza ripeterci ogni volta che lo facciamo per sviluppare il pensiero computazionale. Quello accadrà da sé senza bisogno di dirlo.
Il pensiero computazionale è un processo mentale per la risoluzione di problemi costituito dalla combinazione di metodi caratteristici e di strumenti intellettuali, entrambi di valore generale.
I metodi caratteristici includono:
- analizzare e organizzare i dati del problema in base a criteri logici;
- rappresentare i dati del problema tramite opportune astrazioni;
- formulare il problema in un formato che ci permette di usare un “sistema di calcolo” (nel senso più ampio del termine, ovvero una macchina, un essere umano, o una rete di umani e macchine) per risolverlo;
- automatizzare la risoluzione del problema definendo una soluzione algoritmica, consistente in una sequenza accuratamente descritta di passi, ognuno dei quali appartenente ad un catalogo ben definito di operazioni di base;
- identificare, analizzare, implementare e verificare le possibili soluzioni con un’efficace ed efficiente combinazione di passi e risorse (avendo come obiettivo la ricerca della soluzione migliore secondo tali criteri);
- generalizzare il processo di risoluzione del problema per poterlo trasferire ad un ampio spettro di altri problemi.
Questi metodi sono importanti per tutti, non solo perché sono direttamente applicati nei calcolatori (computer), nelle reti di comunicazione, nei sistemi e nelle applicazioni software ma perché sono strumenti concettuali per affrontare molti tipi di problemi in diverse discipline.
Gli strumenti intellettuali includono:
- confidenza nel trattare la complessità (dal momento che i sistemi software raggiungono normalmente un grado di complessità superiore a quello che viene abitualmente trattato in altri campi dell’ingegneria);
- ostinazione nel lavorare con problemi difficili;
- tolleranza all’ambiguità (da riconciliare con il necessario rigore che assicuri la correttezza della soluzione);
- abilità nel trattare con problemi definiti in modo incompleto;
- abilità nel trattare con aspetti sia umani che tecnologici, in quanto la dimensione umana (definizione dei requisiti, interfacce utente, formazione, …) è essenziale per il successo di qualunque sistema informatico;
- capacità di comunicare e lavorare con gli altri per il raggiungimento di una meta comune o di una soluzione condivisa.
Anche per questi strumenti i benefici si estendono al di là della disciplina informatica.