Låg- vs. högnivåspråk

Posted on March 20, 2016

Eller: Är högnivåspråk bättre än lågnivåspråk?

En vän till mig (som är maskiningenjör) skulle stolt visa upp en skoluppgift i hårdvaruprogrammering för sin sambo (som är programmerare). Efter att ha studerat koden ingående brister sambon ut: ”Vilken låg nivå!” Gissa om min kompis blev ledsen! Men det var visst inte fråga om dålig kod.

I början var inte ordet

I ett tidigare inlägg kunde du läsa om vad programmering är. Och precis som du säkert fått höra tusen gånger förr så är ettor och nollor det ”språk” som datorerna talar innerst inne. Men för att lättare instruera datorerna så utvecklades successivt programmeringsspråk. I ett första skede användes något mer läsbara, men fortfarande rätt kryptiska standardkoder (t.ex. block om åtta siffror och bokstäver) som datorn i stort sett kunde (kan) processera direkt - så kallad maskinkod eller första generationens lågnivåspråk.

Standardkoderna utvecklades och blev något mer lättlästa bokstavskombinationer och koder, exempelvis assemblyspråk, som genom en assembler snabbt kan omvandlas och köras direkt på datorns processor – den andra generationen lågnivåspråk.

Den nästa generationen språk blev högnivåspråk med utvecklad syntax som mer liknar naturliga språk (eller, ja, engelskan). Högnivåspråk måste sammanställas och översättas av specifika program (kompilatorer eller programtolkar) för att kunna förstås av datorn. Det är därför man ofta behöver ”installera” ett språk på datorn innan man kan köra det.

I jämförelse

Om man jämför låg- och högnivåspråk rakt av skulle det så ut ungefär såhär:

Lågnivåspråk
  • Maskin-/hårdvarunära
  • Kan köras mer eller mindre direkt av processorn
  • Tar lite minne och lite tid att köra
  • Tar lång tid att skriva,
    lätt att göra fel
  • Låg abstraktionsnivå
  • Miljöbunden (”icke-portabel”)
  • Exempel: maskinkod, assemblyspråk,
    även C räknas hit
Högnivåspråk
  • Nära naturliga språk
  • Måste översättas av särskilda program
  • Tar mycket minne och längre tid att köra
  • Förhållandevist enkelt att skriva
  • Hög abstraktionsnivå
  • Går att använda i olika miljöer (”portabel”)
  • Exempel: Java, Python, C#

Men det är egentligen sällan som man står inför valet att skriva samma program på ett hög- eller lågnivåspråk. Att programmera mjukvaror på högnivåspråk är det absolut vanligaste för en ”genomsnittlig” utvecklare idag. Lågnivåspråk används snarare i specifika syften, som till exempel för operativsystem eller i mikrodatorer, eller för maskinnära programmering inom industrin.

Nog med teoretiska utsvävningar! Som avslut vill jag tipsa om en riktigt lättsam godbit från 1983(!) som sammanfattar allt du behöver veta om högnivåspråkens uppkomst:

Mycket nöje på valfri nivå!

Elisabeth Schriefer

Elisabeth är en språkvetare vars hjärta slår lika hårt för naturliga som formella språk. På dagarna jobbar hon med texter och digitala tjänster, på kvällarna tar hon poäng i systemvetenskap. Hon älskar att åka tåg, sätta ord på saker med sin Dymo och att mingla på meetups. Programmera lär hon sig för att det är kul, för att det är viktigt och för att bli den förebild hon aldrig haft.