Для чего предназначены программы компиляторы

Компилятор — это системная программа, которая выполняет преобразование программных приложений, написанных на одном из алгоритмических языков, в программу на машинном языке или близком к нему.

Введение

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

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

Компиляторы для языков программирования — Евгений Зуев

Китайский с нуля для начинающих
Увлекаем Китаем, китайским языком и культурой

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

История создания и развития компиляторов

Создание первых программ компиляции следует отнести к началу пятидесятых годов прошлого века. Главной задачей реализации первых компиляторов в то время было решение проблемы преобразования алгебраических выражений в машинные коды.

А фактическим годом рождения теории компиляции может считаться 1957-ой год, когда была реализована первая программа компиляции языка Фортран, сформированная Бэкусом и выдававшая довольно эффективные объектные (машинные) коды. Этот компилятор был предназначен для платформ IBM 704, IBM 360 и DEC PDP-11. В восьмидесятом году прошлого века вышел новый вариант компилятора, предназначенный для IBM 360 и IBM PC, который поддерживал стандарт FORTRAN 77. Годом позже образовалась компания Watcom, представившая в 1988-ом году программу компиляции Си. Она мгновенно стала чрезвычайно популярной среди специалистов по программированию, поскольку могла генерировать наиболее быстрые коды в сравнении с другими компиляторами тех времён.

«Компиляторы: история создания и развития»
Готовые курсовые работы и рефераты
Решение учебных вопросов в 2 клика
Помощь в написании учебной работы

Какой компилятор выбрать для C++? | Code blocks или Visual studio

Читайте также:
Программа windjview для чего

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

Замечание 1

Архитектурная организация, то есть совокупность программного и аппаратного обеспечения, для которой выполняется компиляция, именуется целевой машиной.

Отдельные программы компиляции, к примеру,Java, способны переводить программу не в машинные коды, а в программу на определённом специализированном языке низкого уровня. Данный язык, или по-другому байт-код, тоже может считаться языком машинных кодов, так как он должен интерпретироваться виртуальной машиной. К примеру, для языка Java языком виртуальной машины является JVM, или иначе байт-код Java.

Для всех целевых машин, к примеру, IBM, Apple и так далее, и всех операционных систем или их семейств, используемых на целевой машине, необходимо написать свою программу компиляции. Есть ещё так называемые программы кросс-компиляции, которые позволяют на одной машине и одной операционной системе формировать коды, предназначенные для исполнения на другой целевой машине или другой операционной системе.

Помимо этого, программы компиляции можно оптимизировать для разных типов процессоров из единого семейства. К примеру, коды, сформированные компилятором для процессоров семействаi686, могут применять специфические для данных процессоров инструкции MMX, SSE, SSE2. Имеются также программы, решающие обратную задачу, а именно, они переводят программы с языка низкого уровня на язык высокого уровня. Такая процедура именуется декомпиляцией, а выполняющие её программы называются декомпиляторами.

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

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

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

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

Источник: spravochnick.ru

Компилятор. Назначение и состав.

Программы, которые выполняются на ЭВМ с использованием компиляторов обычно проходит следующие этапы обработки:

Редактор текста => Исходный текст программы => Компиляторы => Объектный код программы => Обработка редактора связей ( Исполняемая программа => Загрузчик => Выполнение.

Редактор текста – программа, предназначенная для подготовки файлов, содержащих тексты программы (любая программа, не добавляющая своих собственных команд). Например, Блокнот.

Читайте также:
Что за программа которая находит музыку

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

Результатом использования редактора текстов является текстовый файл, содержащий текст программы. Этот текст называется исходным.

Для выполнения программы на ЭВМ ее исходный код должен быть обработан компилятором.

Компилятор осуществляет перевод программы на машинный код и проверяет синтаксис.

Если обнаружены синтаксические ошибки, то выдаются диагностические сообщения и процесс трансляции прекращается.

Если ошибки не обнаружены, то формируется объектный код программы, записываемый на магнитный диск.

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

Эти ссылки называются внешними. Для разрешения этих ссылок объектный код обрабатывается редактором внешних связей или компоновщиком. Эта программа подключает к исходному объектному коду, коды необходимые для выполнения модуля и тем самым разрешает внешние ссылки.

Для этого он использует имеющиеся библиотеки и объектные модули других ранее транслированных частей программы. В результате создается исполняемая программа готовая к выполнению. Она записывается в файл называемый исполняемым файлом программы. Этот файл с помощью программы загрузчика может быть помещена в память ЭВМ и запустится на выполнение.

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

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

В систему программирования языков компилирующего типа так же входит программа отладчик (Debugger)

Отладчик – программа, предназначенная для упрощения поиска в программе семантических ошибок.

Все ошибки делятся на:

Обычно обнаруживаются компилятором или интерпретатором и связаны с синтаксическими ошибками в исходном тексте.

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

Поиск таких ошибок является самой сложной и трудоемкой задачей. Для упрощения используется отладчик.

Обычно отладчик поддерживает следующие функции:

* Трассировка программы – пошаговое выполнение программы позволяющая программисту точно отследить команды в порядке их выполнения.

* Задавать контрольные точки остановок. Позволяет приостановить программу при достижении заданного места в ее исходном тексте. Программист может посмотреть текущее значение переменных и продолжить выполнение программы.

* Осуществлять проверку и измерение данных. Позволяет так же приостановить программу, просмотреть значения переменных и, при необходимости, изменить их значение.

Библиотекарь.

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

Читайте также:
Установка программы Mac OS mojave поврежден что это

Используя библиотек позволяет автоматизировать и упростить решение задач.

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

Библиотекарь обычно позволяет:

— включить новый модуль или удалить существующий.

Профилировщик.

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

При использовании АЯ интерпретирующего типа порядок обработки программы выглядит так:

Программа => Интерпретатор => Результат.

Для выполнения программы записанной на ЯП программирования интерпретирующего типа на компьютере должен быть установлен интерпретатор с этого языка. Интерпретатор – специальная программа которая обеспечивает выполнение на ЭВМ исходных текстов программы или вводимых операторов.

Использование интерпретатора имеет плюсы и минусы.

— программы выполняются намного медленнее чем исполняемые программы

+ отсутствие необходимости в системе программирования

— увеличение скорости отладки программы, т.к. человек и машина имеют дело с одним и тем же текстом программы

Источник: poisk-ru.ru

Что такое компилятор

Компилятор — это программа, преобразующая команды, созданные на языке программирования, в машинные кодов (понятных компьютерам). Или собирает разные модули в общий файл для исполнения алгоритмов последовательно.

Для какой цели нужен

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

Разница между компилятором и интерпретатором

Компилятор, интерпретатор и байт-код — разные способы перевода команд в набор нулей и единиц. Принцип работы компилятора описан выше.

Интерпретатор выполняют код построчно (без сборки модулей в файл). Языки программирования, основанные на работе интерпретаторов, называют интерпретируемыми. Байт-код — связующее звено между этими двумя видами. Его используют в языках, запускаемых в виртуальной машине, например, в Java.

Какие языки используют компиляторы

Языки могут быть компилируемыми или транслируемыми в байт-код. К примерам компилируемых относятся Pascal, Swift, C и C ++, Haskell, Rust, Lisp и Prolog, а транслируемые — C#, Java, Scala и семейство .NET.

Почему не всегда в одном языке один компилятор

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

Elbrus Bootcamp

Вам может также понравиться.

Что такое браузерные события

Что такое браузерные события

Что такое алгоритмы в программировании

26 мая 2023 г.

Что такое алгоритмы в программировании

Что такое frontend и backend разработка

15 мая 2023 г.

Источник: elbrusboot.camp

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru