Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
подготовка к мк2.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
632.83 Кб
Скачать
  1. Критерии сравнения языков программирования

-Ясность, простота и согласованность понятий языка

-Ясность структуры программы

-Естественность в приложении

-Легкость расширения

-Внешнее обеспечение

-Эффективность:

А) Эффективность выполнения программы

Б) Эффективность трансляции программы

В) Эффективность создания, тестирования и использования программы

  1. Понятие виртуального компьютера

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

Пример: виртуальный компьютер языка С – реализуется программами из библиотеки поддержки выполнения, загружаемой с программой.

3. Представление данных в памяти

4. Элементарные типы данных

Тип данных — это некоторый класс объектов данных вместе с набором операций для создания и работы с ними. Если программа имеет дело с какими-то конкрет­ными объектами данных (например, массив А, целочисленная переменная X или файл f), язык программирования, как правило, по необходимости имеет дело с ти­пами данных — классами массивов, целых чисел или файлов и операциями, позво­ляющими с ними работать.

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

Элементарный объект данных может содержать только одно значение. Класс та­ких объектов, для которых определены различные операции, называется элементарным типом данных. Хотя в каждом языке программирования, как правило, присутствует свой, отличный от других набор элементарных типов данных такие типы, как вещественные и целые числа, булевы значе­ния, перечисления и указатели присутствуют почти во всех языках.

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

Способ представления элементарных типов данных сильно зависит от аппаратной части компьютера, на котором будет выполняться программа. Например, для це­лочисленных и вещественных величин почти всегда используется двоичное пред­ставление (соответственно целочисленное или с плавающей точкой), которое обес­печивается аппаратной частью компьютера.

5. Декларации

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

Декларации необходимы для:

  1. Более эффективного хранения структур данных и доступа к ним

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

  1. Улучшения управления памятью

  2. Статической проверки типов

Если во время трансляции известен тип операндов, то транслятор может сгенерировать специфическую для этих типов операцию. Можно проверять тип во время выполнения программы (динамическая проверка) но это снизит скорость выполнения программы.

Декларации могут быть и явными и неявными.

6.Однородные массивы фиксированной длины

7.Неоднородные массивы фиксированной длины

Структуру данных, состоящую из фиксированного количества компонентов разного типа, называют записью. Компоненты записей могут быть разнородными, компоненты обозначаются символическими именами – идентификаторами.

Пример: struct student

{int age; String name;} st;

Для выбора компонента записи в языке С или ява используют следующий синтаксис

st. age st. name

Атрибуты записи: количество компонентов, тип данных для каждого компонента, имя каждого компонента. Обычно компоненты называют полями. Выбор компонентов является одной из основных операций над записями. Можно присваивать одной записи другую, имеющую такую же структуру.

struct student st1; st1= st;

8. Массивы переменного размера

МПР – это массивы, которые могут динамически расти и сокращаться во время выполнения программы. Основные операции добавление, исключение элементов, и доступ к элементам.

К линейным МПР относятся стеки, списки, очереди. Доступ к элементу чаще всего относительный, т.е. предыдущий или следующий элемент относительно данного. По индексу доступ тоже возможен, но т.к., массив изменяет свой размер, элементы тоже обретают новые индексы.

Стеки. Включение и исключение элементов ограничено одним концом – вершиной. Доступ разрешен только к элементу находящемуся на вершине. Представление в памяти последовательное, связанное.

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

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

МПР также бывают многомерными структурами, если элементом массива служит указатель на другой массив. К многомерным структурам относят деревья, списковые структуры, направленные графы.

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

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

9. Связывание и время связывания

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

Классификация времени связывания

Хотя простая классификация различных типов связываний отсутствует, тем не менее можно выделить несколько основных классов времени связывания:

1. Во время выполнения программы. Наиболее простые свя­зывания осуществляются во время выполнения программы. Сюда относятся связывания переменных и их значений и связывание структур данных и переменных с кон­кретными адресами памяти. Можно выделить два важных под­класса.

а) При входе в подпрограмму или блок;

б) В произвольных точках программы во время ее выполнения. Связывания других важных классов могут происходить в любых точках программы при ее выполнении. Наиболее важным примером является связывание пере­менных с их значениями с помощью присваивания.

2. Во время трансляции (время компиляции). Эти связывания могут включать в себя определение типов переменных, типов и размеров структур данных, а часто и детальные описания структуры данных, часто во время загрузки—последней стадии трансляции, во время которой странслированные программы объединяются друг с другом и загружаются с память в окончательной, готовой к выполнению форме.

3. При определении языка. Структура языка программирования в основном фиксируется, конечно, при определении языка. Фиксация состоит в задании набора альтернатив, которыми программист может пользоваться при написании программы. Обычно возможные формы инструкций, типы структур данных, программные структуры и т. д. фиксируются при определении языка.

4. При реализации языка. В каждом языке имеются эле­менты, не конкретизируемые при определении языка; они долж­ны наполниться конкретным содержанием при реализации данного языка на конкретной машине. Определения арифмети­ческих операций и представлений чисел—это наиболее очевид­ные примеры.

10. Управление данными. Локальные и нелокальние среды ссылок

Локальные/нелокал.среды ссылок.Среда ссылок-множество ассоциаций идентификаторов.Среда ссылок подпрограммы обычно не меняется во время ее выполнения.Она устанавл.в момент создания активации программы и остается неизменной в течении всего времени жизни активации.Среда ссылок подпрограммы может состоять из мн-ва компонентов:1)Среда локальных ссылок.Мн-во ассоциаций,созданных при входе в подпрограмму и представляющих формальные параметры,локал.переменные и подпрограммы,определенные только внутри этой подпрограммы,формирует среду лок.ссылок этой активации программы.2)Среда нелокальних ссылок. Мн-во ассоциаций для идентификаторов,которые могут исп.в подпрограмме,но не были созданы при входе в нее.