[Soci SLIP] incontro mercoledì 3/10 + riassunto 27/9

Lucio Crusca lucio a sulweb.org
Sab 29 Set 2007 11:28:26 CEST


Alle 22:53, venerdì 28 settembre 2007, Iron Bishop ha scritto:
> VB? Cos'è? Al Curie forse c'è un unico docente che fa C, mentre gli altri
> vanno a Pascal... ma in ogni caso non è importante il linguaggio usato, ma
> l'insegnamento delle basi della programmazione, 
Non sono d'accordo. Ci sono linguaggi che sono molto più adatti di altri per 
insegnare le basi della programmazione. Esempio estremo: per quale motivo la 
programmazione a scuola non viene insegnata in assembly? I concetti generali 
sono gli stessi, ci sono variabili, si possono definire funzioni, etc... però 
i dettagli che il linguaggio ti obbliga a conoscere per fare quelle cose sono 
troppi per potersi concentrare sull'insegnamento della programmazione in 
generale e si finisce a spiegare il perché lo stack cresce verso il basso 
(che forse non è più vero nelle CPU moderne a 64 bit, almeno quando non 
girano in emulazione 32).

All'università il primo corso di programmazione che ho seguito trattava il 
linguaggio Scheme. Inutile dire che fuori da lì non mi è mai più servito, ma 
è stato grazie all'uso dello Scheme durante il corso che certi concetti non 
proprio semplici sono risultati palesemente chiari ed ho potuto applicarli 
con facilità anche ad altri linguaggi. 

Dal punto di vista didattico VB non è come l'assembly, ma è comunque inadatto, 
perché porta al livello del linguaggio molte particolarità di Windows che o 
si è costretti a sapere/capire assieme al linguaggio oppure si prendono come 
dogmi, che poi sarà difficile sradicare quando si dovrà passare ad altro 
linguaggio. Il C invece non va bene per spiegare i concetti della 
programmazione, perché è troppo vicino all'hardware, non come l'assembly ma 
lo stile è quello; può andar bene come secondo corso dopo aver imparato le 
basi.

In pratica un linguaggio per potersi dire adatto all'insegnamento della 
programmazione deve:
1. essere di alto livello per permettere agli studenti di ottenere risultati 
tangibili con poche istruzioni
2. nascondere tutti i dettagli implementativi (e dannosi dal punto di vista 
didattico) del sistema sottostante e del modo in cui il linguaggio stesso 
implementa le istruzioni
3. non richiedere lo studio di troppa teoria della programmazione prima di 
poter fare pratica
4. permettere allo studente di continuare in modo autonomo lo studio dei 
concetti più avanzati senza dover prima imparare un altro linguaggio.

Se poi il linguaggio, oltre a prestarsi bene all'uso didattico, è anche utile 
nel mondo del lavoro ancora meglio.

Java andrebbe bene se non fosse per il punto 3, che lo rende un linguaggio 
buono per un corso avanzato, in quanto obbliga da subito a far propri i 
concetti di classe, interfaccia, ereditarietà e polimorfismo. E qui parlo per 
esperienza: ci ho provato per ben 4 corsi diversi ad isegnare Java a chi non 
ne sapeva nulla o quasi cercando di rimandare almeno alla terza o quarta 
lezione quei concetti. Il risultato è che le prime 3 lezioni sono un puro 
atto di fede degli studenti e la quarta è ancora troppo presto per spiegare 
quei concetti. Poi magari sono io che come docente valgo poco, comunque 
questo è il motivo per cui non ho ancora tenuto il talk su Java che chiedeva 
RIccardo qui in lista.

Pascal non soddisfa il quarto punto, perché è un linguaggio vecchio dove la 
programmazione ad oggetti non è nemmeno contemplata (almeno non nel Pascal 
che insegnagno al liceo) ed un sacco di altre cose si fanno come le faceva 
Noè per programmare il navigatore della sua arca e non è possibile farle come 
si fanno al giorno d'oggi.

Il tutto IMHO, ovviamente, ma spero sia un'opinione abbastanza condivisibile.

Lucio.
-- 
Virtual Bit di Lucio Crusca
via Isonzo, 5   10069 - Villar Perosa
http://www.sulweb.org




Maggiori informazioni sulla lista Soci