Chi mi segue da tempo sa  che l’educazione è un argomento che mi sta particolarmente a cuore ed è forse per questo motivo che spesso le persone mi chiedono consigli su come imparare a programmare. Gli articoli più letti di questo sito sono senz’altro le guide alla programmazione; Impara Python in 10 minuti e la serie sulle Regular Expression sono vere e proprie Hit, ma certo non sono adatte ai principianti. L’ultima mail è di pochi giorni fa: Mirko chiedeva qual’è il modo migliore per avvicinarsi all’affascinante mondo della programmazione.

Una domanda facile da formulare, che presuppone un’altrettanto facile risposta. Ahimè non é così semplice, perlomeno non nel mio caso. Certo, ci sono dozzine di fonti di ottima qualità, ma penso che per poter fornire un consiglio valido dovrei conoscere meglio chi pone la domanda. Il tuo background è scientifico o umanistico? Sai l’inglese? La gran parte delle fonti che consiglierei sono inglesi. Qual’è la tua età? Sono tanti i fattori da considerare, soprattutto se ci si impunta a voler rispondere con cura.

In tempi non troppo lontani programmare significava conoscere il funzionamento dei computer; comprendere a fondo la loro teoria e la loro struttura. Ora è tutto cambiato. Ormai Assembly e Linguaggio Macchina sono domini riservati a pochissimi super-specialisti; la gran parte dei programmatori più giovani li ha solo sentiti nominare. I linguaggi ad alto livello ci permettono di concentrarci sulla soluzione dei problemi (gli algoritmi) delegando al compilatore la creazione delle istruzioni di basso livello.

E’ una buona notizia. Per diventare programmatori non è indispensabile essere particolarmente dotati, né seguire chissà quali corsi accademici. Buona volontà, curiosità, passione e un pizzico di intraprendenza sono tutto quel che serve per buttarsi. Se son rose fioriranno, come si suol dire.

Pensare da Informatico

Se mi avete seguito fin qui grazie per la pazienza. Vi ricompenso con lo stesso consiglio che ho dato a Mirko l’altro giorno: Pensare da Informatico. Ma come direte, dopo tutte queste chiacchiere ci spiattelli un’altra astrattezza da quattro soldi? Al contrario! Sto parlando di un libro vero e proprio. Pensare da Informatico (Versione Python) è l’unico testo che mi sento di consigliare davvero ai principianti. E’ gratuito ed è ottimamente tradotto da Alessandro Pocaterra. L’edizione originale è giunta da poco alla terza edizione (novembre 2011), mentre credo che l’italiana sia ferma alla seconda, che va benissimo comunque.

Nella Prefazione Jeff Elkner racconta che era alla ricerca di un testo adatto all’insegnamento della programmazione nelle scuole americane. Il grande Richard Stallman gli consigliò di dare una occhiata a How to Think Like a Computer Scientist:

Quando lessi quel libro seppi immediatamente che volevo usarlo nelle mie lezioni. Era il testo di informatica più chiaro ed utile che avessi visto: il libro enfatizzava il processo di pensiero coinvolto nella programmazione piuttosto che le caratteristiche di un particolare linguaggio. Il solo fatto di leggerlo mi rese un insegnante migliore.

Mica male come premessa no? Python è il inguaggio scelto dagli autori (e in proposito vi consiglio di leggere introduzione e prefazione) ma davvero non è il linguaggio quel che conta. Leggete questo testo con attenzione e soprattutto senza fretta. Non passate al capitolo successivo se non siete sicuri di aver afferrato per bene ciò che avete appena letto. Si procede passo per passo affrontando tutti i principali temi della programmazione moderna. Vi assicuro che alla fine di questa esperienza saprete programmare a dovere, a prescindere dai linguaggi che in futuro vorrete studiare (e magari nel frattempo vi innamorerete pure di Python).

Fatemi sapere come è andata. Ci tengo molto.

Aggiornamento del 9.3.2012. Ho scovato per caso una versione PDF, ben fatta, di Pensare da Informatico.