Программе, во время ее работы, требуются данные. Определение программы как некоторого реализованного алгоритма обработки данных имеет под собой основу: любой оператор языка программирования требует для своей работы данные: условие требует вычисления некоторого логического или арифметического выражения, функция рисования линии требует наличия информации о координатах и цвете линии и т.д. В некоторых случаях эти необходимые данные могут иметь сложную структуру и большой объем (например, рисунки, карты местности, справочник телефонов города и т.п.).
Для хранения данных программы и организации доступа к ним можно использовать разные механизмы. Приведем примеры некоторых из них:
1. Хранение данных в сегменте данных программы. Данный механизм применяется для хранения переменных и сложных констант, объявленных в программе. Обеспечивает непосредственный доступ к информации в командах языка.
2. Хранение данных на внешних носителях (в подключаемых файлах). Данный метод используется для хранения, как правило, больших объемов информации (например, рисунков). Файл подключается к программе во время ее выполнения, нужные данные считываются в программу (в память программы) и используются аналогично первому случаю. Достоинствами этого механизма являются: раздельное хранение кода и данных, возможность компиляции программы независимо от данных, возможность раздельной обработки данных и программы. Недостаток проявляется, в случаях потери одного из файлов или наличия несовместимых версий файлов. К недостаткам также можно отнести необходимость написания дополнительных частей программы для работы с файлом.
3. Использования баз данных. Аналогично предыдущему случаю, однако программисту предоставляются дополнительные возможности по работе с данными с одной стороны, и накладываются требования к соблюдению форматов данных и протоколов обмена данными.
4. Использование файлов ресурсов. Файл ресурсов является внешним файлом относительно текста программы на языке высокого уровня. Однако, при компиляции, данные, содержащиеся в файле ресурсов, помещаются в .ЕХЕ-файл, а при выполнении программы, загружаются в память вместе с программой.