Компиляция и интерпретация — это переформирование программы, которая выполнена на каком-либо программном языке, в машинные исполняемые коды, и проработка программы по одной команде без предварительного компилирования.
Главной характеристикой, например, языка программирования РНР, считается его интерпретируемость. Вместе с тем, программные языки, аналогичные Си, проектировались специально как компилируемые. Здесь следует заметить, что фактически сами языки программирования не определяют компиляция им требуется или интерпретация. Практически все программные языки могут подвергаться интерпретации или компиляции посредством соответствующих программ.
Компиляция программы
В любом языке программирования есть некоторые рабочие процедуры формирования кода. Программист пишет программу, запускает её, ищет ошибки и устраняет их, то есть выполняет отладку программы, исправляя и добавляя некоторые коды. Это и есть исполняемая программная часть. Цель программиста, составить так программу, чтобы все её операции успешно исполнялись компьютером.
Компьютер выполняет обработку команд исполняемой программы при помощи процессора, поочерёдно выполняющем процедуры, представленные в двоичных кодах. То есть необходимо сначала преобразовать, к примеру, выражение «Х=5», в кодовые последовательности, понятные процессору. Эту задачу выполняет процесс компиляции при помощи специальных программных приложений, именуемых компиляторами. Компилятор получает, написанную программистом на выбранном им языке, программу, выполняет её подробный анализ и разборку всех участков программы. И затем уже, на основании анализа, формирует программу в машинных кодах процессора.
Часто такую сформированную программу именуют «объектный код».
На каком-то шаге компиляции в работу подключается компоновщик, который принимает уже преобразованные ранее в машинные коды участки программы, и собирает их в единый файл, подлежащий в дальнейшем исполнению, то есть это и будет исполняемый файл. Когда программист запускает этот файл на компьютере, процессор выбирает из него начальную инструкцию и теперь просто её исполняет без всяких добавочных преобразований. Это и есть основное свойство операции компиляции, то есть её итогом является выдача исполняемого файла, который не требует больше никаких дополнительных действий и преобразований. Процессор понимает его коды, принимает их, и поочерёдно исполняет заложенные в них инструкции.
Первые программы компиляции писались прямо в машинных кодах или на языке ассемблера. Но цель была именно такая, преобразовать прикладную программу в набор исполняемых машинных кодов, понятных конкретному процессору. Отдельные программные языки изначально проектировались под дальнейшую процедуру компиляции. Язык Си, к примеру, был спроектирован для предоставления возможности программисту легко осуществлять задуманные операции. Но при этом проектировщики языка Си предусмотрели облегчение перевода программного приложения в машинные коды. Следует заметить, что далеко не все программные языки закладывают такой подход в свою базу. К примеру, Python подлежит только интерпретации, а язык Java был предназначен для использования в среде интерпретации.
Интерпретация программы
Альтернативным компиляции, считается метод интерпретации. Главное отличие между компиляцией и интерпретацией заложено в принципе их работы. При компиляции загружается всё программное приложение, и оно проходит процедуру преобразования в машинные коды, понятные процессору. Программа интерпретации является исполняемым файлом, который последовательно считывает символику команд программного приложения и немедленно осуществляет исполнение, зашифрованных в них инструкций. То есть, фактически, интерпретатор исполняет программу, разработанную программистом, как участок своего исполняемого файла. Машинные коды не пересылаются процессору, поскольку программа интерпретации сама уже написана в машинных кодах и построена так, что её возможно вызывать в нужное время. Если компилятор одноразово преобразует программу и на этом его функции заканчиваются, то интерпретатор работает при каждом запуске программного приложения.