Компиляция и интерпретация

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

Компиляция

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

Достоинства компиляции

  • Высочайшая скорость выполнения готового откомпилированного файла с машинным кодом.

Недостатки компиляции

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

+/- компиляции

  • Закрытые исходники программы т.к. распространяются откомпилированные файлы с машинным кодом.

Интерпретация

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

Достоинства интерпретации

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

Недостатки интерпретации

  • Не высокая скорость исполнения ибо код программы на ходу читается и выполняется.

+/- интерпретации

  • Открытые исходники

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

Заключение

Разумеется в этом посте я осветил лишь базовые озы и некоторые вещи описаны весьма однобоко, но всё это ради понятности.