Виды типизации
- Статическая - типизация, при которой переменная связывается с типом в момент объявления, и тип не может быть изменён позже, динамическая - типизация, при которой тип переменной задается в момент присваивания значения, а не в момент объявления, и т.о. может быть изменен позже.
Пример статической типизации (С++):
int x = 5;
x = "abc"; // здесь C++ компилятор будет ругаться
или, что то же самое:
int x;
x = 5;
x = "abc"; // здесь C++ компилятор будет ругаться
пример динамической типизации (Python):
x = 5
x = "a" # здесь интерпретатор не ругается, так как типизация динамическая
- Строгая - отсутствие автоматических кастов в другой тип (неявных преборазований). Нестрогая - наличие таковых.
Пример строгой типизации (Python):
a = [5, 6]
print(",".join(a)) # здесь интерпретатор ругается, так как join() ожидает список строк на входе
Пример нестрогой типизации (Javascript):
let a = "hello";
let b = 100;
let c = a + b;
console.log(c); // "hello100"
- Явная - указываем типы везде руками. Неявная - компилятор/интерпретатор занимается этим сам.
Пример явной типизации (C++):
int x = 5;
y = 6; // здесь компилятор будет ругаться
Пример неявной типизации (Python):
a = 1
Важно: наиболее рационально и оптимально память используется в случае строгой статической типизации.
Oct. 9, 2023, Источник