35 lines
1.8 KiB
Markdown
35 lines
1.8 KiB
Markdown
Это два разных подхода к тому, как [языки программирования](Язык%20программирования) работают с [типами данных](Типы%20данных.md) (числа, строки, списки и т.п.).
|
||
|
||
## Статическая типизация
|
||
Тип переменной известен на этапе компиляции, до запуска программы.
|
||
|
||
Примеры языков: C, C++, Java, Rust, Go, C#.
|
||
#### Особенности
|
||
- Типы переменных объявляются заранее.
|
||
- Ошибки несоответствия типов обнаруживаются **до запуска**.
|
||
- Код работает быстрее.
|
||
- Программист должен строго следить за типами.
|
||
### Плюсы
|
||
- Раннее обнаружение ошибок.
|
||
- Быстрая работа.
|
||
- Легче оптимизировать.
|
||
### Минусы
|
||
- Много “служебного” кода.
|
||
- Менее гибко.
|
||
|
||
## Динамическая типизация
|
||
**Тип переменной определяется во время выполнения программы**.
|
||
|
||
Примеры: **Python, JavaScript, Ruby, PHP, Lua**.
|
||
#### Особенности
|
||
- Можно присвоить переменной значение любого типа.
|
||
- Ошибки типов проявляются только во время выполнения.
|
||
- Код гибче и короче.
|
||
### Плюсы
|
||
- Гибкость.
|
||
- Быстрая разработка.
|
||
- Меньше кода.
|
||
### Минусы
|
||
- Ошибки типов могут проявиться поздно.
|
||
- Немного медленнее, потому что типы проверяются на ходу.
|