Если перейти сразу к сути, то интерпретаторы и компиляторы - такие программы, которые переводят программы, написанные на языках программирования в понятный для машины код, то есть двоичный.
Но раз они оба выполняют одну и ту же функцию, то зачем они существуют вдвоём? С этим мы сейчас как раз и разберемся.
Компилятор
Компилятор - программа, которая переводит программу из одного языка в другой, путём взятия программы целиком на обработку. Нужна именно полная программа, так как компьютер понимает только двоичный код.
Главная задача компилятора - преобразовать программу в машинный код, который в дальнейшем будет распознаваться компьютером.
У такого вида программы есть ряд преимуществ и недостатков.
Плюсы:
- Программный код переведён в машинный и требуется меньше времени на исполнение.
- Компилятор проверяет написанный код на наличие ошибок в процессе компиляции.
- Объектные программы пользователю сложнее изменить, чем исходный код.
Минусы:
- Так как переводится вся программа сразу, то потребляется достаточно много оперативной памяти.
- Исходный код должен быть всегда полностью верным для выходного исполняемого файла
- В случае с компилятором невозможно поменять программу, не вернувшись к исходному коду.
Интерпретатор
Интерпретатор - программа, которая преобразует каждый програмный оператор в машинный код. Что-то вроде программы, которая идёт по списку инструкции без предварительной компиляции.
Плюсы:
- Занимает минимальное количество памяти, так как обрабатывает по 1 инструкции за раз.
- Интерпретатор сильно облегчает работу с исходным кодом
Минусы:
- Каждый раз в процессе выполнения программы тратится время на интерпретацию, что может сказаться на времени исполнения.
Если немного порассуждать и сделать выводы, то можно понять, что компилятор больше годится под крупные проекты, где тебе придётся много тестировать. Чтобы не затягивать с временем запуска, достаточно один раз скомпилировать, чтобы оно работало в дальнейшем. С интерпретатором же другая история. Он больше подходит под небольшие программы, где не слишком сильно будет заметно время интерпретации при каждом запуске программы.
К сожалению, или к счастью, вам не нужно будет выбирать конкретный вид обработки программы, за вас это сделает выбор вашего языка, так как каждый язык тесно связан со своим компилятором или интерпретатором. В теории, любой язык может обрабатываться обеими программами, но я такого не видел.