Program. Slægtskabet mellem forskellige imperative programmeringssprog. Algol fra 1960 har haft stor indflydelse på de moderne programmeringssprog. PL/1 fra 1964 var et forsøg på at konstruere et sprog ud fra erfaringerne med Fortran, Cobol og Algol, men sproget blev meget stort og uhåndterligt. Algol 68 var tænkt som afløseren for Algol 60, men det har aldrig fundet anvendelse i praksis. Med sproget Simula fra 1967 blev de objektorienterede sprog introduceret. Ada fra omkring 1980 er objektbaseret, men ikke objektorienteret i sædvanlig forstand; det har fx ikke mulighed for nedarvning som i C++ og Java.

Program, software, inden for datalogien en plan, hvis formål det er at få en computer til at løse en databehandlingsopgave, der er fastlagt på forhånd. Løsningen må specificeres som en følge af elementære beregningstrin, der kan udføres af computeren. En systematisk notation til specifikation af sådanne beregningstrin kaldes et programmeringssprog. Sproget skal kunne genkendes af computeren, så den automatisk kan udføre de dataoperationer, der er specificeret i de enkelte beregningstrin. Udarbejdelse af et program i et programmeringssprog kaldes programmering; en person, der beskæftiger sig med programmering, kaldes en programmør.

Faktaboks

Etymologi
Ordet program kommer af græsk programma 'skriftlig bekendtgørelse, forskrift', af pro- og graphein 'skrive, tegne'.

Programmeringssprog

Programmerne til de tidligste computere blev skrevet i maskinsprog. Disse computere var enten binære (som i dag) eller decimale, hvilket betød, at programmøren måtte nedskrive de binære eller decimale cifre, der repræsenterede hver instruktion internt i computeren.

Læs mere om programmeringssprog.

Syntaks og semantik

Et programmeringssprogs syntaks er den korrekte notation af de enkelte bestanddele i et program, skrevet i vedkommende sprog, og semantikken er meningen med de forskellige syntaktiske konstruktioner.

Læs mere om programmeringssprogs syntaks og semantik.

Programudvikling

Udviklingen af software er en kompliceret proces, under ét kaldet systemudvikling, der kan opdeles i en række faser. Et påtænkt softwaresystem må først afgrænses i forhold til de omgivelser, det skal indgå i. Det gøres i en analyse, der afdækker de krav, man må stille til systemet.

Læs mere om programudvikling.

Ophavsretlig beskyttelse

Computerprogrammer nyder retsbeskyttelse i henhold til Ophavsretsloven, og det fremgår af denne, at programmerne skal behandles som litterære værker. En total ligestilling med de almindelige litterære værker er dog ikke hensigtsmæssig, og loven indeholder derfor en række særregler om computerprogrammer.

Læs mere om ophavsretlig beskyttelse.

Ved at følge gangen i nedenstående funktion med et taleksempel fås en fornemmelse for karakteren af et imperativt programmeringssprog. Funktionen, som er programmeret i Pascal, udtrykker Euklids algoritme og beregner den største fælles divisor for de hele tal x og y. Tekst i {} er kommentarer, der overspringes af oversætteren. Parametrene x og y udskiftes med de aktuelle parametre, når sfd kaldes, og skal betragtes som lokale variable. Deres værdi ændres derfor ikke i det program, der kalder funktionen.
function sfd(x,y: integer): integer; {parametrene x og y samt resultatet er hele tal}
var rest: integer; {erklæring af en lokal heltalsvariabel ved navn rest}
begin {her begynder funktionens beregningsdel}
repeat {gentag de følgende sætninger}
rest := x mod y: {find resten af x divideret med y}
x := y; y := rest {værdierne af x og y justeres som angivet af Euklid}
until rest = 0; {hvis rest er nul: videre, ellers forfra i repeat-sætningen}
sfd := x {returnér resultatet, værdien af x}
end {sfd};
Euklids algoritme udtrykt i funktionsnotation Den lokale variable rest er skjult for det kaldende program. De eksisterende funktionalsprog har en ret særpræget syntaks; derfor er algoritmen i eksemplet skrevet i en notation, der tillader sammenligning med algoritmen ovenfor. Funktionen equal(a,b) skal returnere værdien true (sand), hvis a er lig med b, og funktionen mod(a,b) finder resten af a divideret med b. I et funktionalsprog realiseres gentagelser vha. rekursion: sfd kalder sig selv.
declare sfd(x,y): {erklæring af funktionen sfd med parametre x og y}
if equal(mod(x,y),0) then return y {hvis resten er nul, returneres y}
else sfd(y,mod(x,y)); {og ellers kaldes sfd rekursivt}

Kommentarer

Kommentarer til artiklen bliver synlige for alle. Undlad at skrive følsomme oplysninger, for eksempel sundhedsoplysninger. Fagansvarlig eller redaktør svarer, når de kan.

Du skal være logget ind for at kommentere.

eller registrer dig