Интерпретаторы и компиляторы
💻 Информатика · 9 класс
Как программа становится понятной компьютеру
Программу пишут на языке программирования, понятном человеку, но процессор выполняет только машинный код — команды в двоичном виде. Чтобы исходный текст заработал, его нужно перевести в машинный код. Этим занимаются два типа программ: компилятор и интерпретатор.
Компилятор заранее переводит всю программу целиком в машинный код и сохраняет готовый исполняемый файл. Интерпретатор читает и выполняет программу строка за строкой прямо во время запуска, не создавая отдельного файла.
Сравнение двух подходов
| Признак | Компилятор | Интерпретатор |
|---|---|---|
| Когда переводит | заранее, весь код сразу | во время работы, по строке |
| Результат | исполняемый файл | отдельного файла нет |
| Скорость выполнения | обычно выше | обычно ниже |
| Поиск ошибок | при компиляции | при достижении строки |
Как это выглядит на практике
При компиляции сначала запускают перевод, и только потом готовую программу:
исходный текст --> компилятор --> исполняемый файл --> запуск
исходный текст --> интерпретатор --> сразу выполнение строкВ первом случае пользователь получает готовый файл, который запускается без исходного текста. Во втором — для запуска всегда нужны и текст программы, и сам интерпретатор.
Достоинства и недостатки
- Скомпилированная программа работает быстрее, потому что перевод уже сделан.
- Интерпретируемую программу проще проверять по частям и быстрее запускать после правок.
- Компилятор находит многие ошибки до запуска, интерпретатор — только когда дойдёт до строки с ошибкой.
Запомни: существуют смешанные подходы. Некоторые языки сначала переводят программу в промежуточный код, а потом исполняют его специальной средой. Это сочетает удобство интерпретации и часть скорости компиляции.
Этапы работы компилятора
Компилятор не просто заменяет команды одну на другую. Сначала он проверяет, что текст программы написан по правилам языка, и сообщает об ошибках в записи. Затем он анализирует смысл конструкций и только потом порождает машинный код. Поэтому компилятор способен заранее найти многие ошибки, которые при интерпретации проявились бы лишь во время выполнения нужной строки.
Именно благодаря заблаговременной проверке большие программы чаще пишут на компилируемых языках: ошибки выявляются до того, как программа попадёт к пользователю. При интерпретации же ошибка в редко выполняемой строке может остаться незамеченной долгое время.
Что выбрать
Для готовых программ, которые должны работать быстро, удобнее компиляция. Для обучения, быстрых проверок и небольших задач удобнее интерпретация, ведь не нужно каждый раз ждать перевода всей программы. Многие современные языки предлагают оба способа.
Кратко о главном
- Процессор выполняет только машинный код, поэтому исходный текст нужно перевести.
- Компилятор переводит всю программу заранее и создаёт исполняемый файл.
- Интерпретатор выполняет программу построчно во время запуска.
- Компиляция даёт скорость, интерпретация — удобство проверки и быстрый запуск.