Метапрограммы и метаинтерпретаторы
Me та программой называется программа, которая принимает в качестве данных другие программы. Примерами метапрограмм являются интерпретаторы и компиляторы. Особой разновидностью метапрограмм являются метаинтерпретаторы — интерпретаторы для некоторого языка, написанные на том же языке. Таким образом, метаинтерпретатором Prolog является интерпретатор языка Prolog, который сам написан на языке Prolog.
Благодаря наличию в языке Prolog возможностей по манипулированию символами он является мощным языком, который может успешно применяться для мета-программирования. Поэтому он часто служит в качестве языка реализации для других языков. Многие специалисты отмечают, что Prolog особенно хорошо подходит для использования: в качестве языка быстрой разработки прототипов в тех ситуациях, когда требуется как можно быстрее воплотить в жизнь новые идеи. Это особенно важно в тех случаях, когда возникает необходимость разработать новый язык, осуществить на практике новый принцип программирования или опробовать вновь созданную архитектуру программы. Этот язык позволяет быстро реализовывать новые идеи и проводить эксперименты. При разработке прототипов основное внимание уделяется тому, чтобы новые идеи оформлялись в виде экспериментального образца максимально быстро и с наименьшими затратами, благодаря чему можно было бы
немедленно приступать к их проверке. С другой стороны, особое значение повышению эффективности такой реализации не придается. После проверки первоначального замысла прототип может быть реализован повторно, для чего можно воспользоваться другим, более эффективным языком программирования. И даже если потребуется отказаться от прототипа на языке Prolog в пользу другого языка, все равно усилия, затраченные на разработку этого прототипа, не будут напрасными, поскольку он обычно позволяет ускорить творческий этап разработки.
В предыдущих главах этой книги уже встречались метапрограммы; в качестве примера можно указать интерпретаторы правил вывода (см. главы 15 и 16). Они обрабатывают язык правил вывода, который фактически является языком программирования, хотя программы, написанные на нем, обычно называют базами знаний из-за их специализированного содержания. Еще одним примером является интерпретатор для гипотез на языке ILP (см. главу 19). В этой главе приведены перечисленные ниже дополнительные примеры, которые позволяют показать, насколько легко могут быть написаны метапрограммы на языке Prolog,
• Создание метаинтерпретаторов Prolog.
• Применение метода обобщения на основе объяснения.
• Реализация на языке Prolog других принципов программирования, в частности, объектно-ориентир о ванного программирования и программирования, управляемого шаблонами.