Интерпретатор - транслятор языков программирования, который работает на отличающемся от компиляторов принципе и не производит исполняемого машинного кода. Он берёт исходный текст программы на каком-либо языке программирования и выполняет его сам строка за строкой. При этом процесс выглядит так: интерпретатор извлекает из файла с исходным текстом одну команду, распознаёт её и вызывает те или иные функции операционной системы.
Рис. 1 - Интерпретатор в языке программирования Basic
Обычно интерпретатор выполняет простой циклический алгоритм. Во время выполнения каждого цикла интерпретатор получает адрес следующей команды из регистра программных адресов (и увеличивает значение этого регистра, присваивая ему адрес следующей команды), выбирает указанную команду из памяти, декодирует её, разбивая на код операции и набор указателей операндов. Простейшие операции могут изменять данные в памяти или в регистрах, обращаться к устройствам ввода-вывода и модифицировать последовательность выполнения операций путём изменения содержимого регистра программных адресов. После выполнения указанной операции интерпретатор просто возвращается к началу цикла и снова повторяет все описанные действия. Скорость выполнения программ в режиме интерпретации намного ниже, чем у компилированного кода, за счёт того, что работа программы идёт не напрямую с центральным процессором на языке машинных команд, а через программу-посредник, которая и тратит большое количество времени на распознавание исходного текста. Как хороший пример классического интерпретатора можно рассматривать QBasic, входящий в состав DOS.