Typsystem

system för hur programspråk klassificerar värden och uttryck

Ett typsystem definierar inom datavetenskapen hur ett programspråk klassificerar värden och uttryck som typer, hur det kan manipulera dessa och hur de kan interagera med varandra.

Typkontroll redigera

Processen där typerna kontrolleras, typkoll, kan äga rum under kompileringen (statisk kontroll) eller vid exekveringen (dynamisk kontroll). Om språkets specifikation kräver strikta regler om typning (dvs. mer eller mindre tillåter konverteringar mellan typer som inte förlorar information), kan man kallas starkt typspråk (alternativt svagt).

Statisk typning redigera

Ett programspråk sägs ha statisk typning när en variabel tilldelas en datatyp vid kompilering och sedan behåller den under resten av programmets livslängd. Språk som C, C++, Java och Pascal är statiskt typade. Statisk typning gör det möjligt att tidigt upptäcka eventuella fel samtidigt som det tillåter effektiv exekvering (dvs. snabb eller reducerad minnesanvändning). Exempel på statisk typning i C# eller Java:

/* Deklarerar en variabel av typen int (heltal)
   och initierar den med 2 */
int e = 2;

/* Deklarerar en variabel av typen string (textsträng)
   som tilldelas texten "Hej" */
string str = "Hej";

/* Dessa variabler behåller sina typer under hela körningen.
   Följande operation är inte tillåten. */
string str = true; // Värdet true (boolean: sant eller falskt)

Dynamisk typning redigera

Dynamiskt typade variabler kan referera till vilken datatyp som helst. Exempel på dynamisk typning i PHP:

/* Deklarerar en variabel och tilldelar den ett värde av typen int (heltal) */
$e = 256;

/* Tilldelar ett nytt värde till variabeln. Denna gången ett värde av typen bool. */
$e = true;