Метапрограммы и метаинтерпретаторы

Me та программой называется программа, которая принимает в качестве данных другие программы. Примерами метапрограмм являются интерпретаторы и компиля­торы. Особой разновидностью метапрограмм являются метаинтерпретаторы — ин­терпретаторы для некоторого языка, написанные на том же языке. Таким образом, метаинтерпретатором Prolog является интерпретатор языка Prolog, который сам на­писан на языке Prolog.

Благодаря наличию в языке Prolog возможностей по манипулированию символа­ми он является мощным языком, который может успешно применяться для мета-программирования. Поэтому он часто служит в качестве языка реализации для дру­гих языков. Многие специалисты отмечают, что Prolog особенно хорошо подходит для использования: в качестве языка быстрой разработки прототипов в тех ситуаци­ях, когда требуется как можно быстрее воплотить в жизнь новые идеи. Это особенно важно в тех случаях, когда возникает необходимость разработать новый язык, осу­ществить на практике новый принцип программирования или опробовать вновь соз­данную архитектуру программы. Этот язык позволяет быстро реализовывать новые идеи и проводить эксперименты. При разработке прототипов основное внимание уде­ляется тому, чтобы новые идеи оформлялись в виде экспериментального образца максимально быстро и с наименьшими затратами, благодаря чему можно было бы


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

В предыдущих главах этой книги уже встречались метапрограммы; в качестве примера можно указать интерпретаторы правил вывода (см. главы 15 и 16). Они об­рабатывают язык правил вывода, который фактически является языком программи­рования, хотя программы, написанные на нем, обычно называют базами знаний из-за их специализированного содержания. Еще одним примером является интерпрета­тор для гипотез на языке ILP (см. главу 19). В этой главе приведены перечисленные ниже дополнительные примеры, которые позволяют показать, насколько легко могут быть написаны метапрограммы на языке Prolog,

• Создание метаинтерпретаторов Prolog.

• Применение метода обобщения на основе объяснения.

• Реализация на языке Prolog других принципов программирования, в частности, объектно-ориентир о ванного программирования и программирования, управляе­мого шаблонами.