[LugBS] Linux Day 2014 - presto che è tardi!
Enrico Colombini
erix a erix.it
Ven 3 Ott 2014 13:29:02 UTC
On 03/10/2014 14.35, a.l.e wrote:
> sarei interessato a sapere quali sono i problemi che vedi in scratch.
>
> l'anno scorso, ho accompagnato diversi bambini che volevano imparare a
> programmare e la mia impressione globale è piuttosto positiva.
Senza dubbio. Come dicevo, e' usabile.
Trovo alquanto curiosa l'impostazione che e' un misto di eventi,
multitasking, frammenti di programmazione strutturata e broadcasting
globale. Molto facile da usare a un primo approccio, ma se cerchi di
costruire qualcosa di appena piu' complesso devi fare delle discrete
contorsioni.
Come molti ambienti a blocchi (es. Unity 3D) Scratch incoraggia la
ripetizione manuale e tende verso lo 'spaghetti event system', il che
non mi pare del tutto coerente con l'obiettivo di insegnare i concetti
elementari di programmazione.
Noto che non si puo' agire direttamente su un altro sprite (il che
corrisponderebbe, in qualsiasi linguaggio moderno, a chiamare un metodo
di quell'oggetto); occorre invece fare una cosa sporca: lanciare un
messaggio globale e intercettarlo solo dallo sprite destinatario. Chi
impara a programmare cosi' dovra' prima o poi buttare via il concetto e
imparare a pensare in un altro modo.
Altro esempio: le caratteristiche degli sprite sono persistenti
(eredita' di Smalltalk?) per cui piazzamento e configurazione degli
sprite nell'editor vengono persi quando si lancia il programma: occorre
prenderne nota prima di eseguirlo e riprodurli da codice
nell'inizializzazione, il che non e' esattamente intuitivo per chi
inizia da zero.
Altro caso: cambiare scena, ossia cambiare sia sfondo che sprite, non e'
facile. Sia perche' ci sono eventi di entrata ma non di uscita, sia
perche' gli sprite invisibili restano tali alla fine del programma (vedi
punto precedente).
Ma questo e' gia' piu' comprensibile: Scratch e' fatto sostanzialmente
per scene singole, cercare di usarlo come linguaggio general-purpose e'
un po' una forzatura.
Nessuno di questi (e altri) punti ha eccessiva importanza per
l'obiettivo primario di Scratch, che e' quello di fornire una prima
introduzione interattiva ad alcuni elementi di programmazione nella
prima eta' scolare. Poi magari noi possiamo fargli fare molto di piu'
con orribili hack, ma non facciamo parte del suo target :-)
Se invece si vogliono trasferire concetti o costruire astrazioni, il
gradino e' assai piu' pronunciato che in un linguaggio classico.
(incidentalmente, noto che i messaggi sono dinamici ma il resto e' in
gran parte statico)
> una cosa mi è saltata agli occhi: i bambini sembrano utilizzarlo
> ripetendo gesti conosciuti piuttosto che sviluppando un filo logico...
> ma non essendo pedagogo, mi è difficile giudicare se ciò è buon segno o no.
Penso dipenda dall'eta': credo che il ragionamento logico si sviluppi in
seguito, a partire dagli esempi concreti.
--
.Erix.
Maggiori informazioni sulla lista
Lug
|