linux user group brescia

immagine del castello

Archivio della mailing list

[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