Scratch-mietteitä: oppiiko sillä perusasiat?

Scratch on ohjelmointikieli jolla nykypäivänä moni lapsi saa ensikosketuksen ohjelmointiin. Onko se oppimisympäristönä optimaalinen oppimiseen, ja mitä yleensäkin lasten kannattaisi ohjelmoinnista ensi alkuun oppia?

Lasten kanssa ohjelmointia käsitellessä Scratchin verraton etu on visuaalisuus; kaikki käskyt koskevat visuaalisia hahmoja, jotka käskytetään tekemään jotain. Yksinkertaisten pelien kannalta oleelliset asiat, kuten hahmojen koskettamisen tunnistus, ovat sisäänrakennettuina.

Samoin itse ohjelmoinnin tekeminen graafisilla blokeilla on ihan mainio idea, koodaus on nopeaa ja ainakaan käskyissä kirjoitusvirheitä ei tule tehdyksi (saati sitten unohtaa jonkun rivin lopusta puolipistettä). Erilaisissa blokeissa olevat muodot kertovat, millainen blokki sopii mihinkin (muuttujat ovat pyöreitä muotoja, ehtolauseet kuusikulmioita jne.) Samoin värikoodaus on kiva.

Monet aloittavat koodauksen yksinkertaisella käskytyksellä: kymmenen pistettä eteenpäin, käänny 45 astetta oikealle, 20 pistettä eteenpäin.. tällä on hyvä aloittaa, ja se auttaa ymmärtämään automaatiota.

Kuitenkaan ohjelmointi ei ole tyypillisesti pelkkiä suoria käskyjä, vaan muuttujia, ehtolauseita ja silmukoita. Näiden perusteiden opettamiseen Scratch on yllättävänkin monipuolinen; silmukoista ja ehtolauseista löytyy lähes kaikki mahdolliset tarvittavat: jos-niin, jos-niin-tai-muuten, toista-x-kertaa, toista-kunnes jne.

Yksinkertaisten ehtojen määrittäminen on tehty myös helpoksi, kun esim. ”Koskettaako kohdetta X” ja ”Koskettaako väriä Y” ovat valmiina käytettäväksi.

Scratchin käyttöliittymä on selkeä ja koodausblokit varsin yksiselitteisiä. Grafiikan luonti on helppoa ja käytössä on (ainakin lapsien käyttöön) hauska kirjasto hahmoja (”spritejä”) ja taustoja.

Sen sijaan heikompi osa-alue on tekstityökalut. Blokkeja joilla voi yhdistää merkkijonoja ja vertailla niitä löytyy kyllä, mutta ne ovat melko lailla kömpelökäyttöisiä. Esimerkiksi jos haluaa kertoa pelaajalle pelin lopussa pistemäärän, täytyy merkkijono koostaa näin:

kun esim. Pythonissa sama tehdään hiukan selkeämmin:
Tulos = ”Sait ”+Pisteet+” pistettä ”+MaxPisteet+” pisteestä”

Samoin tekstin tuottaminen ruudulle onnistuu ainoastaan hahmojen puhe- tai ajatuskuplina, joka on jossain tilanteissa aika riittämätön menetelmä.

Jostain on kuitenkin lapsilla ohjelmoinnin opettelu aloitettava, ja Scratchin avulla saattaa saada vähän vähemmän motivoituneemmankin ymmärtämään peruskonseptit käskyistä, ehdoista, muuttujista ja silmukoista.