art251.htm
Суперкомпиляция двойной интерпретации
(как один час машинного времени можно превратить в одну секунду)
2. Язык преобразования документов XSLT: эксперименты с суперкомпилятором Scp4.
2.5. Эксперименты по суперкомпиляции двойной интерпретации
2.5.1. Об адекватной выразимости результата суперкомпиляции.
Прежде чем рассматривать конкретные результаты экспериментов, необходимо сказать, что реальным внутренним языком преобразований суперкомпилятора SCP4 является не Рефал-5, а язык Рефал-графов [ссылка на китайскую статью],[ссылка на Турчина], в котором шаги Рефал-машины разбиты на более элементарные действия, и отождествление происходит не с одним образцом из левой части Рефал-предложения, а , в некотором смысле, со всеми левыми частями "одновременно", то есть в языке есть средства, позволяющие описать процесс отождествления в виде нетривиального дерева, причём неудача при отождествлении отбрасывает лишь на ближайшее ветвление. Ветвления в этом смысле "функциональны" то есть ведут себя как Рефал-5 функции, неудача внутри которых приводит к аварийной остановке. Можно указать здесь на грубую аналогию с блоками в Рефале-5.
Первым шагом SCP4 переводит программу в язык Рефал-графов, и лишь затем начинает преобразования. Получив ответ в этом же языке, он строит Рефал-программу: с точки зрения пользователя, как входным так и выходным языком является Рефал-5.
Программа на яыке Рефал-графов часто содержит простую синтаксическую информацию, позволяющую оптимизировать процесс интерпретации, если его вести напрямую. Рефал-5 некоторых из этих выразительных средств не содержит. Это может привести к неадекватной трансляции в него результата преобразований SCP4 [ссылка на С.Романенко]. Тем самым, с практической точки зрения, представляет интерес непосредственная интерпретация языка Рефал-графов.