System typów – system klasyfikacji wyrażeń w zależności od rodzajów wartości, jakie one generują[1]. Każdej obliczonej wartości przypisywany jest pewien typ, który jednoznacznie definiuje, jakie operacje można na niej wykonać. Śledząc przepływ wartości, system typów stara się udowodnić, że w programie występuje poprawne typowanie, tzn. nie dochodzi do sytuacji, w której na wartości określonego typu próbujemy wykonać niedozwoloną operację.

Kompilator może posłużyć się informacją o typie do poprawnego określenia ilości pamięci niezbędnej na przechowanie wartości oraz wyboru najlepszych algorytmów. Na przykład wiele kompilatorów języka C zapisuje typ "float" na 32 bitach zgodnie z założeniami normy IEEE 754 dla liczb zmiennoprzecinkowych pojedynczej precyzji. Ponadto do przetwarzania wartości tego typu wybierane są instrukcje procesora oraz algorytmy zaprojektowane specjalnie dla nich.

Typizacją języka nazwiemy ilość ograniczeń nakładanych na typy oraz sposób ich obliczania. Teoria typów zajmuje się badaniami nad systemami typów, jednak rzeczywiste systemy typów stosowane w językach programowania wywodzą się przeważnie z praktycznych obserwacji oraz ograniczeń nakładanych przez architekturę sprzętową, budowę kompilatora i samego języka.

Zobacz też edytuj

Przypisy edytuj

  1. Benjamin Pierce: Types and Programming Languages. MIT Press, 2002. ISBN 0-262-16209-1. (ang.).