Olika programspråk

Då man går över från analog programmering till att arbeta på en dator, behöver man ett mer exakt språk. Datorn förstår inte vårt naturliga språk eller de symboler vi själva hittat på, utan vi måste använda termer och konstruktioner som den kan tolka. Vi behöver alltså ett programmeringsspråk/programspråk. Precis som våra naturliga språk har varje programmeringsspråk också sin egen syntax och semantik. Syntaxen avgör hur vi får skriva saker och ting, och motsvarar i stora drag grammatiska regler. Semantiken anger å sin sida vad det vi skriver eller säger betyder och avgör därmed vad som sker i programmet.

Vi använder två huvudsakliga typer av programmeringsspråk i undervisningen: blockbaserade och textbaserade. Då vi använder ett blockbaserat språk får vi tillgång till instruktioner som vi ska pussla ihop, vilket gör det lätt att komma igång då man inte behöver fundera över syntaxen. I något skede kanske de instruktioner som finns i det blockbaserade språket inte längre räcker till och då kan vi gå över till ett textbaserat språk. Det ger oss oändliga möjligheter, men kräver samtidigt att vi själva skriver instruktionerna och håller koll på syntaxen. Vilket språk vi väljer beror på den typ av problem vi arbetar med och vad vi vill uppnå.

Blockprogrammering

I årskurs 3-6 är det tänkt att eleverna "planerar och utarbetar datorprogram i en visuell programmeringsmiljö". Det finns många olika fritt tillgängliga blockbaserade programmeringsmiljöer som gör det möjligt att skapa t.ex. interaktiva animationer, spel, simulationer och andra grafiska program. Scratch är ett omfattande programmeringsverktyg utvecklat vid MIT i Boston, USA, som har ”låg tröskel och breda väggar”, med vilket man avser att det öppnar dörrar att förverkliga i princip vilka idéer som helst. ScratchJR är en enklare variant av Scratch som inte förutsätter att man kan läsa.

Microsofts MakeCode-miljö har till exempel egen spelprogrammering men stöder även robotprogrammering med Lego Mindstorms och användningen av olika verktyg för making, bl.a. Microbit och Arduino. Apple har Swift Playgrounds med tillhörande stödmaterial. Blockly är Googles variant, som ligger till grund för t.ex. PencilCode och programmeringsappen för robotarna Dash och Dot. Till skillnad från t.ex. Code.org som erbjuder färdiga uppgifter, är de blockbaserade miljöerna helt öppna så att man själv får bestämma vad man ska göra. Det finns även olika programmerbara robotar med egna blockbaserade miljöer, varav Sphero och Legos robotar troligen är de vanligaste i skolsammanhang.

Textprogrammering

Även om det finns många blockbaserade programmeringsspråk och -miljöer, är det en bråkdel i jämförelse med alla de textbaserade programmeringsspråk som finns. Textprogrammering har en lång historia och nya språk utvecklas kontinuerligt. De mest populära språken för undervisningssyften är i dag Python, Javascript och Ruby.

I årskurs 7-9 är målet inom matematik att hjälpa eleverna "utveckla sitt algoritmiska tänkande och sina färdigheter att tillämpa matematik och programmering för att lösa problem." Det är kanske lätt att tänka att det då har blivit dags att gå över till textbaserad programmering, men det är viktigt att komma ihåg att det centrala är att använda programmering för att lösa problem – inte språket. Det går att lösa väldigt avancerade problem med blockbaserade språk, så det finns inget som säger att man "måste" gå över till ett textbaserat språk i en viss årskurs. Däremot bygger ofta läromedel i till exempel matematik i åk 7-9 på ett textbaserat språk, vilket naturligtvis också kan vara en orsak till att välja ett sådant.