Tag kommandoen over computeren – Københavns Universitet

Datalogisk Institut, DIKU > Nyheder > DIKU-nyheder 2013 > Tag kommandoen over co...

20. december 2013

Tag kommandoen over computeren

kodning i folkeskolen, Hour of Code

Kronik af institutleder for Datalogisk Institut, Martin Zachariasen i JP 14. december 2013 om hvorfor og hvordan man kan og bør fremme børns digitale dannelse allerede fra folkeskolen. Den konkrete anledning: Den store online event #HourOfCode.

Kronik bragt i Jyllands-Posten den 14. december 2013

Vi bruger computeren mere og mere. De fleste af os gør det, fordi det giver os nye muligheder på vores arbejde, for at møde andre på nettet og blive underholdt. Men de fleste af os er kun brugere og ikke skabere af computersoftware.

af MARTIN ZACHARIASEN professor, dr. scient., ph. d. Datalogisk Institut Københavns Universitet

Som mennesker tilpasser vi os attraktive og spændende værktøjer - ikke mindst tablets og smartphones.

Hvordan kan vi, og især nutidens børn, tage kommandoen over fremtidens computere? Det kan vi gøre ved at lære børn at programmere computere - eller endnu bedre: lære dem at tænke i computerbaserede løsninger.

I disse dage deltager flere end tre millioner børn fra 160 lande i godt 24.000 timers on-line undervisning i programmering under overskriften Computer Science Education Week (csedweek. org). Det bliver verdens største lærings-event nogensinde. Børnene vil få mulighed for at skrive deres første computerprogram under kyndig vejledning af nogle af verdens bedste dataloger og programmører - herunder Bill Gates fra Microsoft, og Mark Zuckerberg fra Facebook.

Børnene skal bl. a. guide en Angry Bird rundt i en labyrint ved at angive kommandoer som "et skridt frem", "drej til venstre" og "drej til højre". Det lyder ikke så indviklet, og det er programmering dybest set heller ikke.

Programmering handler om at fortælle en computer præcist, hvad den skal gøre. Børnene, som deltager i Computer Science Education Week, kan programmere computeren ved at placere en række byggeklodser på skærmen i den rigtige rækkefølge. Mange - og især Hollywood - forbinder programmering med indviklede koder og uforståelige skærmbilleder. Det er blot et udtryk for en kompakt og præcis måde at udtrykke sig på, men er ikke kernen i programmering.

Kernen er trin for trin at angive, hvad computeren skal gøre - længere er den ikke.

Allerede som 12-årig knægt i Tórshavn fik jeg i 1979 mulighed for at skrive mit første computerprogram.

Min far hjembragte en svensk ABC 80 hjemmecomputer og gav min to år yngre bror og mig frit lejde til at lege med den. Der var kun et par spil tilgængelige til computeren, og de skulle indlæses via kassettebånd. Indlæsningen var langsommelig og ustabil, og efter kort tid kedede spillene os.

Derfor udforskede vi de alternative muligheder, som computeren gav mulighed for. Vi fandt ud af, at der var noget, som hed BASIC, og efter en kort introduktion fra vores far var jeg i gang med at skrive mit første program i BASIC. Det blev en computerudgave af det klassiske spil Kryds og Bolle. Et bræt på tre gange tre felter, to spillere, der skiftes til at placere et kryds og en bolle; den, der først har tre på stribe, vinder. Mit program gjorde ikke andet end at bede om næste brætposition fra hver af de to spillere og tegne den aktuelle stilling på skærmen. Så min bror og jeg fik da sparet på papiret, men vi var ikke i stand til at udleve drømmen om at lave et program, der kunne agere modspiller. Det var lidt for svært dengang.

Men udviklingen af dette simple computerspil åbnede en verden, som har fascineret mig lige siden.

Udviklingen lærte mig nogle principper, som er helt uafhængige af programmeringssprog og computere.

Tænk på de to spillere i Kryds og Bolle. Den første tegner et kryds, og den anden tegner en bolle.

Dette gentager sig indtil en af spillerne har tre på stribe eller brættet er fuldt. Her har vi gentagelsen eller iterationen - et centralt element i programmering. Det kunne jeg godt finde ud af.

Men jeg havde ikke indset, at forskellen mellem at modtage brætpositionen fra den første spiller og at modtage brætpositionen fra den anden spiller var minimal: Eneste forskel var symbolet, der skulle tegnes på skærmen. Så i stedet for at bruge den samme programstump til at indlæse de ønskede positioner fra de to spillere, lavede jeg to udgaver - en til den første spiller og en til den anden spiller.

Senere lærte jeg at gøre dette smartere, nemlig at generalisere eller abstrahere, hvilket her betyder at programmere en fælles programstump, der kunne modtage positioner fra begge spillere. Mit første program gav mig således en indsigt, der var langt mere fundamental end syntaksen og semantikken i BASIC.

Teknologi skabes af mennesker og bruges som et værktøj af mennesker.

I bogen "Program or be programmed" drager forfatteren, Douglas Rushkoff, paralleller mellem nutidens informationsteknologi og ældre informationsteknologier som skriftsproget, bogtrykkerkunsten, radio og tv. Skriftsproget var indtil for få hundrede år siden for de få udvalgte, og alle andre måtte nøjes med at lytte til oplæsning fra offentlige/ religiøse tekster.

Bogtrykkerkunsten gav massen mulighed for at læse tekster på egen hånd. Men at skabe egne værker forblev en mulighed for de få! Det samme gjaldt radio og tv i det 20. århundrede. Pointen er, at magten og ansvaret ligger hos dem, der skaber teknologien, og som er i stand til at udnytte teknologien til fulde.

Informationsteknologien giver alle mulighed for at komme til orde på nettet. Så hvis vi sammenligner med tidligere teknologier, er vi nået langt. Men alligevel står vi over for en tilsvarende og mindst lige så stor udfordring. I dag kan alle mennesker være skabere i forhold til gamle teknologier, f. eks bogtrykkerkunsten, men i forhold til informationsteknologien er de virkelige skabere dem, der programmerer den software, som vi bruger til daglig. Det er dem, der skaber mulighederne, og som i sidste ende bestemmer, hvad du kan og ikke kan.

Computerens potentiale som teknologi er ukendt. Grænsen for computerens beregnings-og lagerkapacitet rykker sig hele tiden og følger det, vi kalder Moores lov. Denne lov - eller lovmæssighed - forudsiger, at computerens kapacitet mere end fordobles hvert andet år. Vi ser en stigende anvendelse af computere i funktioner, som for blot 10-15 år siden var menneskets domæne. Tænk på netbank og digital selvbetjening inden for det offentlige. Men også langt mere komplekse opgaver som børshandel og andre analytiske opgaver overlades i stigende grad til computere.

Vi støtter vores hukommelse med hurtige opslag i Google, Wikipedia, m. m. Computeren og nettet er blevet hjernens forlængede arm - en kilde til information og til analytisk aktivitet.

Hvor går grænsen for, hvad en computer kan hjælpe os med? Før computeren blev opfundet, blev matematiske beregninger betragtet som noget, kun mennesker var i stand til. Mekaniske regnemaskiner blev betragtet med ærefrygt - som noget, der havde guddommelig kraft. I dag er det vel de færreste, som lader sig imponere over computerens evne til at udføre komplekse matematiske beregninger.

For 10 år siden var velfungerende talegenkendelse, meningsfuld automatisk oversættelse mellem forskellige sprog, selvkørende biler og Jeopardy-spillende computere nærmest utopi. Inden for de seneste tre år har vi fået Siri, Google Translate, Google Driverless Car og IBM Watson, der ganske overbevisende løser disse opgaver.

Grænserne for computernes muligheder er svære at få øje på, og mulighederne for menneskelig kreativitet og innovation er tilsyneladende ubegrænsede. Hvordan giver vi nutidens børn de bedste forudsætninger for at kommandere fremtidens computere? En del af svaret er, at alle børn bør lære at programmere. Ikke fordi at alle børn skal blive programmører, men fordi de igennem programmeringen får et indblik i, hvad man kan - og ikke kan - med en computer.

Den anden del af svaret er, at børn bør lære computational thinking, dvs. en tankegang, der handler om at formulere problemer og deres løsninger på en måde, som umiddelbart egner sig til computerbehandling.

Det drejer sig om at overføre nogle af de gode principper fra programmering til generel problemløsning, herunder abstraktion, generalisering, genkendelse af mønstre og opdeling.

Målet må være, at fremtidens computere er under kommando af nutidens børn. I bogen "Program, or be programmed" udtrykker Douglas Rushkoff det således: »In a digital age, we must learn how to make the software, or risk becoming the software.«.

Original artikel