[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