Per alcuni le feste sono rivedere Una poltrona per due, rileggere Dickens o sentire il concerto di Capodanno; avendo un animo profondo nerd, io ho rivisto le lezioni che nel 1986 Hal Abelson ha tenuto al MIT, il mitico corso 6.001.
Le lezioni sono da qualche anno disponibili su YouTube e in particolare trovo fantastico l’incipit della prima lezione.
In questa ora abbondante di esposizione si trova tutto il necessario per fare sbocciare (o rinvigorire) l’amore verso la programmazione.
A supporto di questo corso introduttivo stava uno dei più importanti libri sulla computer science mai scritti – incredibilmente mai tradotto in italiano – ovvero Structure and Interpretation of Computer Programs (in breve SICP). Un testo sull’arte, i fondamenti e la filosofia della programmazione.
La portata di questi materiali (testo e lezioni video) è perfettamente sintetizzata così da Brian Harvey in un suo recente articolo:
SICP è stato rivoluzionario in molti modi diversi. Ha soprattutto alzato spettacolarmente l’asticella per i contenuti intellettuali destinati a presentare la scienza dei computer. Prima di SICP, il primo corso di Computer Science era quasi sempre riempito dall’apprendimento dei dettaglio di qualche linguaggio di programmazione. SICP si allontana dal dettaglio per insegnare modi più allargati di pensare al processo del programmare. Il testo si focalizza sull’idea centrale di astrazione: individuare schemi ricorrenti in problemi specifici e costruire strumenti software che li incorporano. Fa uso intenso dell’idea delle funzioni considerate come dati, difficile da imparare all’inizio e immensamente potente una volta appresa. Inserisce nel primo corso di scienza dei computer tre diversi paradigmi di programmazione (funzionale, a oggetti e dichiarativo), quando di fatto gli altri corsi neanche ne illustrano uno.
Italo Calvino sosteneva che classico è ciò che tende a relegare l’attualità al rango di rumore di fondo e in questo momento dove si parla di temi avanzati come la programmazione funzionale o il reactive programming è incredibile come in questo materiale ci sia tutto il necessario per capire da dove arrivano le idee e gettare le basi per padroneggiarle.
Molta della editoria informatica si è annichilita nel tentativo di semplificare i concetti che stanno alla base della programmazione, con testi che provano ad avvicinare i lettori senza nessun livello di astrazione e ponendo il focus solo sugli esempi pratici, dimenticando che i linguaggi passano mentre i concetti restano, tanto che una intera generazione di informatici rimane basita dai processi di reclutamento delle grandi aziende come Google, Facebook o Amazon.
Se durante un colloquio vi chiedono qualcosa che suona difficile, state sicuri che la risposta è tra le righe di Structure and Interpretation of Computer Programs. Buona lettura.