В вычислении , мета-круговой вычислитель ( МКЭ ) или мета-круговой интерпретатор ( MCI ) является интерпретатором , который определяет каждую особенность интерпретируемого языка с использованием аналогичного объекта языка хоста интерпретатора. Например, интерпретация лямбда-приложения может быть реализована с использованием приложения-функции. [1] Мета-круговое вычисление наиболее заметно в контексте Lisp . [1] самоинтерпретатор является мета-интерпретатором круговой , где интерпретируемый язык почти идентичен языку хозяина; эти два термина часто используются как синонимы. [2]
История
В диссертации Коррадо Бема [3] описана конструкция компилятора с собственным хостом . [4] Из-за сложности компиляции функций высшего порядка многие языки вместо этого определялись через интерпретаторы, в первую очередь Лисп. [1] [5] Сам термин был придуман Джоном К. Рейнольдс , [1] и популяризировал в результате его использования в книге Структура и интерпретация компьютерных программ . [2] [6]
Самостоятельные переводчики
Самоинтерпретатор - это мета-круговой интерпретатор, в котором основной язык также является языком, который интерпретируется. [7] Самоинтерпретатор выполняет универсальную функцию для рассматриваемого языка и может быть полезен при изучении определенных аспектов языка. [8] Самоинтерпретатор предоставит циклическое, бессмысленное определение большинства языковых конструкций и, таким образом, дает мало информации о семантике интерпретируемого языка, например о стратегии оценки . Решение этих проблем дает более общее понятие «дефиниционный интерпретатор». [1]
Использует
В сочетании с существующей реализацией языка мета-циклические интерпретаторы предоставляют базовую систему, от которой можно расширить язык, либо вверх, добавляя дополнительные функции, либо вниз, скомпилировав функции, а не интерпретируя их. [9] Они также полезны для написания инструментов, тесно интегрированных с языком программирования, таких как сложные отладчики. [ необходима цитата ] Язык, разработанный с учетом мета-круговой реализации, часто больше подходит для создания языков в целом, даже если они полностью отличаются от основного языка. [ необходима цитата ]
Примеры
Многие языки имеют одну или несколько мета-циклических реализаций. Вот неполный список.
Некоторые языки с мета-круговой реализацией, разработанной снизу вверх в сгруппированном хронологическом порядке:
- Лисп , 1958 год.
- Четвертый , 1968 г.
- PostScript , 1982 г.
- Пролог , 1972 г.
- TeX , основанный на чистом TeX, 1978 г.
- Smalltalk , 1980 год
- Реболь , 1997
- Красный , 2011
- Фактор , 2003 г.
Некоторые языки с мета-циклической реализацией через третьих лиц:
- Java через Jikes RVM , Squawk , Maxine или GraalVM's Espresso
- Scala через Metascala
- JavaScript через Нарцисс или JS-Interpreter
- Оз через Глинду
- Python через PyPy
- Рубин через Рубиниус
- Lua через Metalua
Смотрите также
- М-выражение
- Гомоиконность
- Самостоятельный компилятор
Рекомендации
- ^ a b c d e Рейнольдс, Джон К. (август 1972 г.). "Определительные интерпретаторы языков программирования высшего порядка" (PDF) . Вычисление высшего порядка и символическое вычисление . 11 (4): 363–397. DOI : 10,1023 / A: 1010027404223 . Проверено 14 апреля 2017 года .
- ^ а б «Метациркулярный оценщик» . Структура и интерпретация компьютерных программ . Массачусетский технологический институт.
- ^ К. Бём, Цифровые калькуляторы. Du déchiffrage des formules logico-mathématiques par la machine même dans la concept du program, Ann. Мат. Pura Appl. (4) 37 (1954) 1-51
- ^ Кнут, Дональд Э .; Пардо, Луис Трабб (август 1976 г.). Раннее развитие языков программирования . п. 36.
- ^ Маккарти, Джон (1961). «Универсальная функция LISP» (PDF) . Руководство программиста на Лисп 1.5 . п. 10.
- ^ Харви, Брайан. «Почему структура и интерпретация компьютерных программ имеют значение» . people.eecs.berkeley.edu . Проверено 14 апреля 2017 года .
- ^ Брейтуэйт, Реджинальд (22 ноября 2006 г.). «Значение мета-кругового интерпретатора» . Проверено 22 января 2011 .
- ^ Рейнольдс, Джон С. (1998). «Пересмотр определений интерпретаторов» (PDF) . Вычисление высшего порядка и символическое вычисление . 11 (4): 356–7. DOI : 10,1023 / A: 1010075320153 . Проверено 14 апреля 2017 года .
- ^ Ориоль, Мануэль; Мейер, Бертран (2009-06-29). Объекты, компоненты, модели и паттерны: 47-я международная конференция TOOLS EUROPE 2009, Цюрих, Швейцария, 29 июня - 3 июля 2009 г., Материалы . Springer Science & Business Media. п. 330. ISBN 9783642025716. Проверено 14 апреля 2017 года .
- ^ Мета-круговая реализация языка программирования Pico
Внешние ссылки
- Структура и интерпретация компьютерных программ (SICP) , онлайн-версия полной книги, дата обращения 18 января 2009 г.
- Метаскала