Stikkord

, , , ,

Det er så ufattelig mye snakk om ‘koding’ for tiden. Mange vet ikke hva koding er. Kanskje ikke så rart når det har vært en så sær øvelse? Og vet du hva det er så har du kanskje en formening om hvem disse ‘dataslaurene’ er?

computer-nerd

(Koderne er kjent for sin sære humor søk på : computer humor nerds geeks)

Personlig så undersøker jeg hvordan ‘kodere’ lærer seg ‘koding’ i mitt doktorgradsprosjekt. Litt lettere å lese om i en nyhetssak fra The Gathering 2017 (nordens største dataparty).

‘Koding’ er forkortelse av kildekoding eller maskinkoder – og har blitt det populære kallenavnet på programmering. Men hva i alle dager er kildekoding eller maskinkoding?

Datamaskiner klarer bare å forstå 1 og 0. Signalene av og på. Tenk på en lyspære som bare kan være av og på.

lightbolb

Utrolig rart å tenke at en datamaskin bare kan forstå 1 og 0, men samtidig kan gjøre alt det fantastiske vi ser rundt oss i dag!

Jeg skal ikke gå i detalj om 1 og 0. Men dette kommer av at datamaskiner leser det binære tallsystemet som bare består av 1 og 0. (Les om binæretallsystemer og ASCII for å lære mer.) For eksempel er en A på skjermen din 01000001. Som du ser så settes de sammen i grupper av 8. Du har sikkert sett sånne rare flate datakabler en eller annen gang?

databus

Her kommer 1 og 0 i rekker bortover som soldater 🙂

Faktisk så var den første type programmering bare hullkort: hull eller ikke-hull

hullkort

Dette er fryktelig upraktisk å jobb slik med 1 og 0. Tenk det å skrive bare et ord med binære koder!? Mitt navn er på 8 bokstaver og det betyr at jeg må skrive 64 stk 1 og 0 bare for å skrive mitt navn. Derfor har vi laget programmeringsspråk slik at vi letter kan snakke med maskinene. De aller første programmeringsspråkene var veldig enkle og lå tett opp til maskinspråket. Så har vi utviklet mange og mer avanserte språk. Vi snakker om generasjoner av programmeringsspråk. Jeg lærte for eksempel å kode med Assembler som var en 2.generasjon programmeringsspråk og det så sånn ut.

a 100
mov ax,0002 ; Flytter verdien 0002 til AX-registeret
mov bx,0004 ; Flytter verdien 0004 til BX-registeret
add ax,bx   ; Legger sammen verdiene i AX- og BX-registeret
nop         ; NOP = No Operation
mov ah,0x4C ; Flytter verdien 0x4C inn i AH
int 0x21    ; Avslutter programmet (i MS-DOS)

Vi kaller dette lavnivå programmering. Dette var veldig avansert og lite hensiktsmessig. Vi har senere utviklet nye språk og hjelpemidler.

I dag bruker vi enten en kompilator som oversetter vårt programmeringsspråk til binære koder som datamaskinen kan forstå. En kompilator er et program – tenk på det som en tolk. Den oversetter vårt program til maskinkode for oss der og da. Eller vi bruker intepretering (som også er et program). Det betyr at koden blir oversatt av interpretatoren hver gang kodelinjen skal utføres. For eksempel JavaScript intepreteres. En bakdel er at dialoger går unektelig noe langsommere om man hele tiden må ha en tolk som mellommann 🙂 hver gang progamkoden skal kjøres. En av fordelene med interpreterende språk på nettsider er at du kan se kildekoden om du vil – og da kan man lære av feil eller suksesser. En av de tingen kodere forteller meg er at den beste måten å lære på er «omvendt engineering» – de tar en kildekode og ‘demonterer’ den og prøver seg frem. Mye læring å leke med ferdige koder!

Mange har forsøkt å lage universelle programmeringsspråk, men disse er alltid blitt utkonkurrert av mer spesialiserte varianter. Det er behov for ulike språk fordi det er så mange forskjellige sammenhenger språket skal brukes i:

  • Program utgjør alt fra bittesmå skript skrevet av amatører til enorme systemer skrevet av hundrevis av utviklere.
  • Programmerere har forskjellige ferdighetsnivåer, alt fra nybegynnere til eksperter. Kompleksiteten de forskjellige kan håndtere er ulik.
  • Programmene må finne en balanse mellom størrelse, hastighet, vedlikeholdbarhet og andre parametre. Systemene de skal kjøre på er alt fra enkle mikrokontrollere til superdatamaskiner.
  • Program som er «ferdigskrevet» kan være under nesten konstant modifikasjon, eller de kan være statiske gjennom hele sin levetid over flere tiår.
  • Programmererens kompetanse i et bestemt språk kan også være utslagsgivende.

Du kan lese mer om programmering og se en liste over programmeringsspråk på Wikipedia. Ta en titt på filmen under så ser du hvorfor det er så smart, gøy og viktig at vi lærer oss programmering.

 

Hvorfor skal vi lære å kode i skolen? 10 gode grunner til det.

Det er ikke sånn at alle skal bli programmere – men dette er det yrket som kommer til å trenge utrolig mange flere ansatte!

Lurer du fortsatt på hvorfor vi skal ha programmering i skolen? Da syns jeg du skal lese litt på Lær Kidsa Koder 🙂 Du finner masse informasjon på deres sider.

Vil du programmere med elevene/barna? Under kommer noen tips, men husk at barn er forskjellige. Koderne jeg snakket med begynte med avanserte profesjonelle koder allerede fra 10 års alderen.

Barneskole og ungdomsskole: Prøv Scratch: https://scratch.mit.edu/ Du trenger kun internett. Flere av koderne jeg har intervjuet startet faktisk med dette. Det er jo slik at i en klasse er det alltid noen som syns dette er gøy – ikke alle liker fotball…. ;-D (Og du vil faktisk finne barnehager som bruker Scratch.)

survival_of_the_fittest_557535

Har de iPad? Prøv https://www.apple.com/swift/playgrounds/

I barnehagen kan du for eksempel prøve Move the Turtle eller Lightbot. Og jeg vil slå et slag for Bee-Bot som er fantastisk morro!

Men uansett alder kan de fleste barn fra 3 år og oppover (til voksne) syns at Minecraft er gøy. Det er en slags digital lego.

En liten fun fact til slutt: Verdens første live Minecraft-konsert skjedde på The Gathering 2017 i Minecraft.