Поняття про дескриптор

 

Статичні структури відносяться до розряду непримітивних структур, що представляють собою структуровану множину базових або інших інтегрованих структур. Оскільки за визначенням статичні структури відрізняються відсутністю змінюваності, пам'ять для них виділяється автоматично – як правило, на етапі компіляції чи при виконанні – на момент активізації того програмного блока, у якому вони описані. Ряд мов програмування (PL/1, ALGOL-60) допускають розміщення статичних структур у пам'яті на етапі виконання за явною вимогою програміста, але й у цьому випадку обсяг виділеної пам'яті залишається незмінним до знищення структури. Виділення пам'яті на етапі компіляції є настільки зручною властивістю статичних структур, що в ряді задач програмісти використовують її для представлення об'єктів, що характеризуються змінюваністю. Наприклад, коли розмір масиву невідомий заздалегідь, для нього резервується максимально можливий розмір.

Кожну структуру даних будемо характеризувати її логічним і фізичним представленням. Фізичне представлення звичайно не відповідає логічному, і крім того, може істотно відрізнятися в різних програмних системах. Нерідко фізичній структурі ставиться у відповідність дескриптор чи заголовок, що містить загальні відомості про фізичну структуру. Дескриптор необхідний, наприклад, у тому випадку, коли граничні значення індексів елементів масиву невідомі на етапі компіляції, і, отже, виділення пам'яті для масиву може бути виконано тільки на етапі виконання програми (як у мові PL/1, ALGOL-60). Дескриптор зберігається, як і сама фізична структура, у пам'яті та складається з полів, характер, число і розміри яких залежать від тієї структури, що він описує і від прийнятих способів її обробки. У ряді випадків дескриптор є зовсім необхідним, тому що виконання операції доступу до структури вимагає обов'язкового знання якихось її параметрів, і ці параметри зберігаються в дескрипторі. Інші збережені в дескрипторі параметри не являються необхідними, але їхнє використання дозволяє скоротити час доступу чи забезпечити контроль правильності доступу до структури. Дескриптор структури даних, підтримуваний мовами програмування, є "невидимим" для програміста; він створюється компілятором і компілятор, формуючи об'єктні коди для доступу до структури, включає в ці коди команди, що звертаються до дескриптора.

Статичні структури в мовах програмування пов'язані із структурованими типами. До них відносять: вектори, масиви, записи (у деяких мовах – структури) і множини (цей тип реалізований не у всіх мовах).