Cos'è il pensiero computazionale
Per caratterizzare sinteticamente il rilevante contributo culturale apportato dall’Informatica alla comprensione della società contemporanea, la scienziata informatica Jeannette Wing nel 2006 introdusse l’espressione “pensiero computazionale ” (vedi l’articolo originale – in inglese).
Prima di fornire qualche spiegazione su cosa si intenda con questa espressione, vi invitiamo a guardare il seguente spezzone video, tratto dal film "Apollo 13".
L'essenza del concetto, esemplificata magistralmente dal video, è che con il pensiero computazionale si definiscono procedure che vengono poi attuate da un esecutore (agente ), che opera in modo “meccanico” e “inconsapevole” nell'ambito di un contesto prefissato, per raggiungere degli obiettivi assegnati.
Il pensiero computazionale – il modo di pensare sviluppato da parte di chi ha studiato e praticato informatica – può essere definito come l’insieme dei processi mentali usati per modellare una situazione e specificare i modi mediante i quali un agente elaboratore di informazioni può operare in modo effettivo all’interno della situazione stessa per raggiungere uno o più obiettivi forniti dall’esterno.
È importante ribadire che l'agente esegue istruzioni (di cui però non conosce il significato), per elaborare dati (di cui però non conosce il significato). In tal modo un'elaborazione "meccanica" e "inconsapevole" riesce a replicare funzioni cognitive "umane". Questa è una vera e propria rivoluzione.
Potete trovare in questo articolo una discussione più dettagliata su cosa si intenda con il termine “pensiero computazionale” e come vada usato. Si noti che il pensiero computazionale non considera la semplice “risoluzione di problemi” ma il “far risolvere i problemi ad un esecutore”. È questa la novità concettuale che rende l’informatica – termine che indica l’elaborazione automatica delle informazioni – una scienza nuova e distinta dalla matematica, che ha risolto problemi per millenni.
I metodi caratteristici e gli strumenti intellettuali che si acquisiscono con lo studio dell’informatica hanno un valore concettuale generale che inducono a ritenere utile per tutti gli studenti lo sviluppo del pensiero computazionale.
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 “esecutore” (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.
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);
- perseveranza 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.