В языках программирования типы данных и определения переменных нужны для того, чтобы определить требования к памяти для этих переменных и фиксировать диапазон их значений.


Для базовых типов требования к памяти и диапазоны принимаемых объектами этих типов значений определяются реализацией языка.


Для производных типов эти требования заложены в их определениях.


Для объектов, описанных в программе, память выделяется до начала работы программы. С их помощью можно представлять только статические данные. Однако, во многих задачах требуется использовать более сложные данные, представление которых (конфигурация, размер, состав) может меняться в процессе выполнения программы. Такие данные являются динамическими.