lu.se

LUNDS TEKNISKA HÖGSKOLA

Lunds universitet

Denna sida på svenska This page in English

Lär dig programmera - Bakgrund

Därför borde alla lära sig programmera

När den obligatoriska och kostnadsfria allmänna folkskolan beslutades av Sveriges riksdag 1842 så var det under livlig debatt. Idag ifrågasätts inte att alla barn ska lära sig läsa och skriva. Då ifrågasattes det om jordbruksarbetare verkligen behövde ges dessa tillgångar. Idag ifrågasätts det av vissa om alla barn behöver lära sig programmera i grundskolan. Vissa tror det räcker med "digital kompetens" som fokuserar på användande av de program som finns idag (men som är föråldrade i morgon). Jag är övertygad om att kärnan i den kompetens som behövs hos alla medborgare i morgondagens samhälle ligger i förståelsen för hur mjukvara blir till och förmåga att själv delta i utformingen av datorernas beteende.

Hur detta kan ske rent praktiskt med hjälp av Kojo kan du se i denna film med svensklärare Karin Nygårds på Sjödalsskolan i Stockholm.

Några framsynta skolor går redan före och har programmering på schemat. Detta är ett viktigt steg på vägen till att de politiker och skolledare som bestämmer över skolans budget inser att samhällsomvandlingen kräver programmeringskunskaper till alla! Detta är inte bara en debatt om vilka ämnen som ska ingå i grundskolan utan en grundläggande principiell fråga om vilka tankeverktyg och påverkansmöjligheter vi ger morgondagens medborgare för att de ska kunna delta i demokrati och samhällsutveckling. De som kan programmera har väsentligt bättre förutsättningar att ta makten över maskinen, samhällsutvecklingen och sin egen framtid. Alla som kan lära sig läsa och skriva kan lära sig programmera! Och det är dessutom en himla kul utmaning...

Här finns ett upprop till regering att se till att programmering finns med i läroplanen. Skriv på du med!

Därför börjar vi med just Scala-programmering och Kojo

Det finns många olika språk och system för att lära sig programmera, så varför just använda språket Scala och programmeringsverktyget Kojo när vi ska hjälpa barn att upptäcka programmering?

Kojo är det bästa verktyg jag sett för att göra "riktig" programmering tillgänglig för barn genom en låg lärandetröskel och samtidigt med fördjupningsmöjligheter ända upp till universitetsnivå.

Kojo använder Scala som är ett modernt och kraftfullt språk med det allra senaste inom programmeringsforskningen. Scala används professionellt av fler och fler systemutvecklare över hela världen. Scala erbjuder en avancerad verktygslåda som gör att programmen blir både kortfattade och lätta att bygga vidare på och lämpar sig för programmering både i liten skala för nybörjare och i extremt storskalig programmering med miljoner rader programkod. Om man lär sig Scala som sitt "modersmål" för programmering har man en flygande start i framtidens programmeringsvärld!

En stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket innebär att kompilatorn (det program som tolkar koden du skriver och gör om den till maskinkod som datorn kan köra) är smart nog att lista ut en hel del saker som du därmed slipper att skriva. Kompilatorn förstår om du vill ha ett heltal, en textsträng eller ett decimaltal då du använder dessa utan att du även måste skriva ett speciellt typnamn som i Java och många andra äldre språk.

I många barnprogrammeringsprojekt används det som kallas dynamiskt typade språk, där Python och Javascript är vanliga exempel. Fördelen med dessa, jämfört med statiskt typade språk så som Java, är att det blir mindre att skriva och man kan göra lite hur som helst med typerna utan att kompilatorn bryr sig. Den stora nackdelen med dessa språk är att kompilatorn inte i särskilt stor utsträckning kan hjälpa till att hitta buggar (programmeringsmisstag), utan man får vänta tills man kör programmet och då klia sig i huvudet medan programmet ”går sönder”. Med statiskt typade språk kan kompilatorn redan när du skriver programmet hitta många kluriga buggar och dessutom ge ett vettigt felmeddelande. Scala är statiskt typat men undviker "pratigheten" tack vare sin smarta typhärledning.

Jag har använt Scala i flera år nu med både barn i lågstadiet och doktorander vid LTH och språket är ett fantastiskt verktyg både för nybörjaren och för dataforskarna. Jag tycker man ska börja lära sig grunderna i ett professionellt språk direkt (precis som engelskundervisningen börjar med engelska) och jag tycker man ska använda ett språk som har typkontroll och därmed ger bra stöd för att hitta buggar redan innan man kör sin kod. Dessutom är Scala gratis, och fritt (i meningen att det inte är ett enskilt kommersiellt företag som bestämmer) med en global, öppen utveckling som kontrolleras av ett välrenommerat universitet i Lausanne (EPFL) med forskningsmedel från EU:s ramprogram.

Därtill finns det en het diskussion som har att göra med hur morgondagens programmering kommer att se ut när vi har allt fler kärnor i processorerna som tvingar oss att tänka på ett helt annat sätt när vi programmerar. Så kallad funktionsprogrammering hjälper till så att programmen lättare kan köras parallellt på tusentals olika kärnor. I Scala kan man kombinera funktionsprogrammering med s.k. objekt-orienterad programmering på ett enhetligt och kraftfullt sätt. Vinsten med funktionsprogrammering blir extra tydlig när vi gör riktigt stora program och framtidens massivt parallella superdatorer finns i varje lite grunka, vilket våra barn kommer att få ta del av när de växer upp och ska forma morgondagens samhälle ...