В информатике явная типизация — это явная идентификация программистом типа каждой объявляемой переменной. Например: если переменная X будет хранить целые числа, то ее тип должен быть объявлен как целое число. Термин «явная типизация» часто используется вместе с термином скрытая типизация для описания разницы между статическим членством объекта во время компиляции и его идентичностью типа во время выполнения .
Напротив, некоторые языки программирования используют неявную типизацию (также известную как вывод типа ), где тип выводится из контекста во время компиляции, или допускают динамическую типизацию, при которой переменная просто объявляется и ей может быть присвоено значение любого типа во время выполнения.
Рассмотрим следующий пример, написанный на языке программирования C :
#include <stdio.h> int main ( void ) { char s [] = "Тестовая строка" ; float x = 0.0f ; int y = 0 ; printf ( "Привет, мир! \n " ); return 0 ; }
Переменные s , x и y были объявлены как массив символов, число с плавающей точкой и целое число соответственно. Система типов отклоняет на этапе компиляции такие заблуждения, как попытка сложить s и x . Начиная с C23 , вывод типа может использоваться в C с ключевым словом auto
. [1] Используя эту возможность, предыдущий пример может стать:
#include <stdio.h> int main ( void ) { char s [] = "Test String" ; // auto s = "Test String"; эквивалентно char* s = "Test String"; auto x = 0.0f ; auto y = 0 ; printf ( "Привет, мир! \n " ); return 0 ; }
Аналогично второму примеру, в Standard ML типы не обязательно должны быть явно объявлены. Вместо этого тип определяется типом назначенного выражения.
let val s = "Тестовая строка" val x = 0.0 val y = 0 in print "Hello, World! \n " end
В этой программе нет явных типов, но компилятор все равно выводит типы string
и real
для int
них и отклоняет выражение s+x
как ошибку времени компиляции.