Статическая типизацияСтати́ческая типиза́ция — приём, широко используемый в языках программирования, при котором переменная, параметр подпрограммы, возвращаемое значение функции связывается с типом в момент объявления и тип не может быть изменён позже (переменная или параметр будут принимать, а функция — возвращать значения только этого типа). Примеры статически типизированных языков — Ада, Си, C++, C#, D, Java, ML, Паскаль, Solidity, Go, Фортран. Противоположный приём — динамическая типизация. Некоторые статически типизированные языки позже получили возможность также использовать динамическую типизацию при помощи специальных подсистем. Например, Статическая типизация даёт самый простой машинный код, поэтому она удобна для языков, дающих исполняемые файлы операционных систем или JIT-компилируемые промежуточные коды. Многие ошибки исключаются уже на стадии компиляции, поэтому статическая типизация хороша для написания сложного, но быстрого кода. В интегрированной среде разработки осуществимо более релевантное автодополнение, особенно если типизация — сильная статическая: множество вариантов можно отбросить как не подходящие по типу. Чем больше и сложнее проект, тем большее преимущество даёт статическая типизация, и наоборот. В то же время, статически типизированные языки с недостаточно проработанной математической базой оказываются довольно многословными: каждый раз надо указывать, какой тип будет иметь переменная. В некоторых языках есть автоматическое выведение типа, однако оно может привести к трудноуловимым ошибкам. Это не верно для языков семейства ML, основанных на так называемой «главной типизации» (англ. principal typing scheme[3]), которая одновременно автоматически выводит наиболее общий тип всякого выражения и строго проверяет согласование типов зависимостей. Это придаёт языку выразительность динамически типизируемых, при этом обеспечивает лучшее быстродействие и типобезопасность[3]. Примечания
Литература
|