9 Commenti

Il codice è il fine, non il mezzo

Come imparare a programmare

di

thumbnail

19

set

2012

L’università non fornisce preparazione sufficiente; le elementari pensano che si impari a programmare programmando…

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.




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 10.538 volte | Tag: , , , , , , , , , , , , , , ,

9 commenti

  1. fracatz

    il programmatore deve racchiudere in sè le capacità del trouble-finder e del trouble-fixer, dando per scontata la sua abilità e l’amore per le scienze matematiche

  2. kastaldi

    Io sono per la formazione di una persona che impara ad usare il cervello da un punto di vista logico, sono per l’informatizzazione e per l’insegnamento intelligente, quello che ti permette di applicare le tue conoscenze a ciò che ti circonda e che renda l’apprendimento il più naturale possibile. Da questo alla programmazione il passo è più breve di quello che si pensi però, secondo me, questa richiede doti troppo specifiche per un bambino delle elementari che ancora deve capire dove andrà a finire. Forse lo introdurrei nel biennio delle superiori visto che ci sono anche altre materie specifiche (officina, etc.)

  3. Lucio Bragagnolo

    Ha centrato il punto della discussione. Un bambino delle elementari non sa dove andrà a finire, ma ugualmente gli insegna a leggere, scrivere, eseguire le quattro operazioni, come è fatto il corpo umano, una seconda lingua eccetera. Tutte cose che gli saranno generalmente utili, dovunque finisca. Il tema è se in questo elenco di nozioni generalmente utili rientrino al giorno d’oggi anche quelle della programmazione, per dove può arrivarci un bambino. Che appunto, certamente non impara alle elementari il calcolo infinitesimale, ma l’aritmetica di base sì.

  4. LP

    Quando la scuola era ancora scuola; alle elementari si imparava a risolvere problemi con il metodo in quarta e quinta: ipotesi, tesi e soluzione. I problemi facevano riferimento alla geometria euclidea: calcolo delle aree, perimetri ecc. Parlare di programmazione alle elementari è da incompetenti, però il Logo la tartaruga in Pascal la utilizzerei.

  5. Marco Grazia

    quoto LP perché stavo appunto pensando alle stesse cose però con una piccola differenza, ovvero il logo non è fatto tanto per apprendere la programmazione di un computer ma di un’approccio ad una soluzione.
    Come fa la tartaruga ad arrivare all’angolo? Come si disegna un cerchio? La programmazione vi rientra in senso lato.
    Ma se la programmazione del Logo viene approfondita anche a livello dei Licei in una tematica più orientata alla logopedia allora sì che sarebbe un approccio interessante.

  6. G

    Non sono d’accordo. Questa tuttologia va oltre la mia comprensione, magari è un limite mio, anzi sicuramente lo è. Io trovo estremamente errato insegnare la programmazione senza insegnare l’ingegneria della programmazione. Con la complessità odierna saper programmare senza conoscere i pattern, quindi in maniera istintiva, equivale a smanettare, ossia a *non* programmare, come ho fatto io per troppo tempo, illudendomi di essere un programmatore. Non si potrebbe semplicemente fare bene le poche cose che ci sono da fare? Secondo me non si può risolvere i problemi, raddoppiando sempre la posta. In Italia manca la matematica, e manca molto. Anche ai licei se ne fa una minima parte (per lo più analisi), io ho frequentato l’ITIS e ho trovato liceali che non avevano mai fatto una trasformata di Laplace.

  7. Lucio Bragagnolo

    Quando l’articolo afferma

    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.

    mi pare che tocchi esattamente la questione da lei sollevata, quella dei fondamentali.

  8. Duccio

    Ho recentemente tradotto il celebre tutorial di Chris Pine “LearnToProgram” per imparare a programmare in Ruby partendo da zero. L’autore concorderebbe sicuramente con questo articolo, nelle sue stesse parole “Siccome la programmazione è essenzialmente -problem solving- è cruciale incoraggiare il più possibile lo studente in tal senso a ogni occasione”.

    Inoltre concordo pienamente con l’autore nel tessere le lodi di Ruby come linguaggio per finalità didattiche. Uno degli aspetti più interessanti del tutorial è come alcune cose tendano quasi a *spiegarsi da sole*.

    Il tutorial lo trovate qui: http://corsorubyonrails.com/imparare-a-programmare/

  9. Se la matematica fosse stata mal calcolata | Apogeonline

    [...] In Estonia, giova ricordare, è nato Skype, a scuola si insegnano robotica e programmazione (su cui si è pronunciato anche il nostro Andrea Granata) e il 94 percento dei cittadini dichiara il reddito [...]

Lascia il tuo commento