Набор текста

Все языки программирования можно разделить на две основные группы: статически или динамически типизированные. Несмотря на некоторые исключения, можно следовать простому правилу:

  • Скомпилированные языки обычно статически типизированы. В таких языках тип переменной не может быть изменен.
  • Интерпретируемые языки - это в основном языки с динамической типизацией. Тип их переменной можно свободно изменять.

Примеры статической и динамической типизации

C ++ (статический):

#include <iostream>
#include <typeinfo>
using namespace std;
int main()
{
    int a = 10;   // type of 'a' = int
    a = 'A';      // type of 'a' = int
    cout << "Type of 'a' is: " << typeid(a).name() << endl;
    return 0;
}

Вывод:
Type of ‘a’ is: i

Первоначальный тип переменной a был int. Тип переменной a не изменился, несмотря на то, что мы присвоили переменной значение другого типа (char). В последующих манипуляциях с этой переменной она будет использоваться как переменная типа int (ее исходный тип).

Python3 (динамический):

#!/usr/bin/python3
a = 10        # type of 'a' = int
a = "A"       # type of 'a' = class 'str'
print("Type of 'a' is: ", type(a))
input("Press Enter to exit")

Вывод:

Type of ‘a’ is: <class ‘str’>
Press Enter to exit

Тип переменной a был изменен после присвоения ей значения другого типа. В будущем она будет использоваться как переменная типа str, поскольку ее исходный тип int был отброшен.