Module (24%)
Section (43%)

Что именно делает интерпретатор?

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

Примечание. Это должен быть чистый текст , без каких-либо украшений, таких как разные шрифты, цвета, встроенные изображения или другие материалы. Теперь вам нужно вызвать интерпретатор и позволить ему прочитать ваш исходный файл.

Интерпретатор читает исходный код так, как принято в западной культуре: сверху вниз и слева направо. Есть некоторые исключения - они будут рассмотрены позже в курсе.

Прежде всего, интерпретатор проверяет правильность всех последующих строк (используя четыре аспекта, рассмотренные ранее).

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

Интерпретатор сообщит вам, где находится ошибка и чем она вызвана. Однако эти сообщения могут вводить в заблуждение, поскольку интерпретатор не может следовать вашим точным намерениям и может обнаруживать ошибки на некотором расстоянии от их реальных причин.

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

Другими словами, настоящая причина обычно находится немного раньше в коде, например, в том месте, где вы должны были сообщить интерпретатору, что собираетесь использовать объект с неким именем.



Compilation concept picture


Если строка выглядит хорошо, интерпретатор пытается ее выполнить (примечание: каждая строка обычно выполняется отдельно, поэтому трио «чтение-проверка-выполнение» может повторяться много раз - больше раз, чем фактическое количество строк в исходном файле. , так как некоторые части кода могут выполняться более одного раза).

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

Теперь вы можете спросить: что лучше? Модель «компиляция» или модель «интерпретация»? Нет однозначного ответа. Если бы она была, одна из этих моделей давно бы перестала существовать. У обеих есть свои преимущества и свои недостатки.