Frå kjeldekode til maskinkode
Datamaskiner køyrer ved hjelp binære instruksjonar. Kvar enkelt instruksjon er ein enkel operasjon prosessoren skal gjere, som til dømes å samanlikne to tal, gjere ei utrekning eller flytte data mellom register.
Ein enkelt instruksjon ikkje så nyttig aleine, men når vi set dei saman i sekvensar av fleire instruksjonar som blir gjorde etter kvarandre, er det meste mogleg. Dette er den store styrken til moderne datamaskiner. Ein sekvens av instruksjonar kallar vi for maskinkode (computer executable).
Maskinkode må vere tilpassa instruksjonssettet til prosessoren (til dømes x86, ARM64 og RISC-V), slik at alle instruksjonane kan utførast slik koden krev.
Det er mogleg å programmere direkte i maskinkode, men dette er uvanleg sidan programmering av binære instruksjonar er tidkrevjande og vanskeleg for dei fleste. Maskinkoden vil dessutan berre fungere på det eine instruksjonssettet han er skriven for, noko som er upraktisk i ei verd med mange instruksjonssett i bruk. Det meste av programmering blir derfor gjort i eit programmeringsspråk.
Det finst hundrevis av ulike programmeringsspråk. Nokre av dei vanlege høgnivåspråka vi har, er Python, JavaScript, Java, C#, C++, C og GO.
Kvart programmeringsspråk har strengt definerte reglar for korleis koden skal formast ut (syntaks). Dette kan samanliknast med grammatikk i språk, berre mykje strengare.
Det meste av programmering blir gjort i det vi kallar høgnivå-programmeringsspråk. Desse språka skal vere brukarvennlege og har syntaks som er logisk for menneske å forstå.
Ei linje med kode skriven i eit høgnivåspråk vil ofte svare til mange instruksjonar med køyrekode når ho er omgjord.
Kompilering
Høgnivå-programmeringsspråk bruker ein kompilator for å gjere om den skrivne kjeldekoden til køyrekode. Kompilatoren tek den skrivne koden og dei biblioteka som er inkluderte, inn i koden og lagar køyrekode av dei.
Kompilatorane er laga for å kunne lage køyrekode til ulike typar prosessorar (som bruker ulikt instruksjonssett). Dette gjer at kode som er skriven i eit høgnivåspråk, kan kompilerast for å fungere både på x86 og ARM64 utan for mykje ekstraarbeid.
Dei fleste feil vi gjer i programmering, er anten logiske feil eller syntaksfeil.
Logisk feil
Ein logisk feil oppstår når logikken i programmeringa ikkje blir rett. Til dømes kan dette vere at vi ønsker å legge saman to tal, men ved feil gongar saman tala.
Syntaksfeil
Syntaksfeil oppstår når vi ikkje følger grammatikken i programmeringsspråket rett, til dømes ved å skrive ;
i staden for :
, eller ved at vi blandar store og små bokstavar i språk som er sensitive for dette.