- •1. Проблемы автоматизации программирования. Уровни автоматизации и их эффективность (общая характеристика).
- •2. Уровни автоматизации программирования (общая характеристика) и их использование при разработке программного обеспечения автоматизированных систем.
- •3. Автоматизация программирования. Машинный код.
- •4. Автоматизация программирования. Язык ассемблера.
- •5. Автоматизация программирования. Язык программирования.
- •6. Трансляция как способ реализация языка программирования. Виды трансляторов.
- •7. Интерпретация как способ реализации языка программирования. Типовой алгоритм работы интерпретатора.
- •8. Процессы трансляции и интерпретации. Сравнительная характеристика.
- •Основные различия
- •1. Транслятор
- •2. Интерпретатор
- •9. Процесс трансляции и его этапы. Типовая структура транслятора (общая характеристика).
- •10. Процесс трансляции. Лексический анализ исходной программы.
- •11. Процесс трансляции. Синтаксический анализ исходной программы.
- •12. Процесс трансляции. Семантический анализ исходной программы.
- •13. Процесс трансляции. Этап синтеза выполняемой программы.
- •14. Понятие уровня языка программирования. Способы реализации языков программирования (общая характеристика).
- •15. Объекты данных и их виды. Основные понятия. Время жизни и область видимости.
- •16. Атрибуты объектов данных. Понятие типа данных. Связывание объектов данных с атрибутами.
- •17. Понятие связывания. Время связывания и атрибуты объектов данных.
- •18. Структуры данных. Основные понятия и атрибуты.
- •19. Массив как механизм структуризации данных.
- •Недостатки
- •20. Строка как механизм структуризации данных.
- •21. Запись как механизм структуризации данных.
- •22. Сравнительный анализ основных языковых механизмов структуризации данных.
- •23. Множество как механизм структуризации данных, объявления множеств и операции с множествами.
- •24. Файловые структуры данных, особенности работы с файлами различного типа.
- •25. Модули как библиотеки ресурсов и особенности работы с ними.
- •26. Понятия вычислительной модели языка программирования. Императивная и объектно-ориентированная модели.
- •27. Базовые идеи структурного и объектно-ориентированного подхода к разработке программных продуктов.
- •28. Понятие визуального проектирования и визуальные компоненты системы программирования.
- •29. Особенности функционирования приложений в современных ос.
- •30. Событийная модель взаимодействия и событийно-управляемое программирование. Обработчик событий.
12. Процесс трансляции. Семантический анализ исходной программы.
3 этап анализа исходной программы. Семантический анализ – этап выявления смысла.
На этом этапе обрабатываются структуры, которые были идентифицированы синтаксическим анализатором, и начинает формироваться структура выполняемого объектного кода. Семантический анализ – мост между анализом и синтезом.
Семантический анализатор обычно разделен на ряд более мелких анализаторов, каждый из которых обрабатывает какую-либо определенную программную конструкцию.
Некоторые наиболее общие функции анализаторов:
Поддержка таблицы символов.
Таблица символов – одна из центральных структур данных для каждого транслятора. Таблица состоит из элементов, каждый из которых соответствует какому-либо идентификатору, имеющемуся в программу, при этом в таблице отражены все такие идентификаторы. Элементы таблицы – это не просто идентификаторы; каждый элемент содержит дополнительную информацию об атрибутах этого идентификатора: его типа (имя массива, просто переменная, имя подпрограммы итд), тип значения, и вообще всю информацию, которую можно извлечь из объявления и применения этого идентификатора в исходной программе.
Включение в таблицу неявной информации.
Часто бывает так, что информация, неявно содержащаяся в исходной программе, должна стать явной в объектной программе низкого уровня. Большая часть такой неявной информации относится к так называемым соглашениями по умолчанию.
Обнаружение ошибок.
2 вида:
- Использование неверных типов данных. Контроль типов – процесс проверки того, что каждая операция получается правильно число аргументов правильного типа
- Использование несуществующих, либо недоступных программных объектов (переменных, типов, структур данных итп). Недоступность – где-то объявлены программные объекты, но туда добраться нельзя.
4. Обработка макросов.
Макрос – часть программы, которая определена отдельно и должна быть вставлена в программу в процессе трансляции.
(Ex. (Pascal))
var a: array[1…5, 1..10] of integer; i, j, k: integer; b: real;
1) a[i,j,k] = … - неправильное число аргументов
2) i: =b - неправильный тип
13. Процесс трансляции. Этап синтеза выполняемой программы.
На заключительном этапе трансляции происходит создание выполняемой программы на основе того, что было сделано семантическим анализатором. Этот этап включает обязательно генерацию кода и может также включать оптимизации получившейся программы. Если подпрограммы транслировались отдельно или использовались библиотечные подпрограммы, то необходима заключительная стадия редактирования связей и загрузки, чтобы получить полностью пригодную для выполнения программу.
Оптимизация. Обычно результатом работы семантического анализаторы является программа в промежуточном коде. На основе этого представления генераторы кода могут создавать выходной объектный код в нужном формате. Тем не менее еще до генерации этого кода обычно происходит некоторая оптимизации программы в ее внутреннем представлении. (Обычно семантический анализатор генерирует фрагментированный (неэффективный) код)
Генерация кода. После оптимизации (оттранслированной во внутренний код программы) программа должна быть преобразована в объектный код, который и станет результатом трансляции.
Редактирование связей и загрузка. Этот этап не является обязательным. Фрагменты кода, полученные в результате раздельной трансляции подпрограмм, на данном этапе объединяются в выполняемую программу в ее окончательном виде.
В итоге получается выполняемая программа в окончательной форме, готовая к работе.
