Tastarea statică este o tehnică utilizată pe scară largă în limbajele de programare , în care o variabilă , un parametru de subrutină, o valoare de returnare a funcției este asociată unui tip în momentul declarării, iar tipul nu poate fi schimbat ulterior (variabila sau parametrul va accepta, și funcția va returna numai valori de acest tip). Exemple de limbaje tipizate static sunt Ada , C , C++ , C# , D , Java , ML , Pascal , Solidity , Go , Fortran . Tehnica opusă este tastarea dinamică .
Unele limbi tipizate static au câștigat ulterior capacitatea de a utiliza și tastarea dinamică cu ajutorul unor subsisteme speciale. De exemplu, Variantîn Delphi , pachete în AliceML [1] , Data.Dynamicîn Haskell [2] .
Tastarea statică produce cel mai simplu cod de mașină , deci este utilă pentru limbile care produc executabile ale sistemului de operare sau cod intermediar compilat în JIT . Multe erori sunt eliminate deja în etapa de compilare, așa că tastarea statică este bună pentru scrierea unui cod complex, dar rapid. Într -un IDE , o completare automată mai relevantă este fezabilă , mai ales dacă tastarea este puternic statică: multe opțiuni pot fi eliminate deoarece nu se potrivesc cu tipul. Cu cât proiectul este mai mare și mai complex, cu atât este mai mare avantajul tastării statice și invers.
În același timp, limbile tipizate static, cu o bază matematică insuficient dezvoltată, se dovedesc a fi destul de verbose: de fiecare dată trebuie să specificați ce tip va avea variabila. Unele limbi au inferență automată , dar acest lucru poate duce la erori subtile. Acest lucru nu este valabil pentru limbajele familiei ML , bazate pe așa- numita „ schemă principală de tastare [3] ”, care deduce automat tipul cel mai general al oricărei expresii și verifică strict potrivirea tipului de dependență. Acest lucru conferă limbajului expresivitatea celor tipărite dinamic, oferind în același timp performanțe mai bune și siguranță de tip [3] .