- •Этапы жизненного цикла программного продукта
- •Состав и схема функционирования классической системы программирования
- •Типы трансляторов, особенности интерпретаторов и компиляторов
- •Общая схема работы компилятора
- •Определение порождающей грамматики
- •Определение языка, порождаемого грамматикой
- •Определение типов грамматики и языков по Хомскому
- •Соотношения между типами грамматик
- •Соотношения между типами языков
- •Определение неоднозначности грамматики и языка
- •Определение недостижимых и бесполезных символов, определение приведенной грамматики
- •Определение детерминированного конечного автомата (ка)
- •Диаграмма состояний (дс) для заданной леволинейной регулярной грамматики. Построение дс
- •Определение недетерминированного конечного автомата
- •Алгоритм построения детерминированного конечного автомата по нка
- •Задачи лексического анализа
- •Организация классов таблиц лексического анализатора
- •Метод рекурсивного спуска: назначение, семантика процедур рекурсивного спуска
- •Достаточные условия применимости метода рекурсивного спуска
- •Расширение класса грамматик, к которым применим метод рекурсивного спуска (проблемы преобразования, эквивалентность предлагаемых преобразований)
- •Задачи семантического анализа
- •Свойства языка внутреннего представления программы, примеры таких языков
- •Машинно-независимая оптимизация. Основные оптимизирующие преобразования
- •Машинно-зависимая оптимизация. Основные оптимизирующие преобразования
- •Интегрированная среда разработки (иср)
- •Основные функции редактора текста в рамках иср
- •Основные функции отладчика в рамках иср
- •Назначение и функционирование редактора связей. Загрузчик
- •Библиотеки. Основные типы библиотек
- •Критерии проектирования стандартных библиотек
- •Stl: контейнеры, итераторы, алгоритмы, аллокаторы. Шаблоны vector и list
Машинно-независимая оптимизация. Основные оптимизирующие преобразования
Не зависят от архитектуры и т.п.
Выявление общих выражений
Распространение копий
Удаление бесполезного кода
Удаление недостижимого кода
Арифметические и логические преобразования
Оптимизация вычисления логических выражений
Оптимизация циклов: вынесение инвариантных вычислений из циклов; замена операций с индуктивными переменными; слияние и развертывание циклов; снижение стоимости операций
Оптимизация передачи параметров в процедуры и функции: передача параметров через регистры процессора, подстановка кода функции вместо ее вызова в объектный код
Машинно-зависимая оптимизация. Основные оптимизирующие преобразования
Распределение регистров: жесткое распределение; распределение на основе графа потока управления
Выбор порядка вычислений
Удешевление операторов
Распараллеливание
Интегрированная среда разработки (иср)
ИСР объединила в себе возможности текстовых редакторов исх. текстов программ и командный язык компиляции. Пользователь не должен выполнять всю последовательность действий от порождения исходного кода программы до его выполнения, от него также не требуется описывать makefile. Достаточно только удобной интерфейсной форме указать состав исходных модулей и библиотек. Ключи, необходимые компилятору и др. техническим средствам, также задаются в виде интерфейсных форм настройки
Содержит в себе:
Текстовые редакторы для создания текстов исходных программ
Компоновщики, позволяющие объединять несколько объектных модулей
Библиотеки прикладных программ, содержащие в себе наиболее часто используемые функции и подпрограммы в виде готовых объектных модулей
Загрузчики, обеспечивающие подготовку готовой программы к выполнению
Отладчики, выполняющие программу в заданном режиму с целью поиска, обнаружения и локализации ошибок
Ключевые особенности:
Интегрированность среды
Библиотека компонент
Визуальная технология разработки
Технология two-ways-tool
Поддержка работы с базами данных
«горячие клавиши»
X-курсор
Останов с редактированием, пошаговое выполнение, подсветка выполняемой строки
Основные функции редактора текста в рамках иср
Подготовка текста программы (обычные действия по созданию, редактированию, сохранению файла с текстом программы)
Многооконный интерфейс с поддержкой режима «буксировки» фрагментов текста мышкой (drag&drop)
Интеграция с компилятором: визуализация текста с выделением лексем(синтаксическая подсветка элементов языка); дополнение кода, интерактивная подсказка); шаблоны кода (на «горячих клавишах» – часто используемые программные конструкции); всплывающие подсказки об атрибутах идентификаторов, если на них установить курсор, отображение ошибок, обнаруженных на этапе компиляции, в тексте программы
Интеграция с отладчиком: отображение контрольных точек останова при отладке; отображение текущего значения объекта, при наведении курсора на идентификатор