Datatype

(eller: type).

I symbolske maskinsprog er det op til programmøren at definere, hvad indholdet af en byte eller et ord betyder, og hvilke operationer i programmet der er tilladte i forbindelse med en given byte (eller ord). Dette medfører potentielle muligheder for fejl; forveksling af navne på operander kan f.eks. medføre, at helt forkerte data behandles, og at bruge ord-addition på byte-størrelse data vil ligeledes kunne få grimme konsekvenser. Disse fejl kan være særdeles besværlige at finde og kan kun forebygges ved omhyggelig oplæring af programmører og ved at foreskrive præcise regler for, hvorledes programmer skal laves og dokumenteres. Det er indlysende, at denne type regler bedst håndhæves ved at indbygge dem i computerens programmel, i dette tilfælde oversætterne.

De højere programmeringssprog, startende med FORTRAN og ALGOL, har derfor indført begrebet type. En type er en egenskab ved en datastruktur, som kan beskrives ved tre ting: de værdier, den kan antage; de operationer, som kan virke på typen; og repræsentationen i computerens arbejdslager. I samlingen af operationer, der kan virke på en given type, kan også indlemmes de procedurer, som har en eller flere parametre af den givne type.

Typesystemet afspejler det virkelige liv, som når man i skolen får at vide, at man ikke kan lægge pærer og æbler sammen. Operationer kan heller ikke anvendes på vilkårlig måde.

Som eksempler på datatyper kan tages typerne boolean og integer, kendt fra mange programmeringssprog. En variabel af typen boolean har to mulige værdier, true og false; den har operationer hentet fra Boolesk algebra (not, and, or); værdien af en boolean variabel repræsenteres ofte som en enkelt byte. En integer kan antage heltallige værdier, f. eks. i området -999 til 999; operationerne er de kendte (+, -, *, /); en integer kan repræsenteres ved et 16-bit ord i to-komplement. Operationerne fra en type kan ikke med god mening på data fra den anden.

Af udbredte simple datatyper kan nævnes:

  1. Boolean, dvs. logiske værdier;
  2. heltal;
  3. fixed point og flydende tal;
  4. komplekse tal;
  5. tegn;
  6. tekststrenge;

Af sammensatte typer kan nævnes tabeller (arrays), poster (records) og mængder (sets). Der er begrænsninger i, hvilke datatyper de forskellige programmeringssprog kan anvende.

Hvis alle datastrukturer har fået en type, og alle procedurer ved erklæringen har fået specificeret parametertyperne, kan oversætteren kontrollere, om data anvendes efter hensigten. I sprog som Pascal kan dette ske udelukkende i oversætteren (statisk typecheck); i sprog som ALGOL må visse check udskydes til kørselstidspunktet (dynamisk typecheck). Hermed fanges en lang række typiske programmeringsfejl, som at lægge to variable af typen boolean sammen eller udskrive en tekststreng som var det en heltalsvariabel. Ud over dette giver typeangivelsen oversætteren tilstrækkelige oplysninger til, at den kan udlægge plads til variable og automatisk generere den kode, som henter og gemmer variable.

I moderne programmeringssprog er der med udgangspunkt i klasser fokuseret på operationerne på en type. Se også abstrakt datatype.

Forfattere: 
Klaus Hansen
Casper Thomsen