- •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. Событийная модель взаимодействия и событийно-управляемое программирование. Обработчик событий.
6. Трансляция как способ реализация языка программирования. Виды трансляторов.
2 способа реализации ЯП:
1) Трансляция.
2) Интерпретация (программная имитация).
Трансляция – процесс работы специальной программы, выполняющей перевод с 1 языка (в т.ч. высокого уровня) на другой язык.
Транслятор – языковой процессор, воспринимающий программу на некотором языке в качестве входных данных и формирующий в результате работы функциональные эквивалентные программы на другом языке.
данные 1|программа А||транслятор||программа В| данные 1
| результат пр.A= результат пр.B|
Функционал эквивалентен – при одинаковых наборах входных данных программа формирует одинаковые наборы выходных данных.
В – объектный язык транслятора.
Исходный язык – язык изначальной программы (входной).
Виды:
Ассемблер – транслятор, входным языком которого является символическое представление машинного кода, а объектным – подмножество машинного языка некого реального или виртуального компьютера.
Дизассемблер – в противоположную сторону, входной язык – машинный код, выходной – язык ассемблера.
Компилятор – транслятор, входным языком которого является ЯВУ, а объектным – язык близкий к МЯ реальной или виртуальной ЭВМ.
Декомпилятор – эквивалентный код на ЯВУ (нет взаимно-однозначного преобразования).
Редактор связей – транслятор, входным языком которого является МЯ в перемещаемой форме (те не готов к непосредственному выполнению из-за неопределенности адресов в памяти для размещения команд данных), а объектным – МЯ готовый для передачи данных.
Задача: создание единой программы с согласованной адресацией.
Препроцессор – вариант транслятор. Входной язык – расширение ЯВУ, а объектный – стандарт того же язык.
Конвертер – входной/выходной язык – переводчик с одного ЯВУ на другой.
Кросскомпилятор – вид транслятора, который переводит с одного МЯ на другой.
7. Интерпретация как способ реализации языка программирования. Типовой алгоритм работы интерпретатора.
Интерпретация – процесс моделирование некоторой виртуальной ЭВМ.
Алгоритм интерпретация.
(начало) ---(A)->|выбор следующего по порядку оператора|-->|его расшифровка – определение операции и операнда|--> |выбор операндов|--> <остановить операцию?> -да->|остановка|-->(конец) -нет-> |выполнение операции|--> (A)
Операнд – нечто, с чем выполняется операция (данные).
Операция – само действие.
Простой интерпретатор анализирует и тут же выполняет (собственно интерпретация) программу покомандно (или построчно), по мере поступления её исходного кода на вход интерпретатора.
+
мгновенная реакция
-
интерпретатор обнаруживает ошибки в тексте программы только при попытке выполнения команды (или строки) с ошибкой
Интерпретатор компилирующего типа — это система из компилятора, переводящего исходный код программы в промежуточное представление, например, в байт-код, и собственно интерпретатора, который выполняет полученный промежуточный код (так называемая виртуальная машина).
Байт-код - машинно-независимый код низкого уровня, генерируемый транслятором и исполняемый интерпретатором. Большинство инструкций байт-кода эквивалентны одной или нескольким командам ассемблера.
+
большее быстродействие выполнения программ (за счёт выноса анализа исходного кода в отдельный, разовый проход, и минимизации этого анализа в интерпретаторе).
-
большее требование к ресурсам и требование на корректность исходного кода
Достоинства
Большая переносимость интерпретируемых программ — программа будет работать на любой платформе, на которой есть соответствующий интерпретатор.
Как правило, более совершенные и наглядные средства диагностики ошибок в исходных кодах.
Упрощение отладки исходных кодов программ.
Меньшие размеры кода по сравнению с машинным кодом, полученным после обычных компиляторов.
Недостатки
Интерпретируемая программа не может выполняться отдельно без программы-интерпретатора. Сам интерпретатор при этом может быть очень компактным.
Интерпретируемая программа выполняется медленнее, поскольку промежуточный анализ исходного кода и планирование его выполнения требуют дополнительного времени в сравнении с непосредственным исполнением машинного кода, в который мог бы быть скомпилирован исходный код.
Практически отсутствует оптимизация кода, что приводит к дополнительным потерям в скорости работы интерпретируемых программ.
