Слайды и текст доклада
Pic.1
Тема 1. 3 Отладка и тестирование программного продукта на уровне модулей Тема 1. 3. 2 Трансляторы План: Основные принципы построения трансляторов. Генерация и оптимизация кода. Современные системы …
Pic.2
1 Основные принципы построения трансляторов Транслятор — это программа, которая переводит входную программу на исходном (входном) языке в эквивалентную ей выходную программу на результирующем …
Pic.3
Во-вторых, исходными данными для работы транслятора служит текст входной программы — некоторая последовательность предложений входного языка программирования. Обычно это символьный файл, но этот файл …
Pic.4
Компилятор — это транслятор, который осуществляет перевод исходной программы в эквивалентную ей объектную программу на языке машинных команд или на языке ассемблера. Интерпретатор — это программа, …
Pic.5
Этапы трансляции. Общая схема работы транслятора
Pic.6
Компилятор выполняет две основные функции: 1) является распознавателем для языка исходной программы. Генератором цепочек входного языка выступает пользователь — автор входной программы. 2) компилятор …
Pic.7
Синтаксический разбор — это основная часть компилятора на этапе анализа. Она выполняет выделение синтаксических конструкций в тексте исходной программы, обработанном лексическим анализатором. На этой …
Pic.8
Генерация кода — это фаза, непосредственно связанная с порождением команд, составляющих предложения выходного языка и в целом текст результирующей программы. Это основная фаза на этапе синтеза …
Pic.9
Проход — это процесс последовательного чтения компилятором данных из внешней памяти, их обработки и помещения результата работы во внешнюю память. Результатом промежуточных проходов является …
Pic.10
Трансляторы с языка ассемблера («ассемблеры») Язык ассемблера — это язык низкого уровня. Структура и взаимосвязь цепочек этого языка близки к машинным командам целевой вычислительной системы, где …
Pic.11
Компиляторы с языка ассемблера реализуются чаще всего по двухпроходной схеме. На первом проходе компилятор выполняет разбор исходной программы, ее преобразование в машинные коды и одновременно …
Pic.12
Макроопределения и макрокоманды Макрокоманда представляет собой текстовую подстановку, в ходе выполнения которой каждый идентификатор определенного вида заменяется на цепочку символов из некоторого …
Pic.13
Для того чтобы указать, какие идентификаторы на какие строки необходимо заменять, служат макроопределения. Макроопределения присутствуют непосредственно в тексте исходной программы. Они выделяются …
Pic.14
2 Генерация и оптимизация кода С целью повысить эффективность компиляторов разбор цепочек входного языка выполняется в два этапа: первый — синтаксический разбор на основе распознавателя одного из …
Pic.15
Примерами таких конструкциями являются блоки описания констант и идентификаторов или операторы, где тот или иной идентификатор встречается впервые. Входными данными для семантического анализа служат: …
Pic.16
Семантический анализатор выполняет следующие основные действия: проверка соблюдения во входной программе семантических соглашений входного языка; дополнение внутреннего представления программы в …
Pic.17
Проверка соблюдения во входной программе семантических соглашений входного языка заключается в сопоставлении входных цепочек программы с требованиями семантики входного языка программирования. Каждый …
Pic.18
Примерами таких соглашений являются следующие требования: каждая метка, на которую есть ссылка, должна один раз присутствовать в программе; каждый идентификатор должен быть описан один раз, и ни один …
Pic.19
при вызове процедур и функций число и типы фактических параметров должны быть согласованы с числом и типами формальных параметров. Преобразование типов — это только один вариант операций, неявно …
Pic.20
Проверка элементарных смысловых норм языков программирования, напрямую не связанных с входным языком, — это сервисная функция, которую предоставляют большинство современных компиляторов. Эта функция …
Pic.21
каждая переменная должна быть определена до ее первого использования при любом ходе выполнения программы (до использования переменной должно быть присвоено значение); результат функции должен быть …
Pic.22
Идентификация лексических единиц языков программирования Идентификация переменных, типов, процедур, функций и других лексических единиц языков программирования — это установление однозначного …
Pic.23
Распределение памяти. Принципы распределения памяти Распределение памяти — это процесс, который ставит в соответствие лексическим единицам исходной программы адрес, размер и атрибуты области памяти, …
Pic.24
Исходными данными для процесса распределения памяти в компиляторе служат таблица идентификаторов. Процесс распределения памяти в современных компиляторах работает с относительными, а не абсолютными …
Pic.25
Память можно разделить на локальную и глобальную память, динамическую и статическую память. Глобальная область памяти — это область памяти, которая выделяется один раз при инициализации …
Pic.26
Статическая область памяти — это область памяти, размер которой известен на этапе компиляции. Динамическая область памяти — это область памяти, размер которой на этапе компиляции программы не …
Pic.27
Дисплей памяти процедуры (функции). Стековая организация дисплея памяти Дисплей памяти процедуры (функции) — это область данных, доступных для обработки в этой процедуре (функции). Дисплей памяти …
Pic.28
Стековая организация дисплея памяти процедуры позволяет организовать рекурсию вызовов и имеет все преимущества перед динамической схемой, но недостаток — память, отводимая под стек параметров, …
Pic.29
Память для типов данных (RTTI-информация) Результирующая программа может обрабатывать не только переменные, константы и другие структуры данных, но и информацию о типах данных, описанных в исходной …
Pic.30
Каждому типу данных в RTTI-таблице соответствует своя область данных, в которой хранится вся необходимая информация об этом типе данных, его взаимосвязи с другими типами данных в общей иерархии …
Pic.31
Генерация кода. Методы генерации кода Генерация объектного кода — это перевод компилятором внутреннего представления исходной программы в цепочку символов выходного языка. Внутреннее представление …
Pic.32
В качестве анализируемых законченных синтаксических конструкций выступают операторы, блоки операторов, описания процедур и функций. Смысл (семантику) каждой такой синтаксической конструкции входного …
Pic.33
Для семантически схожих конструкций различных входных языков программирования может порождаться типовой результирующий код. Для семантически схожих конструкций различных входных языков …
Pic.34
Общие принципы оптимизации кода Общие принципы оптимизации кода Эффективность результирующей программы важна для ее разработчика, т. к. современные компиляторы выполняют еще один этап компиляции — …
Pic.35
Компилятор может вообще не выполнять оптимизацию, и при этом результирующая программа будет правильной, а сам компилятор будет полностью выполнять свои функции. Компилятор может вообще не выполнять …
Pic.36
В качестве показателей эффективности результирующей программы можно использовать два критерия: В качестве показателей эффективности результирующей программы можно использовать два критерия: объем …
Pic.37
Принципиально различаются два основных вида оптимизирующих преобразований: Принципиально различаются два основных вида оптимизирующих преобразований: преобразования исходной программы (в форме ее …
Pic.38
Оптимизация может выполняться для следующих типовых синтаксических конструкций: Оптимизация может выполняться для следующих типовых синтаксических конструкций: линейных участков программы; логических …
Pic.39
Существуют методы, позволяющие снизить затраты кода и времени выполнения на передачу параметров в процедуры и функции и повысить в результате эффективность результирующей программы: Существуют …
Pic.40
Некоторые языки программирования (C++) позволяют разработчику исходной программы явно указать, какие параметры или локальные переменные процедуры он желал бы разместить в регистрах процессора. Тогда …
Pic.41
3 Современные системы программирования Понятие и структура системы программирования Компилятор является составной частью системного ПО. Компиляторы — это средства, служащие для создания ПО на этапах …
Pic.42
В задачу разработчика программы входило обеспечить взаимосвязь всех используемых технических средств: подать входные данные в виде текста исходной программы на вход компилятора; получить от …
Pic.43
Все эти действия выполнялись с помощью последовательности команд, инициировавших запуск соответствующих программных модулей с передачей им всех необходимых параметров. Пользователи могли выполнять …
Pic.44
Следующим шагом в развитии средств разработки стало появление так называемой «интегрированной среды разработки». Интегрированная среда объединила в себе возможности текстовых редакторов исходных …
Pic.45
В состав ПО были сначала включены соответствующие библиотеки, обеспечивающие поддержку развитого графического интерфейса пользователя и взаимодействие с функциями API (прикладной программный …
Pic.46
Примеры ресурсов: тексты сообщений, выдаваемых программой; цветовая гамма элементов интерфейса; надписи на таких элементах, как кнопки и заголовки окон и т. п. Примеры ресурсов: тексты сообщений, …
Pic.47
Структура современной системы программирования Структура современной системы программирования Системой программирования будем называть весь комплекс программных средств, предназначенных для …
Pic.48
В качестве основных тенденций в развитии современных систем программирования следует указать внедрение в них средств разработки на основе так называемых «языков четвертого поколения» — 4GL (four …
Pic.49
Принципы функционирования систем программирования Принципы функционирования систем программирования Функции текстовых редакторов в системах программирования Текстовый редактор в системе …
Pic.50
Компилятор как составная часть системы программирования Компилятор как составная часть системы программирования Компиляторы являются основными модулями в составе любой системы программирования (СП). …
Pic.51
Компоновщик. Назначение и функции компоновщика Компоновщик. Назначение и функции компоновщика Компоновщик (редактор связей) предназначен для связывания между собой объектных файлов, порождаемых …
Pic.52
Загрузчики и отладчики. Функции загрузчика Загрузчики и отладчики. Функции загрузчика Компилятор и компоновщик не могут знать точно, в какой реальной области памяти компьютера будет располагаться …
Pic.53
Отладчик — это программный модуль, который позволяет выполнить основные задачи, связанные с мониторингом процесса выполнения результирующей прикладной программы. Этот процесс называется отладкой и …
Pic.54
Библиотеки подпрограмм как составная часть систем программирования Библиотеки подпрограмм как составная часть систем программирования Библиотеки подпрограмм составляют существенную часть систем …
Pic.55
Динамические библиотеки в отличие от традиционных (статических) библиотек подключаются к программе не в момент ее компоновки, а непосредственно в ходе выполнения, как только программа затребовала ту …
Pic.56
Разработка программ в архитектуре «клиент—сервер» Разработка программ в архитектуре «клиент—сервер» Среди всего множества компонентов прикладной программы можно было выделить две логически цельные …
Pic.57
В первую (серверную) составляющую такого приложения относят все методы, связанные с доступом к данным. Чаще всего их реализует сервер БД (сервер данных) из соответствующей СУБД (системы управления …
Pic.58
Разработка программ в трехуровневой архитектуре. Серверы приложений Разработка программ в трехуровневой архитектуре. Серверы приложений Трехуровневая архитектура разработки приложений явилась …
Pic.59
Разделение клиентской части на две составляющих потребовало организации взаимодействия между этими составляющими. Разделение клиентской части на две составляющих потребовало организации …
Pic.60
Примеры современных систем программирования 1 Системы программирования компании Borland/lnprise Turbo Pascal. Pascal был предложен Н. Виртом в конце 70-х годов как хорошо структурированный учебный …
Pic.61
В Borland Delphi появились принципиальные изменения: В Borland Delphi появились принципиальные изменения: новый язык программирования — Object Pascal; компонентная модель среды разработки, …
Pic.62
2 Системы программирования фирмы Microsoft 2 Системы программирования фирмы Microsoft Microsoft Visual Basic. Система программирования Microsoft Visual Basic является одним из эффективных средств для …
Pic.63
Microsoft Visual C++. Эта система программирования в настоящее время построена в виде интегрированной среды разработки, включающей в себя все необходимые средства для разработки результирующих …
Pic.64
Концепция . NET - это не система программирования, а новейшая технология, предложенная фирмой Microsoft с целью унификации процесса разработки ПО с помощью различных систем программирования. …
Pic.65
3 Системы программирования под ОС Linux и UNIX 3 Системы программирования под ОС Linux и UNIX Системы программирования в составе ОС типа UNIX. Язык программирования Си появился как базовый язык …
Pic.66
Системы программирования проекта GNU Системы программирования проекта GNU Проект GNU был начат в 1984 году. Идея проекта GNU заключается в свободном распространении всех программ. Программы …
Pic.67
Проект Borland Kylix Проект Borland Kylix В рамках проекта Borland Kylix компания Borland создала и распространяет на рынке программного обеспечения одноименную СП, основанную на языке …
Pic.68
Библиотека построена в виде компонентов на основе иерархии классов языка Object Pascal. Библиотека построена в виде компонентов на основе иерархии классов языка Object Pascal. В рамках этого проекта …
Pic.69
3 Разработка программного обеспечения для сети Интернет 3 Разработка программного обеспечения для сети Интернет При осуществлении взаимодействия по сети двух компьютеров один из них выступает в …
Pic.70
Язык HTML. Программирование статических Web-страниц Язык HTML. Программирование статических Web-страниц Суть его достаточно проста: Интернет-сервер создает текст на языке HTML и передает его в виде …
Pic.71
Таким образом, всякий раз при новом обращении клиент получает новый текст HTML. Таким образом, всякий раз при новом обращении клиент получает новый текст HTML. CGI (общедоступный шлюзовой интерфейс) …
Pic.72
Кроме интерфейса CGI существуют и другие варианты интерфейсов, позволяющие динамически создавать HTML-код путем запуска на сервере приложений в ответ на действия клиента. Например, интерфейс ISAPI …
Pic.73
Текст на интерпретируемых языках, которые поддерживаются такими Web-технологиями, как ASP или РНР, представляет собой часть текста обычных HTML-страниц со встроенными в них сценариями (script). Эти …
Pic.74
Все эти языки сценариев обладают присущими им характерными особенностями. Все эти языки сценариев обладают присущими им характерными особенностями. Во-первых, они имеют мощные встроенные функции и …
Pic.75
Языки программирования Java и Java Script Языки программирования Java и Java Script Основная идея, отличающая язык Java от многих других ЯП, заключается в том, что Java не является полностью …
Pic.76
Одной из отличительных особенностей данного языка является использование специального механизма распределения памяти (менеджера памяти), который должен сам организовывать своевременное выделение …
Pic.77
JBuilder. Необходимость иметь в составе архитектуры вычислительной системы клиентского компьютера виртуальную Java-машину, а также довольно высокие требования к производительности компьютеров на …
Pic.78
Вопросы для самопроверки Что такое трансляция, компиляция, транслятор, компилятор? Из каких процессов состоит компиляция? Какую роль выполняет лексический анализ в процессе компиляции? Как могут быть …
Pic.79
Вопросы для самопроверки 7. Чем различаются таблица лексем и таблица идентификаторов? 8. Какие задачи в компиляторе решает семантический анализ? 9. Какие специфические функции выполняет текстовый …
Скачать презентацию
Если вам понравился сайт и размещенные на нем материалы, пожалуйста, не забывайте поделиться этой страничкой в социальных сетях и с друзьями! Спасибо!