I denne artikkelen skal vi fordype oss i emnet Programmeringsspråk og utforske dets mange fasetter. Programmeringsspråk er et tema som har vakt stor interesse på ulike områder, fra vitenskap til populærkultur. Opp gjennom historien har Programmeringsspråk vært gjenstand for debatt, forskning og refleksjon, og er fortsatt aktuell i dag. Vi vil fordype oss i de ulike perspektivene som eksisterer på Programmeringsspråk, og ta for seg dens betydning, dens implikasjoner og dens innvirkning på samfunnet. Gjennom denne artikkelen har vi som mål å tilby en omfattende og oppdatert visjon av Programmeringsspråk, med mål om å berike kunnskap og fremme refleksjon rundt dette fascinerende temaet.
Programmeringsspråk er en betegnelse som henviser et ikke-menneskelig og kunstig språk som benyttes utelukkende for å styre og kontrollere en datamaskin. I likhet med menneskelige språk har programmeringsspråk syntaks og semantiske regler for å definere mening, men i motsetning til mennesker har en datamaskin behov for å få instruksjoner beskrevet 100 % komplett, det vil si uten noen som helst form for tolkning. Dette stiller særskilte krav til programmeringsspråkene om å være entydig og komplett.
Programmeringsspråkene inndeles gjerne i høynivå- og lavnivåspråk, avhengig av hvor ulikt programmeringsspråket er fra den maskinkoden kompilatoren vil generere. Assembler er et typisk lavnivåspråk der kommandoer skrives nærmest direkte til prosessoren. Basic er på den annen side et høynivåspråk hvor en kommando i programmeringsspråket ofte blir til flere, mer sammensatte, kommandoer i maskinkoden.
For høynivå programmeringsspråk skiller en gjerne mellom kompilerte språk – hvor en kompilator oversetter programteksten til direkte kjørbar maskinkode – og tolkede språk – hvor en programtolk leser programmet og utfører det fortløpende. Etter hvert er det kommet til ulike mellomstadier, spesielt språk hvor programteksten oversettes til en plattformuavhengig bytekode som deretter eksekveres av en programtolk/et kjøretidsmiljø. Typiske eksempler på det siste er Java, Python og noen LISP-dialekter. Skillet mellom kompilerte og interpreterte programmeringsspråk er flytende – to forskjellige implementasjoner av samme språk kan godt være henholdsvis det ene og det andre.
Det er blitt tradisjon å demonstrere et programmeringsspråk ved at teksten hello, world blir produsert.
Alle de dataprogram som en datamaskin kjører foreligger i maskinkode. Da det er upraktisk for et menneske å programmere direkte i maskinkode, er det laget ulike programmeringsspråk som gjør det enklere for programmereren å skrive et dataprogram. For å kunne nyttegjøre seg av det programmet en skriver i et visst programmeringsspråk (kildekoden), trengs en kompilator som oversetter kildekoden til maskinkode, som da maskinen kan bruke til å kjøre programmet.
Mange programmeringsspråk er blitt tatt fram, endret for å møte nye utfordringer, kombinert med andre språk og til slutt falt ut av bruk. Flere forsøk på å ta frem universelle programmeringsspråk er gjort, men disse er alltid blitt utkonkurrert av mer spesialiserte varianter. Behovet for ulike språk beror på de forskjellige sammenhengene språket skal brukes i:
En generell trend innenfor utviklingen av programmeringsspråk er at nivået på abstraksjonene har blitt høyere med tiden. De tidligste programmeringsspråkene var veldig nær datamaskinens egne, innebygde konsepter. Etter hvert ble det bygget på mer abstrakte konsepter som lot programmeren uttrykke idéer på et høyere nivå. Dette lot programmererne skrive mer kode på kortere tid..[1]
Idéen om at naturlige språk vil overta for programmeringsspråkene ble tidlig lansert i denne prosessen. Dette målet er fremdeles langt unna, og om det egentlig er noen fordel er åpent for debatt. Edsger Dijkstra hevdet at for å unngå meningsløse konstruksjoner er det viktig å nytte et formelt språk, og var helt avvisende til konseptet.[2] Alan Perlis var også avvisende til konseptet. .[3]