În programarea computerizată , un tip de date , sau pur și simplu un tip , definește natura valorilor pe care le pot lua date , precum și operatorii care li se pot aplica.
Majoritatea limbajelor de programare la nivel înalt oferă tipuri de bază corespunzătoare datelor care pot fi procesate direct - și anume: fără conversie sau formatare prealabilă - de către procesor. Aceste tipuri de bază sunt adesea:
Limbile care permit accesul direct la memoria sistemului oferă, de asemenea, tipul de pointer și un tip de octeți.
Mulți oferă, de asemenea, un tip predefinit ,, stringpentru corzi . Limbajele la nivel înalt pot, de asemenea, suporta nativ tipuri corespunzătoare altor structuri de date .
De exemplu, declarația de indicatori sau matrice în limbajul C necesită specificarea tipului care trebuie utilizat ca bază pentru datele gestionate. Generic de programare se extinde această practică pentru a permite utilizatorului să creeze propriile sale tipuri parametrizate.
Unele limbi permit dezvoltatorului să definească tipuri specifice aplicației sale. Un tip enumerat indică o listă de valori posibile pentru o variabilă. Următorul cod ilustrează definiția unui nou tip de culoare , urmată de declarația unei variabile de acest tip:
type couleur : {rouge, bleu, vert}; var c : couleur; // La variable c, du type couleur, peut prendre les valeurs // rouge, bleu ou vert uniquement.Tipurile de compuși ( structîn C , recordîn Pascal ) fac posibilă gruparea mai multor câmpuri de tipuri distincte în aceeași variabilă (care conține apoi „sub-variabile”).
În programarea orientată pe obiecte , o clasă se numește un tip compus asociat cu cod specific - definiția metodelor clasei - specifică manipulării variabilelor de acest tip.
De programare orientat-obiect se extinde paradigma anterioară organizarea ierarhică a claselor , astfel încât o variabilă a unei subclase pot fi utilizate în mod transparent , în loc de orice clasă de la un nivel superior în ierarhia definită.
Un tip opac este un tip care este incomplet definit și / sau a cărui natură este ascunsă. Dezvoltatorul nu își poate revizui sau modifica conținutul și trebuie pur și simplu să îl stocheze și să îl transmită. În acest scop, se cunoaște de fapt doar dimensiunea unui tip opac.
Datele opace sunt, de exemplu, mânere (terminologia Windows ), descriptori de fișiere (terminologia Unix ), chei , indicatori către structuri ascunse (de exemplu, FILE*din biblioteca C standard ) etc. Noțiunea doar crucială este faptul că o variabilă opacă este asigurată printr - o funcție de creație dedicată (de constructor de tip ), transmisă ca este funcțiile de utilizator ( de multe ori printr - un pasaj de referință ), și în cele din urmă a distrus printr - o funcție de eliberare. ( Distructivă de tip ) .
Posibilitatea - sau nu - de a avea tipuri opace depinde în totalitate de limbajul de programare utilizat.
Vorbim despre tastarea statică atunci când majoritatea verificării de tip se face la compilare .
Dimpotrivă, vorbim de tastare dinamică atunci când aceste verificări sunt efectuate în timpul execuției.
Cu o tastare explicită, depinde de utilizator însuși să indice tipurile pe care le folosește, de exemplu atunci când declară variabile sau funcții.
De exemplu, în limbajul C , tastarea este explicită:
int i = 0; // cette déclaration indique explicitement que // la variable i est de type entierDimpotrivă, cu un sistem de tastare implicit, dezvoltatorul lasă compilatorul sau timpul de execuție să determine singur tipurile de date utilizate, de exemplu prin deducție .
De exemplu, în Objective Caml , tastarea este implicită:
let i = 0 ;; (* le compilateur détermine automatiquement que la variable i est de type entier *)Siguranța tastarea este destinat să prevină erorile de tip, și anume: utilizarea unei variabile a cărei format este incompatibil. Definiția unui limbaj puternic tastat este destul de vagă: