Что это - компилятор, или Как заставить компьютер понять, что вы от него хотите?

Завершающий этап создания программы заключается в переводе алгоритма, написанного на одном из языков программирования (С/С++, Паскаль и др.), на низкоуровневый машинный язык. Это связано с тем, что вычислительным машинам для выполнения какой-либо задачи необходимо задавать команды на понятном им языке, приближенном к бинарному и оперирующем примитивными структурами данных (бит, байт или слово). Процесс перевода проблемно-ориентированных операторов языков высокого уровня в двоичный код называется трансляцией. Существует два метода трансляции – компиляция и интерпретация.

Компилятор - что это такое?

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

Компилятор и интерпретатор – сходство и отличия

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

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

Классификация компиляторов

Классифицируют компиляторы в основном по особенностям, связанным с областями их практического применения.

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

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

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

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

Компилятор компиляторов – транслятор, способный воспринимать формальное описание для языка программирования и самостоятельно генерировать компилятор для любого языка.

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

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

Самокомпилируемый компилятор написан на том же языке, с которого выполняется трансляция.

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

Устройство компилятора

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

Языки программирования и методы трансляции

Несмотря на то, что программу, написанную на любом языке программирования, можно как компилировать, так и интерпретировать, многие высокоуровневые языки имеют предрасположенность к тому или иному методу трансляции. Так, язык С изначально рассчитан на компиляцию, а Java – на интерпретацию написанной программы. Разрабатываются компиляторы языка С довольно легко, благодаря его относительно невысокому уровню и небольшому ряду структурных элементов.

Достоинства и недостатки компиляторов и интерпретаторов. Области применения

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

Комментарии