Nel suo post di qualche giorno fa Lucio poneva la questione dell’opportunità di inserire l’insegnamento dei linguaggi di programmazione nelle scuole dell’obbligo e citava come esempio l’esperienza che si sta facendo in Estonia.
Istintivamente non si può che essere favorevoli all’idea di sfornare una generazione di eccellenti programmatori indirizzandoli a dovere sin da piccoli, ma trovo che non sia quello l’approccio giusto.
La prima considerazione da farsi è che per formare un buon programmatore occorre innanzitutto formare un eccellente risolutore di problemi. È su questo aspetto fondamentale che la scuola si deve concentrare. La capacità di trasporre la soluzione di un problema in codice viene solamente dopo.
Matematica, chimica, fisica, ma anche italiano, latino e greco, ci mettono davanti a una montagna di problemi da risolvere, e capire come farlo ci prepara a diventare programmatori più che imparare il linguaggio di programmazione al momento in voga.
Ovviamente è fondamentale che il calcolatore sia presente nella didattica – pensate a che bella lezione si potrebbe tenere illustrando la fisica implementata in giochi come Angry Birds – anche utilizzando linguaggi specifici come Mathematica o Prolog.
La seconda considerazione parte da una citazione del filosofo Ludwig Wittgenstein:
The limits of my language are the limits of my world.
Ogni linguaggio di programmazione si porta appresso un bagaglio di scelte (funzionale contro oggetti, statico contro dinamico eccetera) che influenzano fortemente il modo in cui un determinato problema viene affrontato. Il buon programmatore deve essere in grado di scegliere il miglior linguaggio per affrontare il problema senza essere condizionato da ciò che ha imparato durante i primi anni del suo percorso formativo. In questo l’università italiana non fa un gran lavoro: spesso l’insegnamento si limita a rudimenti di C e Java a un livello sostanzialmente inutilizzabile nel mondo del lavoro.
Ci vorrebbe una scuola che sforni programmatori in grado di risolvere senza intoppi problemi con FizzBuzz al primo colloquio e di imparare nuovi linguaggi di programmazione senza troppe difficoltà. Di certo non ci servono nuovi programmatori che non hanno la più pallida idea di che cosa stanno scrivendo.