Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Компиляторы: история создания и развития

Определение 1

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

Введение

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

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

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

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

«Компиляторы: история создания и развития» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

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

Замечание 1

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

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

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

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

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

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

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

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

Дата написания статьи: 10.12.2020
Получи помощь с рефератом от ИИ-шки
ИИ ответит за 2 минуты
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot