- Il contenuto teorico matematico nei corsi di Informatica si sta riducendo
- L'acquisizione di competenze in diversi linguaggi di programmazione sta lasciando il posto ad un approccio di ricopiatura di pezzi di codice, l'utilizzo di grosse librerie o package specializzati
- Le competenze acquisite sono insufficienti per l'industria del software odierna, mentre invece sembrano indicate per l'industria dell'outsourcing e così si producono professionisti facilmente sostitubili.
Ma quali sono le ragioni che li inducono a pensare che non sia corretta la generale adozione di Java come linguaggio di programmazione nei corsi introduttivi. Sicuramente la popolarità del linguaggio nell'ambito delle applicazioni Web e la relativa facilità con cui permette anche ai novizi di creare programmi dotati di grafica ha favorito questa scelta, ma verificano le difficoltà già nel primo corso di sistemi. Gli studenti hanno difficoltà nello scrivere programmi privi di interfaccia grafica, non riescono a percepire la relazione tra il sorgente e le elaborazioni hardware e non riescono ad entrare nella semantica dei puntatori.
Mi sembra molto chiaro il principio che spiegano in merito alla bellezza della programmazione. L'essenza della programmazione consiste nella riduzione di processi complessi in una serie di semplici operazioni primitive. Il linguaggio Java, secondo gli autori, invece di adattarsi a questa essenza, propone un approccio alla "idraulico in un negozio di ferramenta": rovistando in una moltitudine di cassetti - package - si arriverà a trovare un qualche attrezzo - classe - che più o meno è adatto a fare quello che ci serve. Come lo fa non è importante. Questo porta gli studenti ad essere dei confezionatori di pezzi di programma, ma non dei programmatori.
Un altro problema che individuano nell'uso delle librerie Java e dei framework è il fatto che gli studenti non riescono ad avere la percezione del costo di runtime di quello che producono, perchè è estremamente difficile ricostruire ciò che ogni metodo chiama e tutto il codice eseguito.
Devo dire che le ragioni esposte non mi convincono molto se applicate solo a Java. Sembra più che altro che si stia facendo una critica alla programmazione orientata agli oggetti, perchè le problematiche esposte si possono facilmente applicare a tutti quei linguaggi che si basano su questo paradigma. Ma del resto, chiariscono nel proseguio dell'articolo, che considerano importante imparare il Java, ma come competenza aggiuntiva.
Quindi per chiarire riassumendo, i due professori ritengono che come primo linguaggio di programmazione, per formare basi solide, non sia adatto un linguaggio object oriented, ma piuttosto un linguaggio imperativo, e sopratutto non si debba praticare un unico linguaggio, ma vederne diversi.