“Pensare come un informatico significa di più che essere capaci di programmare un computer. Richiede infatti di pensare a livelli di astrazione multipli.” Jeannette Wing
L’espressione è stata portata alla ribalta in un articolo di Jeannette Wing intitolato "Computational thinking" e pubblicato su «Communications of the ACM» nel marzo 2006. L'articolo indicava il «pensiero computazionale» come una competenza fondamentale per tutti (non solo informatici).
L'articolo sosteneva l'importanza di
integrare le idee computazionali in altre discipline.
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. 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.
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” ( 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 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);
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.
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;
generalizzare il processo di risoluzione del problema per poterlo trasferire ad un ampio spettro di altri problemi.