Interested Article - Интерпретатор

Интерпрета́тор ( англ. interpreter ıntə:'prıtə , от лат. interpretator — толкователь ) — программа (разновидность транслятора ), выполняющая интерпретацию .

Интерпрета́ция — построчный анализ, обработка и выполнение исходного кода программы или запроса, в отличие от компиляции , где весь текст программы перед запуском анализируется и транслируется в машинный или байт-код без её выполнения .

История

Первым интерпретируемым языком программирования высокого уровня был Lisp . Его интерпретатор был создан в 1958 году на компьютере IBM 704 . Рассел вдохновился работой Джона Маккарти и выяснил, что функция eval в Lisp может быть встроена в машинный код .

Типы интерпретаторов

Простой интерпретатор анализирует и тут же выполняет (собственно интерпретация) программу покомандно или построчно по мере поступления её исходного кода на вход интерпретатора. Достоинством такого подхода является мгновенная реакция. Недостаток — такой интерпретатор обнаруживает ошибки в тексте программы только при попытке выполнения команды или строки с ошибкой.

Интерпретатор компилирующего типа — это система из компилятора , переводящего исходный код программы в промежуточное представление, например, в байт-код или p-код , и собственно интерпретатора, который выполняет полученный промежуточный код (так называемая виртуальная машина ). Достоинством таких систем является большее быстродействие выполнения программ за счёт выноса анализа исходного кода в отдельный, разовый проход, и минимизации этого анализа в интерпретаторе. Недостатки — большее требование к ресурсам и требование на корректность исходного кода. Применяется в таких языках, как Java , PHP , Tcl , Perl , REXX (сохраняется результат парсинга исходного кода ), а также в различных СУБД .

В случае разделения интерпретатора компилирующего типа на компоненты получаются компилятор языка и простой интерпретатор с минимизированным анализом исходного кода. Причём исходный код для такого интерпретатора не обязательно должен иметь текстовый формат или быть байт-кодом, который понимает только данный интерпретатор, это может быть машинный код какой-то существующей аппаратной платформы. К примеру, виртуальные машины вроде QEMU , Bochs , VMware включают в себя интерпретаторы машинного кода процессоров семейства x86 .

Некоторые интерпретаторы (например, для языков Лисп , Scheme , Python , Бейсик и других) могут работать в режиме диалога или так называемого цикла чтения-вычисления-печати ( англ. read-eval-print loop, REPL ). В таком режиме интерпретатор считывает законченную конструкцию языка (например, s-expression в языке Лисп), выполняет её, печатает результаты, после чего переходит к ожиданию ввода пользователем следующей конструкции.

Уникальным является язык Forth , который способен работать как в режиме интерпретации, так и компиляции входных данных, позволяя переключаться между этими режимами в произвольный момент, как во время трансляции исходного кода, так и во время работы программ.

Следует также отметить, что режимы интерпретации можно найти не только в программном, но и аппаратном обеспечении . Так, многие микропроцессоры интерпретируют машинный код с помощью встроенных микропрограмм , а процессоры семейства x86, начиная с Pentium (например, на архитектуре Intel P6 ), во время исполнения машинного кода предварительно транслируют его во внутренний формат (в последовательность микроопераций).

Алгоритм работы простого интерпретатора

  1. прочитать инструкцию ;
  2. проанализировать инструкцию и определить соответствующие действия ;
  3. выполнить соответствующие действия ;
  4. если не достигнуто условие завершения программы, прочитать следующую инструкцию и перейти к пункту 2.

Достоинства и недостатки интерпретаторов

Достоинства

  • Большая переносимость интерпретируемых программ — программа будет работать на любой платформе, на которой реализован соответствующий интерпретатор.
  • Как правило, более совершенные и наглядные средства диагностики ошибок в исходных кодах.
  • Меньшие размеры кода по сравнению с машинным кодом, полученным после обычных компиляторов.

Недостатки

  • Интерпретируемая программа не может выполняться отдельно без программы-интерпретатора. Сам интерпретатор при этом может быть очень компактным.
  • Интерпретируемая программа выполняется медленнее, поскольку промежуточный анализ исходного кода и планирование его выполнения требуют дополнительного времени в сравнении с непосредственным исполнением машинного кода, в который мог бы быть скомпилирован исходный код.
  • Практически отсутствует оптимизация кода , что приводит к дополнительным потерям в скорости работы интерпретируемых программ.

См. также

Примечания

  1. Кочергин В. И. interpreter // Большой англо-русский толковый научно-технический словарь компьютерных информационных технологий и радиоэлектроники. — 2016. — ISBN 978-5-7511-2332-1 .
  2. Интерпретатор // / Гл. ред. Прохоров Ю. В.. — М. : Советская энциклопедия, 1988. — С. . — 847 с.
  3. ГОСТ 19781-83; СТ ИСО 2382/7-77 // Вычислительная техника. Терминология: Справочное пособие. Выпуск 1 / Рецензент канд. техн. наук Ю. П. Селиванов. — М. : Издательство стандартов, 1989. — 168 с. — 55 000 экз. ISBN 5-7050-0155-X .
  4. Першиков В. И., Савинков В. М. Толковый словарь по информатике / Рецензенты: канд. физ.-мат. наук А. С. Марков и д-р физ.-мат. наук И. В. Поттосин. — М. : Финансы и статистика, 1991. — 543 с. — 50 000 экз. ISBN 5-279-00367-0 .
  5. Борковский А. Б. Англо-русский словарь по программированию и информатике (с толкованиями). — М. : Русский язык, 1990. — 335 с. — 50 050 (доп.) экз. ISBN 5-200-01169-3 .
  6. Толковый словарь по вычислительным системам = Dictionary of Computing / Под ред. В. Иллингуорта и др.: Пер. с англ. А. К. Белоцкого и др.; Под ред. Е. К. Масловского. — М. : Машиностроение, 1990. — 560 с. — 70 000 (доп.) экз. ISBN 5-217-00617-X (СССР), ISBN 0-19-853913-4 (Великобритания).
  7. Graham, Paul. . — O'Reilly, 2010. — С. 185. — ISBN 9781449389550 , 1449389554.
  8. Dave Martin. Rexx FAQs . Дата обращения: 22 декабря 2009. 22 августа 2011 года.
  9. Jeff Fox. (англ.) . Thoughtful Programming and Forth . UltraTechnology. Дата обращения: 25 января 2010. 22 августа 2011 года.
Источник —

Same as Интерпретатор