Bör alla lära sig programkod? Synpunkter på en nivåförvirring
Låt mig kasta in några synpunkter på en diskussion som samtidigt förs på två olika nivåer – vilket jag tror är ett symptom på en mer djupgående nivåförvirring, vilket jag snart ska komma till.
Å ena sidan bedrivs en kampanj för att införa programmering som obligatoriskt ämne i grundskolan, där argumenten handlar om att stärka Sveriges framtida konkurrenskraft. Bakom denna kampanj står diverse IT-företag, bland andra Google.
Å andra sidan finns det en radikaldemokratisk tanke om att folket måste erövra kunskapen om hur datorerna fungerar. Tanken bottnar i en historisk parallell mellan boktryckarkonsten och internet, mellan skrivkunnighet och programmeringskunskap, som härom dagen formulerades av Jesper Larsson i en bloggpost.
Jesper Larsson har nu fått mothugg av Andreas Ekström i Sydsvenskan. Det är värt att fundera på hur de båda använder historien på olika sätt. Jag tolkar Jesper Larsson som att han tänker sig en historia av långa semiotiska utvecklingsvågor: tillkomsten av ett nytt språk leder först till ojämlika maktförhållanden, som sedan jämnas ut när den breda massan tar till sig det nya språket.
Andreas Ekström betonar däremot skillnaden mellan ett “då” och ett “nu”. Likt många sociologer tänker han sig att vårt moderna “nu” präglas av en högre hastighet än det förmoderna “då”:
Förr i tiden styrdes samhällsutvecklingen av hela samhället kollektivt: ingenjörer, tekniker och uppfinnare skapade något, varpå jurister och politiker och humanister och samhällsvetare kunde förhålla sig till det nya – är det bra eller dåligt, farligt eller ofarligt, lämpligt eller olämpligt, i behov av reglering eller redo att bara släppas fritt?
Det var en långsammare tid. Varje teknisk uppfinning behövde tillverkas och produceras, med råvaror och arbetskraft. Denna långsamhet skapade rådrum för samhället.
Vi har inget sådant rådrum längre.
Vad som händer nu är att ingenjörer, tekniker och uppfinnare skriver programkod på måndag och distribuerar den globalt på tisdag. Det finns alltså inte längre tid för ekonomer eller läkare eller forskare eller lärare att bidra med sina erfarenheter och insikter – alla ställs inför fullbordat faktum, medan de programmeringskunniga snabbt drar vidare till nästa projekt.
Detta innebär en historisk maktförskjutning, som inte lämpar sig för jämförelser med andra tekniska landvinningar, som låt säga boktryckarkonsten.
Visserligen finner jag det befängt att påstå att teknik- och samhällsutvecklingen “förr i tiden” skulle ha styrts “av hela samhället kollektivt”. Nu vet jag inte om detta “förr i tiden” syftar på folkhemmet eller på medeltiden, men jag kan leverera otaliga exempel på hur uppfinningar har tagits i bruk utan att de först blivit föremål för en demokratisk utvärdering. Särskilt inte när det gäller uppfinningar som har koppling till krig (vilket inbegriper de flesta medieteknologier som etablerades under 1900-talet).
Däremot håller jag med Andreas Ekström om att jämförelsen mellan tryckpressen och internet haltar. Det finns en fundamental skillnad mellan skriftspråk och programkod. Allmän alfabetisering (läs- och skrivkunnighet) går uppenbarligen att genomdriva inom ett visst territorium (jag säger genomdriva eftersom den historiska alfabetiseringen är oskiljbar från det blodiga skapandet av nationalstater, upprättandet av territoriella nationsgränser och bekämpandet av minoritetsspråk). Något liknande är svårt att tänka sig i fråga om programkod.
Alfabetiseringen byggde på principen att det för varje territorium fanns en stat och ett språk. Invånarna i ett visst territorium blev ålagda att lära sig skriva “sitt” standardspråk.
Men i datorsammanhang finns inte ett programspråk, utan många olika. Programspråken saknar inte bara territoriell koppling; det är inte heller givet hur länge de kommer att vara i bruk. Om tio år kommer helt nya programspråk att spela en viktig roll, medan vissa av dagens programspråk har blivit passé. Så var det aldrig med de tal- och skriftspråk som människor fått lära sig i familjen och i skolan.
Kampanjen för “programmering” som obligatoriskt skolämne bedrivs med flummiga hänvisningar till att programkod skulle vara “framtidens språk“. Som om koden var ett språk!
Det finns en glidande skala från maskinnära lågnivåspråk till de högnivåspråk som är anpassade för praktiska syften. Här finns en klar maktproblematik. Att lära sig lågnivåspråk som assembler är oerhört svårt, men ger definitivt en kunskap om hur datorer fungerar och hur datorsystem kan manipuleras. Ju högre upp i maskinens nivå ett programspråk opererar, desto lättare blir det att lära sig dess praktiska bruk. I de högre språknivåerna återfinns diverse scriptspråk (t.ex. bash för unixdatorer eller javascript och PHP för webben). Allra högst – närmast “ytan” – återfinns märkspråk som HTML, vilket jag skriver i just nu.
Ju högre upp mot ytan man kommer, desto lägre är manöverutrymmet, desto fler normer är inbyggda i språket. Ju lägre ner man tar sig, desto större möjligheter finns att rucka på dessa normer eller förstå hur andra kan göra det.
Vad menas då med “programkod” på skolschemat? Ska eleverna lära sig lite av varje, för att få en inblick i hur datorer fungerar, även om de inte kommer att kunna använda kunskapen till praktiska program? Eller ska de verkligen få lära sig att programmera ett visst kodspråk – och i så fall vilket, på vilken nivå?
Skillnaden mellan ett lågnivåspråk som assembler och ett högnivåspråk som javascript går nog att jämföra med skillnaden mellan fysik och företagsekonomi. Det är kort sagt två helt olika ämnen. Det är hög tid att kodlobbyn klargör vad de vill ha in på läroplanen (och vad de vill prioritera bort)!
Rasmus Fleischer's Blog
- Rasmus Fleischer's profile
- 3 followers

