ликвидируя их целиком. В этом смысле некоторые ОО-языки являются статически слабо типизиро-
ванными. Мы будем бороться за наиболее сильную типизацию.
В динамически типизированных языках, например Python, известных как нетипизированные, от-
сутствуют объявления типов, а к сущностям в период выполнения могут присоединяться любые
значения. Статическая проверка типов в них невозможна.
Преимущества
Причины применения статической типизации в объектной технологии мы перечислили в начале
лекции. Это надежность, простота понимания и эффективность.
Надежность обусловлена обнаружением ошибок, которые иначе могли проявить себя лишь во вре-
мя работы, и только в некоторых случаях. Первое из правил, заставляющее объявлять сущности,
как, впрочем, и функции, вносит в программный текст избыточность, что позволяет компилято-
ру, используя два других правила, обнаруживать несоответствия между задуманным и реальным
применением сущностей, компонентов и выражений.
Раннее выявление ошибок важно еще и потому, что чем дольше мы будем откладывать их по-
иск, тем сильнее вырастут издержки на исправление. Это свойство, интуитивно понятное всем
программистам-профессионалам, количественно подтверждают широко известные работы Бема (Boehm).
Зависимость издержек на исправление от времени отыскания ошибок приведена на графике, постро-
енном по данным ряда больших промышленных проектов и проведенных экспериментов с небольшим
управляемым проектом:
Читабельность или Простота понимания (readability) имеет свои преимущества. Во всех примерах
этой книги появление типа у сущности дает читателю информацию о ее назначении. Читабельность
крайне важна на этапе сопровождения.
Исключив читабельность из круга приоритетов, можно было бы получить другие преимущества,