Стили и методы программирования

         

Требования к автоматической трансляции таблиц


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

  • Внесение изменений в таблицу не влечет за собой автоматического изменения внутреннего представления, а возможные нарушения соглашений, связанных с исходным решением, могут сделать бессмысленным переиспользование. Это особенно заметно, если обратить внимание на то, что в результирующей таблице отсутствуют имена состояний.
  • Поиск и диагностика ошибок (речь идет не только о синтаксисе) возможны лишь на уровне интерпретируемого представления, что противоречит осмыслению программы в прежних терминах.
  • Наличие программы, не зависящей от исходного представления, провоцирует на ее модификации, которые не будут перенесены в исходное представление. В результате концептуальная и реализационная модели расходятся между собой.
  • Таким образом, предложенное решение не является технологичным. Оно может быть распространено на другие ситуации лишь для ограниченного класса задач.

Разработка технологии включает в себя создание и использование инструментов поддержки всех этапов, из которых состоит технологическая цепочка оперирования с таблицами. Ключевым моментом является выбор формата представления таблиц, приспособленный как к ручной, так и к автоматической обработке. Есть смысл попытаться отыскать универсальное решение. Если, вдобавок, оно будет стандартизовано, то появится возможность создать технологию. Сегодня предпосылки для такого решения существуют, в частности, использование так называемых языков разметки текстов и, в первую очередь, XML.



Содержание раздела