Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 2.

Презентация:



Advertisements
Похожие презентации
Язык высокого уровня компилятор Программа компиляторов Сделал:Студент группы:Ис-2о(очная)Воротов Валентин.
Advertisements

Введение в теорию компиляции Основные принципы построения трансляторов.
ВЫПОЛНЕНИЕ АЛГОРИТМОВ КОМПЬЮТЕРОМ. Алгоритм, записанный на «понятном» компьютеру языке программирования, называется программой. Программа данные, предназначенные.
ПРЕЗЕНТАЦИЯ НА ТЕМУ: ПРЕЗЕНТАЦИЯ НА ТЕМУ: ВИДЫ ТРАНСЛЯЦИИ Составил: Ревнивцев М.В Преподаватель: Кленина В.И.
М.Ю. Харламов, ВНУ им. В.Даля, Семантический анализатор Семантический анализатор выполняет следующие основные действия: проверку соблюдения во входной.
Что такое программирование? Совокупность процессов, связанных с разработкой программ и их реализацией. В широком смысле к указанным процессам относят все.
АЛГОРИТМ (формальное определение) Всякий алгоритм может быть реализован соответствующей машиной Тьюринга Это основная гипотеза теории алгоритмов.
Цель урока: Дать основные понятия о языках программирования. План : 1. Основные сведения о языках программирования. 2. Основные средства языков. Алфавит.
Язык программирования Паскаль 1 часть. Система программирования – совокупность программ для создания других программ. Среда программирования – программная.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 7.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 3.
Этапы решения задач на компьютере 1. Постановка задачи. 2. Построение математической модели. 3. Составление алгоритма. 4. Запись алгоритма на языке программирования(кодирование)
1 Тема 1.7. Алгоритмизация и программирование Информатика.
«Все наше достоинство – в способности мыслить» Блез Паскаль.
Лекция 2. Концепция императивного языка программирования.
М.Ю. Харламов, ВНУ им. В.Даля, Транслятор Транслятор - это программа, которая переводит программу на исходном (входном) языке в эквивалентную ей.
ЛАБОРАТОРНАЯ РАБОТА 1 ПРОЕКТИРОВАНИЕ И РЕАЛИЗАЦИЯ ТАБЛИЦ, ИСПОЛЬЗУЕМЫХ В ТРАНСЛЯТОРЕ Рейн Т. С.
Основные понятия программирования. АЛГОРИТМЫ + ДАННЫЕ = ПРОГРАММЫ Н. Вирт.
Лекция 7 Управление памятью Сегментная, страничная и сегментно- страничная организация памяти.
Уильям (Билл) Гейтс. Информатика Hard Ware (технические средства) Soft Ware (программные средства) Brain Ware (алгоритмические средства) MS Windows MS.
Транксрипт:

Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 2

Содержание Парадигмы программирования. Металингвистические формулы Бэкуса – Наура. Металингвистические формулы Бэкуса – Наура. Синтаксическая диаграмма Вирта.

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

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

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

Директивное программирование (directive programming) C и Pascal разработчик программы использует процессорно- ориентированная модель, то есть пытается создать код, должным образом воздействующий на данные. Активным началом при этом подходе считается программа (код), которая должна выполнить все необходимые для достижения нужного результата действия над пассивными данными.

объектно-ориентированный (object oriented) подход C++ и Java. первичными считаются объекты (данные), которые могут активно взаимодействовать друг с другом с помощью механизма передачи сообщений (называемого также и механизмом вызова методов). Функция программиста - он должен придумать и реализовать такие объекты, взаимодействие которых после старта программы приведет к достижению необходимого конечного результата.

Функциональное и логическое программирование Lisp, Haskell и Prolog. Эта парадигма базируется на принципиально иной трактовке понятия программы. Здесь главным является точная формулировка задачи, а выбор и применение необходимого для ее алгоритма решения -- проблема исполняющей системы, но не программиста.

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

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

достоинства ЯПВУ : алфавит языка значительно шире машинного, что делает его гораздо более выразительным и существенно повышает наглядность и понятность текста; набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса;

достоинства ЯПВУ : конструкции команд (операторов) отражают содержательные виды обработки данных и задаются в удобном для человека виде; используется аппарат переменных и действия с ними; поддерживается широкий набор типов данных.

МЕТАЯЗЫКИ ОПИСАНИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ металингвистические формулы Бэкуса - Наура (язык БНФ) (Предложены Джоном Бэкусом в конце 50-х годов для описания синтаксиса языка ALGOL) синтаксические диаграммы Вирта.

металингвистические формулы Бэкуса - Наура Для каждого понятия языка существует единственная метаформула (нормальная форма). символ ::= имеет значение «по определению есть" символ | имеет значение "или" пара символов ограничивает имя синтаксической единицы

металингвистические формулы Бэкуса – Наура (примеры) ::=А|В ::= | + | - А; В; А+А; А+В; В+А; В+В; А-А; А-В: В-А; В-В ::= 0|1 ::= |

металингвистические формулы Бэкуса - Наура (примеры) ::= 0|1|2|3|4|5|6|7|8|9 ::= цифра | цифра

Синтаксическая диаграмма Вирта является графическим представлением значения метапеременной метаязыка. Диаграмма состоит из основных символов или понятий языка.

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

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

Языки, формирующие окончательный выполнимый код, называются компилируемыми языками. К ним относятся языки С, C++, FORTRAN, Pascal. Языки, реализующие интерпретируемый код, называются интерпретируемыми языками. К таким языкам относятся язык Java, LISP, Perl, Prolog.

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

Объектный код, создаваемый компилятором, представляет собой область данных и область машинных команд, имеющих адреса, которые в дальнейшем "согласуются" редактором связи (иногда называемым загрузчиком). Редактор связи размещает в едином адресном пространстве все по отдельности откомпилированные объектные модули и статически подключаемые библиотеки.

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

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

Фаза анализа программы лексический анализ; синтаксический анализ; семантический анализ.

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

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

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

На фазе синтеза программы генерация кода; редактирование связей процесс генерации кода является неотъемлемой частью фазы синтеза программы, а необходимость выполнения редактора связей зависит от конкретного языка программирования.

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