I edb-programmering , en type data , eller blot en form , definerer karakteren af de værdier, som en data kan tage , samt de operatører, der kan anvendes til det.
De fleste programmeringssprog på højt niveau tilbyder basistyper svarende til data, der kan behandles direkte - nemlig uden forudgående konvertering eller formatering - af processoren. Disse basistyper er ofte:
De sprog, der giver direkte adgang til systemhukommelsen, tilbyder også pegetypen og en byte-type.
Mange tilbyder også en foruddefineret type ,, stringtil strenge . Sprog på højt niveau kan også understøtte typer, der svarer til andre datastrukturer .
For eksempel kræver erklæringen om markører eller arrays på C-sprog, at den type, der skal bruges som base for de håndterede data, specificeres. Den generiske programmering udvider denne praksis, så brugeren kan oprette sine egne parametriserede typer.
Nogle sprog tillader udvikleren at definere typer, der er specifikke for hans applikation. En opregnet type angiver en liste over mulige værdier for en variabel. Følgende kode illustrerer definitionen af en ny farvetype efterfulgt af erklæringen af en variabel af denne type:
type couleur : {rouge, bleu, vert}; var c : couleur; // La variable c, du type couleur, peut prendre les valeurs // rouge, bleu ou vert uniquement.Sammensatte typer ( structi C , recordi Pascal ) gør det muligt at gruppere flere felter med forskellige typer i den samme variabel (som derefter indeholder “undervariabler”).
I objektorienteret programmering kaldes en klasse en sammensat type forbundet med specifik kode - definitionen af klassens metoder - specifik for manipulation af variabler af denne type.
Den objektorienterede programmering udvider tidligere paradigme hierarkisk til at organisere klasserne, så en variabel i en underklasse kan bruges transparent i stedet for en hvilken som helst klasse på et højere niveau i det definerede hierarki.
En uigennemsigtig type er en type, der er ufuldstændigt defineret og / eller hvis natur er skjult. Udvikleren kan ikke gennemgå eller ændre sit indhold og skal blot gemme og overføre det. Til dette formål er kun størrelsen af en uigennemsigtig type faktisk kendt.
Uigennemsigtige data er for eksempel håndtag ( Windows- terminologi ), filbeskrivelser ( Unix- terminologi ), nøgler , pekere til skjulte strukturer (f.eks. FILE*Fra standard C-biblioteket ) osv. Den eneste afgørende opfattelse er, at en uigennemsigtig variabel tilvejebringes via en dedikeret oprettelsesfunktion (af konstruktortype ), transmitteret som den er til brugerfunktionerne (ofte via en passage som reference ) og til sidst ødelagt via en frigivelsesfunktion. ( Destruktiv type ) .
Muligheden - eller ej - for at have uigennemsigtige typer afhænger fuldstændigt af det anvendte programmeringssprog.
Vi taler om statisk typing, når størstedelen af typekontrollen udføres på kompileringstidspunktet .
Tværtimod taler vi om dynamisk typning, når disse kontroller udføres under udførelse.
Med en eksplicit skrivning er det op til brugeren selv at angive de typer, han bruger, for eksempel når deklarerer variabler eller funktioner.
F.eks. Er typografi på C-sprog eksplicit:
int i = 0; // cette déclaration indique explicitement que // la variable i est de type entierTværtimod, med et implicit typesystem overlader udvikleren det til compileren eller runtime at selv bestemme, hvilke typer data der anvendes, for eksempel ved inferens .
I Objective Caml er typen f.eks. Implicit:
let i = 0 ;; (* le compilateur détermine automatiquement que la variable i est de type entier *)Den maskinskrivning sikkerhed er at forebygge type fejl, nemlig: anvendelse af en variabel, hvis format er uforenelig. Definitionen af et stærkt skrevet sprog er ret vag: