Виды типизации

  • Статическая - типизация, при которой переменная связывается с типом в момент объявления, и тип не может быть изменён позже, динамическая - типизация, при которой тип переменной задается в момент присваивания значения, а не в момент объявления, и т.о. может быть изменен позже.

Пример статической типизации (С++): 

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, Источник

Примеры ответов: