Høynivå og lavnivå programmeringsspråk

Planlegger du å lære deg programmering fra bunnen av? Da gjelder det å lære seg de grunnleggende forskjellene på lavnivå og høynivå programmering. Per definisjon er et høynivåspråk et programmeringsspråk med et høyt såkalt abstraksjonsnivå. Dette kan sees i motsetning til lavnivåspråk, da disse er mer lik maskinkode (maskinens eget sett av instruksjoner). Grensen mellom høy- og lavnivåspråk er flytende.

Faktisk flytter grensen seg i takt med at programmeringsspråk blir stadig mer avanserte. For eksempel vil noe av det som ble ansett som avansert for noen år siden, i dag bli ansett som helt trivielt. Betegnelsen «høynivå» innebærer ikke at språket er overlegent de såkalte lavnivåspråkene, men heller at språket er mer abstrakt. Et høynivåspråk gjør faktisk avansert programmering lettere enn lavnivåspråk.

Fordeler og ulemper med høynivåspråk

Selve programmeringen er derfor ikke vanskeligere med høynivåspråk – snarere tvert imot. Dette skyldes i stor grad at høynivåspråkene inneholder mange funksjoner som er innebygd i koden, noe som betyr at du som programmerer kan ta mange snarveier og ikke trenger å lage ny kode fra bunnen av hver gang. Dette gjør at du kan programmere raskere enn med lavnivåkode.

Det å programmere med høynivåspråk kan imidlertid ha sine ulemper også, dersom vi sammenligner med lavnivåspråk. Dette omfatter blant annet at «snarveiene» du kan ta ved å bruke innebygde funksjoner, ikke nødvendigvis er fullt så effektive som selvkomponert kode gjort med lavnivåspråk. Det sies at høynivåspråk generelt genererer mer maskinkode enn hva et lavnivåspråk gjør, når én og samme oppgave skal løses.

Noen høynivåspråk

Det finnes flere forskjellige programmeringsspråk som anses for å være høynivå. Blant disse finner vi for eksempel objektorienterte språk som Java, C++ og C#, men også Object Ada og Delphi. Tidligere ble også C og FORTRAN regnet for å være høynivåspråk, men i dag er de i mellomsjiktet mellom høy- og lavnivåspråk, eller i det minste nederst på skalaen over høynivåspråk.

Av enkelte blir programmeringsspråket C omtalt som en såkalt «høynivåassembler», noe som skyldes dette språkets nokså nære tilknytning til maskinvarearkitektur. Språkets enkelthet og den nevnte tilknytningen har også medført at det finnes optimaliserte kodegeneratorer beregnet for C på omtrent alle plattformer og maskiner. Dette kan utnyttes ved å bruke C som mellomnivå (av andre programmeringsspråk) på veien mot maskinkode.

Om lavnivåspråk

Et såkalt lavnivåspråk kan betegnes som assembler- eller maskinkodeprogrammer. Disse språkene er ganske detaljerte og omstendelige, og innebærer at du gjerne må skrive mange instruksjoner for å i det hele tatt produsere fungerende kode. Én enkelt instruksjon med et assemblerspråk vil kompileres til å bli én instruksjon i den såkalte maskinkoden. Med høynivåspråk vil én instruksjon kunne bli kanskje 100 maskinkoder.

Det er med andre ord ikke tvil om at høynivåspråk er mer effektive enn programmeringsspråk som er lavnivå. Samtidig har lavnivåspråk den fordelen at du kan «skreddersy» koden i større grad, ettersom alt må lages helt fra bunnen av. Det er imidlertid høynivåspråk som er det mest vanlige å bruke i dag, og sannsynligvis det som er lettest å begynne med.

Hva bør du velge?

Dette kommer helt an på smak og behag. Men som sagt er det vanligst å gå for et høynivåspråk som Java eller C++, og det er som regel disse programmeringsspråkene du vil lære om først når du studerer programmering på et universitet eller en høgskole. Disse språkene har mange effektive ferdigproduserte og innebygde funksjoner, noe som kan være til hjelp for mange.

Oppsummering

I programmeringens verden skiller vi mellom høynivå- og lavnivåspråk, noe som betegner graden av abstraksjonsnivå. Grensen mellom hva som er høy- og lavnivå programmeringsspråk kan være noe flytende, men en grei huskeregel er at de fleste «vanlige» programmeringsspråk som Java og C++ er høynivå. Dette innebærer blant annet mange innebygde funksjoner som sparer deg for mye skriving av kode.

Leave a Reply

Your email address will not be published. Required fields are marked *