1 Commento

Struttura e interpretazione

Perché leggere i classici

di

thumbnail

13

gen

2015

Finite le feste e metabolizzati cibo e riposo, una delle cose belle che rimane è la possibilità di riavvicinarsi a ciò che vale.

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.




Andrea C. Granata (@andreacgranata) ha pigiato i primi tasti su un bianco VIC20 quando ancora Internet era in fasce. Un po’ sistemista un po’ sviluppatore, ha una passione per FreeBSD, programmazione in Ruby, metodologie Agile e infrastrutture cloud. Si occupa di Enterprise Architecture e di DevOps per una delle più importanti banche italiane. Nel tempo libero si divide tra la passione per la cucina, il pattinaggio di figura e i viaggi in Oriente.

Letto 3.888 volte | Tag: , , , , , , , , ,

Un commento

  1. Programmare è un gioco | Apogeonline

    [...] di capacità di astrazione è tornare a cimentarsi con le basi; ne avevamo già parlato in un post di qualche mese fa. Chi però è meno attratto dall’impostazione accademica e privilegia invece un approccio [...]

Lascia il tuo commento