Статическая типизация

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Типизация данных

Типобезопасность
Вывод типов
Статическая типизация
Динамическая типизация
Сильная и слабая типизация
Зависимые типы
Утиная типизация

Стати́ческая типиза́ция — приём, широко используемый в языках программирования, при котором переменная, параметр подпрограммы, возвращаемое значение функции связывается с типом в момент объявления и тип не может быть изменён позже (переменная или параметр будут принимать, а функция — возвращать значения только этого типа). Примеры статически типизированных языков — Ада, С++, D, Java, ML, Паскаль.

Противоположный приём — динамическая типизация.

Некоторые статически типизированные языки позже получили возможность также использовать динамическую типизацию при помощи специальных подсистем. Например, Variant в Delphi, пакеты в AliceML[1], Data.Dynamic в Haskell[2].

Преимущества[править | править код]

Недостатки[править | править код]

  • Языки с недостаточно проработанной математической базой оказываются довольно многословными: каждый раз надо указывать, какой тип будет иметь переменная. В некоторых языках есть автоматическое выведение типа, однако оно может привести к трудноуловимым ошибкам. Нивелируется функциями IDE вроде quick fix.
    • Сказанное не верно для языков семейства ML, основанных на т. н. «главной типизации» (англ. principal typing scheme[3]), которая одновременно автоматически выводит наиболее общий тип всякого выражения и строго проверяет согласование типов зависимостей. Это придаёт языку выразительность динамически типизируемых, но обеспечивает лучшее быстродействие и типобезопасность[3].
  • Тяжело работать с данными из внешних источников (например, в реляционных СУБД / десериализация данных).

Примечания[править | править код]

  1. AliceML packages
  2. Dynamic in Haskell
  3. 1 2 Pierce, 22 Реконструкция типов, с. 360-361.

Литература[править | править код]