Поговорим о различиях компиляции и интерпретации, расскажу главные отличие и особенности каждого способа выполнения программ. Не буду долго тянуть, поэтому сразу начнём.
Компиляция
При компиляции из программного кода единожды создаётся отдельный физический файл содержащий в себе машинный код для конкретной платформы и среды (окружения). Т.о. при компиляции программного кода всегда создаётся файл с машинным кодом, который впоследствии уже и запускается. Таким образом на конечной машине выполняется уже откомпилированный код содержащийся в выполняемом файле. Естественно, что бы запустить программу её нужно сначала целиком откомпилировать, поэтому ошибки при компиляции фатальны. Выполнение исполняемого откомпилированного файла с машинным кодом происходит в разы быстрее чем при интерпретации, т.е. превращении программного кода в машинный на лету с последующим выполнением.
Достоинства компиляции
- Высочайшая скорость выполнения готового откомпилированного файла с машинным кодом.
Недостатки компиляции
- Плохая переносимость программ в целом ибо при компиляции программный код преобразуется в машинный для конкретной модели.
+/- компиляции
- Закрытые исходники программы т.к. распространяются откомпилированные файлы с машинным кодом.
Интерпретация
При интерпретации программный код программы каждый раз при запуске (выполнении) программы последовательно читается интерпретатором и превращается в машинный код так для конкретной платформы и среды. Ошибки при интерпретации не фатальны, т.к. программа читается последовательно, читается, на лету интерпретируется в машинный код и тут же выполняется. Из минусов можно отметить низкую скорость работы в сравнении с компиляцией. Интерпретируемый способ переноса программ более удобен т.к. программный код может выполняться на любой платформе при наличии соответствующего интерпретатора.
Достоинства интерпретации
Высочайшая переносимость программного продукта потому, что преобразование в машинный код происходит на месте, на конкретной машине.
Недостатки интерпретации
- Не высокая скорость исполнения ибо код программы на ходу читается и выполняется.
+/- интерпретации
- Открытые исходники
Само собой программа не всегда может распространятся в видео открытых исходных кодов, а например в виде бинарного файла, ведь процесс компиляции и интерпретации обычно проходит следующий путь: исходный код -> бинарник -> машинный код. Поэтому распространяется не всегда open source.
Заключение
Разумеется в этом посте я осветил лишь базовые озы и некоторые вещи описаны весьма однобоко, но всё это ради понятности.