Динамическая типизация: тип переменной определяется во время выполнения программы. Одна и та же переменная может хранить данные разных типов.
Статическая типизация: тип переменной определяется во время компиляции (или интерпретации до выполнения). После объявления переменная может хранить данные только определенного типа.
Основные различия:
| Признак | Динамическая типизация | Статическая типизация |
|---|---|---|
| Определение типа | Во время выполнения | Во время компиляции/анализа |
| Гибкость | Высокая, переменные могут менять тип | Низкая, тип фиксирован |
| Обнаружение ошибок | Во время выполнения | Во время компиляции/анализа |
| Производительность | Может быть ниже (за счет проверок во время выполнения) | Может быть выше (за счет оптимизаций компилятора) |
| Примеры языков | Python, Ruby, JavaScript | Java, C++, C#, Go |
Пример на Python (динамическая):
python
Пример на Java (статическая):
java