Стати́ческая типиза́ция — приём, широко используемый в языках программирования, при котором переменная, параметр подпрограммы, возвращаемое значение функции связывается с типом в момент объявления и тип не может быть изменён позже (переменная или параметр будут принимать, а функция — возвращать значения только этого типа). Примеры статически типизированных языков — Ада, С++, C#, D, Java, ML, Паскаль, Nim.
Противоположный приём — динамическая типизация.
Некоторые статически типизированные языки позже получили возможность также использовать динамическую типизацию при помощи специальных подсистем. Например, Variant
в Delphi, пакеты в AliceML[1], Data.Dynamic
в Haskell[2].
Преимущества
- Статическая типизация даёт самый простой машинный код. Поэтому она удобна для языков, дающих исполняемые файлы ОС или JIT-компилируемые промежуточные коды.
- Многие ошибки исключаются уже на стадии компиляции.
- Поэтому статическая типизация хороша для написания сложного, но быстрого кода.
- В интегрированной среде разработки осуществимо более релевантное автодополнение, особенно если типизация — сильная статическая: множество вариантов можно отбросить как не подходящие по типу.
- Чем больше и сложнее проект, тем большее преимущество дает статическая типизация, и наоборот.
Недостатки
- Языки с недостаточно проработанной математической базой оказываются довольно многословными: каждый раз надо указывать, какой тип будет иметь переменная. В некоторых языках есть автоматическое выведение типа, однако оно может привести к трудноуловимым ошибкам. Нивелируется функциями IDE вроде quick fix.
- Сказанное не верно для языков семейства ML, основанных на т. н. «главной типизации» (англ. principal typing scheme[3]), которая одновременно автоматически выводит наиболее общий тип всякого выражения и строго проверяет согласование типов зависимостей. Это придаёт языку выразительность динамически типизируемых, но обеспечивает лучшее быстродействие и типобезопасность[3].
- Тяжело работать с данными из внешних источников (например, в реляционных СУБД / десериализация данных).
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .