
- •Глава 1. Общие сведения о системах программирования.
- •Глава 2. Основные понятия и определения формальных языков.
- •Глава 3. Регулярные грамматики и языки.
- •Метод проверки регулярности заданного языка.
- •Методика построения конечного автомата:
- •Глава 4. Контекстно-свободные грамматики и языки.
- •Построение мп-автомата.
- •Построение расширенного мп-автомата.
- •Алгоритм построения матрицы предшествования:
Глава 1. Общие сведения о системах программирования.
Параграф 1. Типовая система программирования.
Пункт 1. Определение СП. Виды.
Система программирования представляет собой совокупность программных средств автоматизации разработки программ, их отладки и подготовки к выполнению: трансляторы с их языками программирования, редактор связей, загрузчик, средства отладки, библиотеки трансляторов и вспомогательные программы (утилиты).
СП выполняется под управлением ОС и может иметь с ней общие компоненты, например, загрузчик, библиотеки, утилиты. СП можно разделить на самостоятельные и встроенные по отношению к другим программным комплексам.
Самостоятельные СП являются системами общего назначения. Встроенные СП являются составной частью другого программного комплекса. Такие СП применяются в СУБД и наиболее развитых пакетах прикладных программ.
Пункт 2. Варианты основных компонентов СП.
Трансляторы. Это программы, выполняющие преобразование программы, представленной на одном языке, в эквивалентную ей программу на другом языке.
Варианты трансляторов в зависимости от назначения:
Компилятор. Переводит программу с одного языка на язык более низкого уровня (машинно-ориентированный или, чаще всего, машинный). При переводе на машинно-ориентированный язык он строит программу, подобную программе на языке ассемблера.
Ассемблер. Это компилятор на языке ассемблера.
Интерпретатор. Выполняет программу в машинно-независимой форме посредством подпрограмм, входящих в его состав. Обычно он предварительно переводит программу на некоторый более удобный промежуточный язык. Промежуточная программа не сохраняется.
Инкрементный транслятор. Предназначен специально для повторной трансляции фрагментов программы и дополнений к ней без повторной трансляции всей программы.
Компилятор переднего плана. Переводит программу на промежуточный машинно-независимый язык. Позволяет сохранять промежуточную программу.
Препроцессор. Переводит программу с макрорасширения входного языка транслятора на этот входной язык. Обычно реализуется как префиксная часть некоторых трансляторов.
Макрогенератор. Это препроцессор для ассемблера. Переводит программу с макроязыка на язык ассемблера.
Кросс-компилятор. Транслируя программу на одной машине (платформе), формирует объектный код для другой машины (платформы).
Компилятор компиляторов. Переводит формальное описание языка программирования в транслятор для этого языка.
Детранслятор. Восстанавливает программу на ЯП по ее эквиваленту на языке машины.
Дисассемблер. Это детранслятор для языка ассемблера.
Компоновщики. Это общее название системных программ, выполняющих подготовку объектных и загрузочных модулей к их выполнению.
Типовые функции компоновщиков, которые их различают:
перемещение – настройка сегментов на размещение их в новом адресном пространстве.
связывание – объединение двух или более модулей в единую программу.
перекрытие – настройка модулей программы на выполнение с перекрытиями групп сегментов в основной памяти.
загрузка – размещение программы в основной памяти для выполнения.
Параграф 2. Классификация языков программирования.
Основные характеристики ЯП: мощность, уровень и целостность.
Мощность. Характеризуется разнообразием задач, алгоритмы которых можно записать, используя этот язык. Очевидно, самым мощным ЯП является язык процессора, так как любую задачу, сформулированную на каком-либо языке программирования, можно записать и на языке компьютера.
Уровень языка. Определяется сложностью решения задач с использованием этого языка. Чем проще записывается решение задач, чем меньше объем полученных исходных программ, тем выше уровень языка.
Целостность. Обусловливается свойствами совокупности понятий, служащих для описания этого языка, и включает 3 взаимосвязанных аспекта:
А) экономия понятий предполагает достижение максимальной мощности языка с помощью минимального числа понятий.
Б) независимость понятий означает, что между ними не должно быть взаимного влияния: если какое-либо понятие используется в разных контекстах, то правила его использования должны быть одни и те же.
В) единообразие понятий требует согласованного единого подхода к описанию и использованию всех понятий.