Venerdì sera siamo stati alla cena annuale a base di panzerotti della nonna paterna di Orka.
A questa cena partecipa tutta la famiglia, inclusi il cugino S. (quello che Orka definisce il "suo cugino quello figo").
S. ha fatto l'ITIS, come me, con specializzazione informatica, come me. Adesso ha scelto, come facoltà, una in cui si fa della programmazione (non è Informatica, ma non mi ricordo esattamente).
Ovviamente, essendo io PikkoloProkrammatoreYah, mi ha preso come riferimento per tutti i problemi inerenti. Così, durante la cena (beh, più dopo, visto che durante eravamo impegnati a sbranare più panzerotti possibili) mi ha chiesto delucidazioni su alcuni concetti di programmazione.
Ora, vedendomi chiedere da uno, che ha comunque fatto l'ITIS con specializzazione Informatica e che ha quasi finito il primo semestre di università, chiarimenti sugli array, m'ha fatto un po' ragionare sul come si sia malamente evoluto l'insegnamento dell'informatica.
Adesso insegnare l'informatica corrisponde più o meno ad insegnare un linguaggio di programmazione. Ma soprattutto, chi vuole imparare a programmare pensa che basti imparare un linguaggio.
Non è così.
Quando ho fatto l'ITIS io, il mio professore di Informatica (una disciplina che includeva la programmazione, ma non solo) ci spiegava per filo e per segno cosa succedeva dentro al computer in corrispondenza di un certo comando. Ce lo spiegava con tanto di disegni, freccette, ecc... in modo che capissimo che, ad esempio, se dichiaravamo una variabile, il computer creava una specie di "cassetto" in memoria in cui riporre il valore di quella variabile.
Quando ho chiesto a S. se i suoi insegnanti facessero così mi ha risposto che no, a lui nessuno ha mai fatto schemi di questo tipo, e che anzi, difficilmente venivano spiegate queste cose.
Sono rimasto basito. Ok che i professori non sono tutti uguali (accettabile), che possono spiegare le cose in modo diverso (accettabile con riserva) ma che uno esca dall'ITIS senza avere ben chiaro in testa un array, a me pare fantascienza. Apocalittica.
Non parliamo di quando gli ho chiesto di classi e strutture dati aggregate. Apriti cielo.
Ho poi scoperto che, sia all'ITIS che all'università, il linguaggio di riferimento per insegnare la programmazione è il Java.
Qui ho un po' storto il naso. Nonostante in molti, infatti, sostengano che java è un buon linguaggio per imparare a programmare, non mi trovano d'accordo. Come non consiglierei un linguaggio come C#.
Il fatto è che in Java, come C#, tutto è una classe, quindi si anticipa l'uso delle classi per risolvere problemi semplici a chi non ha mai visto una classe, ne tanto meno strutture dati più semplici. Ovvio che quando gli si presentano le classi lo studente faccia un po' di confusione, non riuscendo a capire la finalità di queste strutture dati, non avendo paradigmi di programmazione diversi con cui confrontarsi.
Con queste premesse, è ovvio che lo studente non riesca a capire le strutture dati di base (come gli array), e che abbia difficoltà a capire le finalità di quelle più complesse, come le classi.
Il fatto è che, poichè in breve tempo l'informatica si è evoluta in un mondo vastissimo, non basta il tempo materiale ad insegnarne i concetti basilari (informatica teorica) e a fare in modo che questi si radichino negli studenti. Il goal che si prefiggono i corsi tecnici dell'ITIS non è più formare tecnici qualificati in Informatica, ma scimmie che conoscano un linguaggio da utilizzare per scrivere programmi che altri pensano per loro.
Lo stesso dicasi per i corsi di studio universitari in cui la programmazione è solo vista come un accessorio del piano studi, in cui l'importante è che lo studente superi l'esame di programmazione dimostrando di avere imparato la sintassi, piuttosto che di saper progettare un software dall'inizio alla fine.
E' stato comico quando ci siamo confrontati, S. e io, sui rispettivi insegnamenti dell'Assembly: quando mi ha chiesto cosa facessi io con l'Assembly, con il tono di sufficienza di chi reputa una cosa inutile, gli ho spiegato che noi si montava le schede elettroniche ad Elettronica, poi si attaccavano al computer e si pilotavano con programmi ibridi C/Assembly. C'è rimasto di sale, pensando di avere a che fare con uno della Nasa. Ma sono cose che, quando studiavo io, insegnavano a tutti (poi io ho lasciato perdere l'elettronica perchè non mi interessava per nulla).
Ne sono uscito un po' preoccupato, perchè se è questo il futuro che intendiamo dare all'Informatica in Italia, siamo ben lontani dal poter essere minimamente competitivi, in futuro.