Programmeringsspråk, konstruert språk til å skrive programmer til datamaskiner. Et programmeringsspråk omfatter ulike typer grunnleggende kommandoer som en datamaskin kan utføre. Ord i et programmeringsspråk er alltid entydige, og de er gjerne hentet fra grener som matematikk og logikk. Syntaksen i et programmeringsspråk må følges nøye; det minste avvik fra grammatikken fører til at programmet går i stå eller datamaskinen gjør feil. (Se også programmering.)

Det går et grunnleggende skille mellom lavnivåspråk og høynivåspråk. Lavnivåspråk er nært knyttet til selve maskineriet i en datamaskin, nærmere bestemt prosessoren. Høynivåspråk tilbyr et høyere abstraksjonsnivå, slik at man ikke forholder seg til prosessorens registre, men i stedet til funksjoner, variabler og andre logiske objekter og operasjoner.

Programmer i lavnivåspråk som maskinkode og assemblerspråk er i praksis uleselige. En kommando i maskinkode kan for eksempel se slik ut:

10110000 01100001

Den tilsvarende kommandoen i assembler ser slik ut:

Mov al, 061h

Her vil en erfaren assemblerprogrammerer straks se at det dreier seg om å flytte det heksadesimale tallet 61 (tilsvarende 97 i titallsystemet) til et register i prosessoren, kalt al.

Der maskinkode (binærkode), bare har sekvenser av 0 og 1, skrives assemblerkode med noenlunde forståelige ord (mov  stammer fra det engelske ordet move ). For å legge sammen to tall i assembler, må man befale maskinen å hente dem fra bestemte adresser i minnet, legge dem i hvert sitt register i prosessoren, legge dem sammen i et gitt register, og så flytte resultatet til en adresse i minnet. En enkel operasjon fordrer følgelig svært mange linjer.

Kode i høynivåspråk som Basic, C++, Fortran, Java, Cobol og så videre, er straks mer leselig. Har man definert for eksempel variablene alfa, beta og gamma, kan man sørge for at gamma er lik summen av alfa og beta ved å skrive

Gamma := alfa + beta

Som leses som gamma settes lik alfa pluss beta.

Problemet er at det som er leselig for mennesket ikke kan leses direkte av maskinen. Dette løses ved hjelp av et spesielt program, kalt kompilator , som oversetter høynivåkoden til binære sekvenser, og som blant annet sørger for at den binære koden ikke går surr i hvor de forskjellige variablenes verdi er plassert i datamaskinens minne. Noen høynivåspråk kompileres ikke, men tolkes. Når koden kjøres, oversettes den fortløpende til maskinkode av en egen tolk.

Programmeringsspråket Java har valgt en tredje vei: Java-kode kompileres til binærkode som ikke kjører direkte på den fysiske maskinen, men i stedet på en «virtuell» maskin. Denne virtuelle maskinen er et program som oversetter Javas maskinuavhengige binærkode til maskinens egen binærkode. Det er denne egenskapen som gjør at Java-programmer kan kjøre på alt fra stormaskiner til PC-er og mobiltelefoner, bare disse har en velfungerende «Java virtuell maskin».

En opererer også med en tredje kategori programmeringsspråk, kalt fjerdegenerasjonsspråk. Disse er - til forskjell fra andre høynivåspråk - ikke-prosedurale, dvs. at programmet ikke angir en stegvis algoritme som sier hvordan ting skal gjøres og i hvilken rekkefølge. Et program i et fjerdegenerasjonsspråk sier hva som skal gjøres og overlater til maskinen å avgjøre hvordan. Programmer skrevet i slike språk er ofte langt kortere enn programmer skrevet i tredjegenerasjonsspråk, idet én kommando kan erstatte titalls linjer programkode. Fjerdegenerasjonsspråk regnes for å være lettere å bruke uten spesiell programmeringskunnskap, men de har vist seg å ikke kunne erstatte de tradisjonelle høynivåspråkene fullt ut. Blant fjerdegenerasjonsspråkene regnes spørrespråk for databaser, som SQL og QBE.

Flere tusen programmeringsspråk og varianter av dem er konstruert for ulike formål. For de viktigste finnes internasjonale standarder. Noen kjente programmeringsspråk er Cobol, Fortran, LISP, Pascal, Basic, Java, C, C++C# og Simula, som alle låner ord og uttrykk fra engelsk. Flere elementer går igjen i de fleste programmeringsspråk: ulike typer variabler, som tekst, tegn, heltall, reelle tall, logiske variabler (med verdiene sann og usann); operasjoner som utføres på disse variablene, bl.a. aritmetiske operasjoner på tall og logiske operasjoner; kommandoer relatert til inn- og utdataenheter; adgangen til å gruppere rekker av kommandoer og operasjoner i enheter som funksjoner, prosedyrer og objekter, slik at man slipper å måtte gjenta dem hver gang de skal utføres; adgangen til å strukturere operasjoner som skal gjentas et visst eller vekslende antall ganger.

Foreslå endringer i tekst

Foreslå bilder til artikkelen

Kommentarer

Har du spørsmål om artikkelen? Skriv her, så får du svar fra fagansvarlig eller redaktør.

Du må være logget inn for å kommentere.