Značilnost britanskega pristopa je v tem, da ministrstvo za šolstvo ne bo izdelalo podrobnega učnega načrta, temveč smernice za učenje programiranja, podrobnosti pa prepustilo šolam. Prav tako učiteljem nihče ne bo zapovedoval, katere programe naj pri pouku uporabljajo, namesto tega jim bo zagotovil čim širšo svobodo poučevanja. Ni odveč pripomniti, da se otroci v britanskih šolah začnejo učiti računalništvo že v nižjih razredih osnovnega izobraževanja. Pri nas bolj ali manj v tretjem triletju (triadi). Z novim pristopom želijo, da učenci pridobijo razumevanje, kako digitalni sistemi delujejo in kako pridobljeno znanje uporabiti pri programiranju oziroma reševanju problemov. To pa je tudi bistvo računalniške pismenosti, kot jo razumemo danes.

Zasuk v razumevanju računalniške pismenosti

Kar ni enostavno in pomeni odmik od obstoječega razmišljanja – tako učencev kot tudi učiteljev –, ki se bodo spoprijeli z dokaj zapletenimi načeli. Da znamo uporabiti kateri koli program, še ne pomeni, da razumemo delovanje računalnika, še manj, da smo res računalniško pismeni. Ta pomeni sposobnost abstrakcije, miselnega procesa, v katerem pride do razločevanja med idejami in objekti. Obvladati moramo algoritme, ki so osnova programiranja, znati si moramo predstavljati podatke in obvladati preprosto logiko. Šele nato lahko razumemo, kako računalniki mislijo. To pomeni zmožnost reševanja problema prek analize in abstrakcije podatkov pred prepoznavanjem, preizkušanjem in izvajanjem potencialne rešitve. Sliši se izobraženo in tako tudi je. Lahko pa povemo malce bolj preprosto. Najprej si moramo v glavi zamisliti, kako bomo rešili problem, ki ga želimo rešiti, razumeti, kateri podatki so nam na voljo in kaj nam ti govorijo. Šele nato pride na vrsto programiranje, ni pomembno, v katerem programskem jeziku ali s katerim bolj ali manj zapletenim orodjem. So pa pobudniki britanske spremembe poučevanja računalništva zapisali, da naj bi vsak učenec pridobil znanje programiranja v vsaj dveh programskih jezikih, eden od njih mora temeljiti na besedilnem programiranju in biti sposoben pravilne uporabe podatkovnih struktur, procedur in funkcij.

To, kar je spodbudno v britanskem pristopu, je, da ne zapoveduje uporabe natančno določenih programov, didaktičnih pripomočkov, temveč daje predloge. Učenci naj bi se na začetku učenja računalništva, torej v zgodnjih letih, igrali s programi, kot je Scratch, in igračami, ki jih lahko programirajo. Na višjih stopnjah pa naj bi prešli na programske jezike (orodja) Python, HTML, JavaScript in Java. Velja si jih ogledati podrobneje, saj lahko tudi sami katerega od teh uporabimo doma, ko se nenadoma pred nami pojavi potomec in prosi, da ga naučimo programirati.

Programiranje brez pisanja kode

Orodje Scratch (scratch.mit.edu) so leta 2006 razvili na ameriški zasebni raziskovalni univerzi MIT, omogoča pa izdelavo iger, interaktivnih zgodb in animacij, ne da bi morali napisati eno samo vrstico programske kode. Namesto tega ponuja navidezne gradnike – bloke z ukazi, podobnost s fizičnimi lego kockami je na mestu, ki jih združujemo, povezujemo med seboj in ustvarjamo razmeroma zapletene programe. Kako zapletene? No, en uporabnik je le s tem orodjem izdelal različico igre Flappy Bird. Moč orodja je v seznanjanju otrok z osnovnimi zamislimi programiranja, kot so zanke, spremenljivke in nizi, ne da bi se tega zavedali. Spoznavajo jih na podlagi poskusov in napak, pri čemer jim je na voljo veliko ukazov (gradniki) in kombinacij, kako so ti nanizani drug za drugim.

Njegova prava moč pa je nekje drugje. V veliki zbirki projektov, navodil, vadnic, ki so izdelane kot pomoč učiteljem, staršem in otrokom, da se ti lahko najprej vodeno, nato pa samostojno lotijo izdelave svoje igrice ali česa podobnega. Najbolj uporabni so že narejeni projekti, ki jih lahko vsak pogleda, uporabi ali spremeni in objavi kot svoj projekt, saj je vse prostokodno. Edina zahteva pri uporabi je, da pri svojem projektu navedemo uporabnika, čigar delo smo si izposodili.

Scratch je dolgo časa deloval v obliki samostojnega lokalno nameščenega programa, danes pa deluje v spletnem brskalniku, vse prej omenjeno pa je v oblaku. Samostojni program je še vedno na voljo, praktičen je, ko ga želite namestiti na računalnik brez ali s slabo povezavo s spletom. Pohvalno je, da je spletni vmesnik preveden tudi v slovenski jezik. A ne biti preveč navdušeni. Ne gre za celovit prevod, temveč so prevedeni le najosnovnejši deli strani.

BASIC za prve korake

Programski jezik BASIC je veljal za jezik, ki ga zaradi svoje enostavne rabe najraje izberejo začetniki v svetu programiranja. Ko so se po naših domovih bohotili hišni računalniki, dolgo pred osebnimi računalniki, je bil Basic del njih, pozneje pa je nastalo več različic tega programskega jezika. Kot zanimivost, Basic je bil nekaj časa najpomembnejši izdelek Microsofta.

BASIC je še vedno dobro orodje za vse, ki se želijo naučiti prvega programskega jezika, saj ponudi osnove, zakonitosti programiranja, ki jih pozneje potrebujemo, ne glede na to, na kateri programski jezik presedlamo. Različic je veliko, med njimi je tudi BBC-jeva. Ta je bila napisana za hišni računalnik BBC Micro, danes pa je na voljo tudi v različici za operacijski sistem Windows (ww.bbcbasic.co.uk). Namestite lahko brezplačno različico, ki funkcijsko ni omejena, je pa omejena v količini prostora za uporabnikov program in podatke (16 KB). Ne deluje tudi funkcija prevajanja programa v izvedbeno datoteko, ki omogoča, da program za okolje Windows deluje tudi zunaj vmesnika programskega jezika. Je tudi prostokodna različica programskega jezika Basic, torej brezplačna. Najdete jo na naslovu www.freebasic.net.

Programski jezik BASIC je primer pravega programiranja, saj programiramo tako, da na »prazen list« papirja pišemo ukaz za ukazom, z vsem, kar spada zraven. Natančno to, kar smo imenovali besedilno programiranje. Ne sestavljamo programa, tako da med seboj povezujemo pripravljene bloke, že izdelane procedure ali celo rišemo diagram poteka (algoritem), na podlagi katerega nato orodje izdela programsko kodo. Čeprav je ime besede »basic« sopomenka za nekaj lahkega, to nikakor ne pomeni, da s tem programskim jezikom ne moremo izdelati zapletenih in velikih programov. Hkrati pa je tudi najprimernejši način za učenje kodiranja. Ko usvojimo osnove, pa lahko dokaj hitro preidemo na katerega od zmogljivejših programskih jezikov.

Igrače ali resno delo

Otroci imajo radi lego kocke. Radi imajo tudi robote. Lego Mindstorms združuje oboje. Kocke, motorje, tipala in krmilno enoto, iz katere nastane robot in okolje, v katerem mu napišemo program, po katerem se ravna. Škoda, da je komplet tako drag in da je gradnja robota razmeroma težka. Mlajši otroci bodo potrebovali pomoč, pa čeprav so navodila za sestavljanje osnovnih robotov narejena pregledno in po načelu korak za korakom.

Druga pesem je programiranje. Lego ne more iz svoje kože, ponuja grafično okolje (različica okolja LavView) za programiranje, ki deluje po enakem načelu kot gradnja iz kock. Na voljo so različni gradniki (bloki z ukazi za motorje, tipala), ki jih sestavljamo in med seboj povezujemo, hkrati pa moramo vsakemu bloku določiti, kaj od njega pričakujemo. Na primer, koliko časa bo motor deloval ali kaj mora storiti, ko tipalo zazna želeni odčitek. Pravzaprav deluje po podobnem načelu kot Scratch, le da je vse skupaj malce bolj zapleteno in zmogljivo. Programe za Mindstorms lahko pišemo tudi v drugih programskih jezikih, vendar je to še toliko bolj zapleteno, primerno za študentska tekmovanja.

Lego je s svojim kompletom v tujini prodrl v osnovne šole, v Sloveniji pa se s takšnim uspehom ne more pohvaliti. Vzrok je v tem, da se je pri nas uveljavil drug komplet. FisherTechnic (www.fischertechnik.si) je s stališča gradnje robotov enostavnejši, je pa tudi res, da so ti bolj podobni industrijskim robotom kot pošastim, humanoidom, ki jih lahko naredimo z gradniki lego kompleta. Še ena razlika je. Okolje za programiranje je drugačno. Namesto da bi med seboj sestavljali gradnike z že vključenimi ukazi, tu izdelamo od začetka do konca diagram poteka (algoritem). Program rišemo, orodje pa iz diagrama naredi programsko kodo, ki jo robot razume. Kar je v osnovi celo boljše. Otrok mora razumeti, kako program poteka, to pa razume, ker riše diagram, v katerem je vse prikazano. Za vsak motor, tipalo mora uporabiti grafični lik, ki mu je dodeljen, hkrati pa v diagram riše zanke, ki povedo, kdaj oziroma zakaj se izvrševanje programa iz neke točke vrne nazaj po diagramu, in pogojne odločitve, ko gre program pri izpolnjenem pogoju po drugi poti, kot če pogoj ni izpolnjen. Kot smo omenili, je diagram poteka oziroma algoritem nekaj, kar moramo v glavi ali na papirju narediti, preden se lotimo programiranja. Delno temu sledi tudi programski vmesnik kompleta Mindstorms, vendar povezave med gradniki, zanke in pogojne odločitve niso tako enostavno razumljive.

Naslednji koraki

Osredotočili smo se na načine za začetno učenje programiranja, ko pa otrok osnove usvoji, sledijo naslednji koraki. Zanimivo je z računalnikom krmiliti drugo napravo. S tem se učimo, kako računalniško krmiljenje deluje in kako pišemo programe za tovrstne rešitve. Mikrokrmilnik Arduino (www.arduino.cc) je več kot primeren izbor. Enostaven, zmogljiv in poceni.

O »malini«, poceni kartičnem računalniku Raspberry Pi, smo že veliko pisali. Zanimivo pa je, da so ga razvili z idejo, da postane najprej učni pripomoček, šele potem kaj drugega. Ni primeren le kot učni pripomoček za učenje programiranja, temveč tudi kot osnova za celo vrsto projektov »naredi sam«. Primeren jezik za pisanje programov zanj je Python.

Tudi igre lahko pomagajo pri učenju programiranja, čeprav se morda sliši malce čudno. A ne vse. Minecraft (tinyurl.com/pfjsf4o) ni samo zlaganje »navideznih« kock, pridobivanje uporabnih predmetov in raziskovanje nenavadnih svetov. Lahko je tudi programiranje. Igra omogoča dodajanje modifikacij (»mods«), s katerimi preoblikujemo svetove, objekte in podobno. Da napišemo »mod«, moramo programirati. Ni več čudno, da nekatere šole uporabljajo Minecraft kot učni pripomoček. Programski jezik za pisanje »modov« se imenuje Lua (www.lua.org).

Obstaja še cela vrsta drugih orodij in spletnih virov za učenje programiranja. Za konec omenimo spletno mesto http://www.codecademy.com/, kjer so brezplačno na voljo interaktivne vadnice za spoznavanje s celo vrsto programskih jezikov.

Je pa popolnoma vseeno, s katerim programskim jezikom vstopimo v svet programiranja. Bistveno je, da usvojimo analitično mišljenje, da razumemo, kako računalnik deluje, in zakaj so programi takšni, kot so. Ko imamo enkrat neki programski jezik v malem prstu, preskok na drugega zahteva le nekaj časa, da se naučimo njegovih ukazov, sintakse in posebnosti. Zagotovo pa bo znanje programiranja, vsaj osnovnega, v prihodnje bolj pomembno od znanja uporabe računalnika. Znati bomo morali rešiti problem, ne pa le urediti besedila ali preglednice!

Moj mikro, julij avgust 2014 | Marjan Kodelja