Как уже упоминалось, Java, C, C ++ статически типизированы. PHP, Perl, Ruby, Boo и т. Д. Динамически набираются.
Однако некоторые статически типизированные языки, такие как, например, C # 4, также поддерживают динамически типизированное программирование.
dynamic x = 3;
Функциональные языки, C ++, C # и другие также поддерживают вывод типов, что означает, что он все еще использует статические типы, но компилятор выводит тип.
auto x = 3; // C++0x
var x = 3; // C#
let x = 3 // F#
Почему статически типизированные языки также страдают от ошибок приведения типов? Потому что они поддерживают наследование и переход от суперклассов к подклассам. Даункасты, как правило, не могут быть проверены во время компиляции, но могут быть обнаружены во время выполнения и вызовут исключение.