Scratch-mietteitä: opettaako se tosielämän taitoja?

Scratch on monille koululaisille ensimmäinen kosketus koodaukseen, ja kuten aiemmassa tekstissä totesin, se ei ole ollenkaan hassumpi työkalu peruskonseptien oppimiseen; muuttujat, silmukat ja ehtolauseet tulevat tutuiksi, ja lasten oppimisen tueksi on plussaa että Scratchilla on hyvin helppo rakentaa yksinkertaisia pelejä ja muita graafisia juttuja.

Itse vietän päivät pitkät koodaten, joten koen olevani jollain lailla pätevä arvioimaan, millaisia koodaustaitoja elämässä oikeasti tarvitsee. Kysymys onkin, opettaako Scratch näitä olellisia taitoja?

Väitän että suurin osa maailman ohjelmista tekee seuraavaa: ne nappaavat tietoa sisään yhdestä lähteestä, tekevät sille jotain toimenpiteitä ja tuuppavat tietoa toiseen paikkaan. Automaattista Tietojen Käsittelyä (ATK) siis. Toisin sanoen tietoa siirretään, sitä muokataan uuteen muotoon, sieltä haetaan, sitä järjestetään, siitä lasketaan jotain yms. yms. Aika suuri osa koodista puksuttaa konesaleissa pistämässä bittejä jonoon, eikä suuri yleisö tiedä näistä mitään.

Toinen ”aikuisten oikea” tarve mitä ohjelmistoilta vaaditaan on käyttöliittymä. Käyttöliittymä kytkeytyy 95% tapauksista edellisessä kappaleessa kuvattuun, eli tarvitaan käyttöliittymä tiedon syöttämiseen sisään, tiedon muuttamiseen, tietyn tiedon hakemiseen isosta datamäärästä tai tiedon ulos raportointiin halutussa muodossa.

Julma totuus on että Scratch ei tue näiden asioiden oppimista millään muotoa! Scratchiin ei pysty millään keinolla syöttämään ulkopuolista datatiedostoa, sen tiedonmuokkaus ja -hakuominaisuudet ovat todella alkeelliset ja sillä ei pysty tallentamaan ulos datatiedostoa. Scratch on siis suljettu hiekkalaatikko jossa kaikki ohjelmoitava toiminnallisuus liittyy siihen mitä ruudulla nähdään.

Ainoa tiedonkäsittelyyn viittaava Scratchin ominaisuus ovat muuttujalistat, ja nekin pitää luoda käsin skriptissä, mikäli haluaa jonkun datasetin ohjelman käytöön. Näiden kanssa voi demonstroida jonkinlaista tietojen käsittelyä, muokkausta ja hakua.

Miten sitten nuoremmille koodarien aluille voisi opettaa ”oikeaa tietojenkäsittelyä”? Scratch ei siihen oikein taivu, ja joka tapauksessa ohjelmointiharrastusta jatkettaessa on siirryttävä ihan oikeisiin ohjelmointikieliin. Mikä olisi paras?

Jostain kumman syystä nykyisin useimpien vastaus ”seuraavaksi ohjelmointikieleksi” on Python. Python on yksinkertainen, helposti opittava ja pyörii missä tahansa koneessa (mm. Chromebook), joten valinnan ymmärtää helposti. Sen heikkous on kuitenkin se, että vakiona se ei tue millään lailla käyttöliittymien suunnittelua. Väitän että (graafisten) käyttöliittymien suunnittelu on myös tärkeää ohjelmoijan oppia.

Tämän vuoksi itselläni on yksi ehdotus ylitse muiden: vanha kunnon Visual Basic! Ensin rakennetaan käyttöliittymä, ja sitten napeille ja muille komponenteille koodataan toiminta. Kieli on erittäin yksinkertaista (väittäisin että vielä helpompaa kuin Python), mutta kuitenkin täysin puhdas oliopohjainen kieli, jolla pystyy toteuttamaan aivan mitä tahansa (ja on toteutettukin). VB:n käyttö sitoo käyttäjän Windows-ympäristöön, mutta itse en ainakaan näe sitä ongelmana.

Visual Basicia tulen käsittelemään varmasti moneen kertaan myöhemmissä jutuissa, mutta nyt jo kannattaa painaa mieleen tämä mielestäni turhan aliarvostettu ohjelmointikieli.