Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уровни описания структур данных.docx
Скачиваний:
10
Добавлен:
22.09.2019
Размер:
62.72 Кб
Скачать
  1. Уровни описания структур данных.

При описании какого либо объекта (простого либо структурного типа данных) нужно различать его абстрактные свойства и конкретную реализацию в языке программирования и на конкретной машине. Для описания абстрактных свойств объекта удобно иметь определения класса всех объектов, обладавших этими свойствами, т.е. описание этого типа данных.

Функциональной спецификацией какого либо типа данных называют формальное определение этого типа, не зависящее не от языка программирования, не от реализации в памяти машины. Формальное определение типа данных это множество значений этого типа, множество изображений этих значений с правилом их интерпретации, базовое множество операций с этими типами и отношений между элементами. Функциональная спецификация обеспечивает полное описание данного типа, но в нее не включаются никакие требования к внутренней организации объектов этого типа. (Прим: целый тип и операции над ним)

Логическое описание – отображение выбранной спецификации на средства языка программирования. В языке программирования может уже находиться подходящий тип данных либо его необходимо реализовать программисту. Во втором случае необходимый тип данных «собирается» из уже существующих(базовых) типов в ЯП, а также определяются отношения и операции над этим типом. (Прим: литеры в машине тьюринга, структуры в Си для нового типа данных)

Физическое представление – конкретное отображение на память машины объектов программы в соответствии с логическим описанием. Конструктивные особенности памяти как последовательности слов с произвольным доступом обуславливают существование 2 видов физического представления объектов в памяти машины: сплошное и цепное. Сплошное – объект размещается в памяти машины в непрерывной последовательности единиц хранения. Оно имеет эффективную аппаратную поддержку, так как для доступа к элементам требуется простое вычисление: (номер слова-1)*(длина слова) с малой ценой доступа О(1). Для внешних устройств с последовательным доступом сплошное представление является единственно возможным. Цепное представление – значение объекта разбивается на отдельные части, которые могут быть расположены в разных участках памяти машины, причем эти участки так или иначе связаны в цепочку при помощи указателей. Цепное представление в основном используется для динамических структурных объектов.

Если объект имеет статически заданный размер, то используют сплошное представление, для более простого доступа к объектам, в противном же случае используется цепное представление.

  1. Статические и динамические объекты программ

Статическими называются свойства и связи объектов программы, которые не изменяются в процессе ее выполнения. К статическим можно отнести определение типов в языке паскаль. Тип не может изменяться в процессе выполнения программы. Перечень операций над типом также являются статическим свойством в паскале.

Динамическими называются свойства и связи, которые могут меняться в процессе выполнения программы. К ним можно отнести значения переменных в Си. В языке Python имеется возможность добавлять и удалять применяемые к объекту операции в ходе работы программы.

Часто статич и динамич характеристики называют соответственно характеристиками периода компиляции (трансляции) и периода выполнения (runtime), подчеркивая то обстоятельство, что исходные данные в процессе компиляции недоступны и, следовательно, динамические характеристики недоступны, а известна лишь информация, извлекаемая из текста программы (т.е. статическая).

Уровень изменчивости объектов языка – одно из важнейших свойств языка. Одна крайняя позиция представляет неограниченный динамизм языка, когда любая характеристика обрабатываемого объекта может быть изменена при выполнении программы. Такой подход может негативно сказаться на безопасности программы, т.к. прогнозирование и контроль становятся сложнее. Другая крайность является в максимальном затруднении изменения характеристик объектов. Неограниченной статики добиться невозможно, так как если в языке нет возможности изменять переменные, то данная программа не сможет ничего высчитать, так как результат вычислений будет негде хранить. Так что всегда есть возможность изменять хотя бы значения переменных в процессе выполнения программы. Обычно к статике стремятся ради надежности программ и скорости объектных программ (т.к. больше связей можно выполнить в процессе трансляции и сэкономить время в процессе исполнения).

Если память выделяется в процессе трансляции и ее объём не меняется в процессе выполнения программы, то такой объект является статическим. Если же память выделяется в процессе выполнения и ее объем может меняться, то этот объект – динамический.