Ответ
Статическая типизация проверяет типы данных на этапе компиляции, а динамическая типизация — во время выполнения программы.
Пример статической типизации (Swift):
var number: Int = 42
number = "текст" // Ошибка компиляции: несовместимый тип
Пример динамической типизации (Python):
number = 42
number = "текст" # Ошибки нет, тип изменен
Преимущества статической типизации:
- Безопасность: Раннее обнаружение ошибок типа.
- Производительность: Возможности оптимизации компилятором.
- Поддержка IDE: Автодополнение и навигация по коду.
Преимущества динамической типизации:
- Гибкость: Переменные могут менять тип.
- Скорость разработки: Меньше шаблонного кода, быстрое прототипирование.
Swift использует статическую типизацию с выводом типов (type inference), что сокращает аннотации: let message = "Hello" (компилятор выводит String). Objective-C поддерживает динамическую типизацию через тип id.