Простатическая маточка
- 1 year ago
- 0
- 0
Стати́ческая типиза́ция — приём, широко используемый в языках программирования , при котором переменная , параметр подпрограммы, возвращаемое значение функции связывается с типом в момент объявления и тип не может быть изменён позже (переменная или параметр будут принимать, а функция — возвращать значения только этого типа). Примеры статически типизированных языков — Ада , C , C++ , C# , D , Java , ML , Паскаль , Solidity , Go , Fortran . Противоположный приём — динамическая типизация .
Некоторые статически типизированные языки позже получили возможность также использовать динамическую типизацию при помощи специальных подсистем. Например,
Variant
в
Delphi
, пакеты в
AliceML
,
Data.Dynamic
в
Haskell
.
Статическая типизация даёт самый простой машинный код , поэтому она удобна для языков, дающих исполняемые файлы операционных систем или JIT-компилируемые промежуточные коды . Многие ошибки исключаются уже на стадии компиляции, поэтому статическая типизация хороша для написания сложного, но быстрого кода. В интегрированной среде разработки осуществимо более релевантное автодополнение , особенно если типизация — сильная статическая: множество вариантов можно отбросить как не подходящие по типу. Чем больше и сложнее проект, тем большее преимущество даёт статическая типизация, и наоборот.
В то же время, статически типизированные языки с недостаточно проработанной математической базой оказываются довольно многословными: каждый раз надо указывать, какой тип будет иметь переменная. В некоторых языках есть автоматическое выведение типа , однако оно может привести к трудноуловимым ошибкам. Это не верно для языков семейства ML , основанных на так называемой «главной типизации» ( англ. principal typing scheme ), которая одновременно автоматически выводит наиболее общий тип всякого выражения и строго проверяет согласование типов зависимостей. Это придаёт языку выразительность динамически типизируемых, при этом обеспечивает лучшее быстродействие и типобезопасность .