788
ГЛАВА 13. СЕНТЕНЦИАЛЬНЫЕ МЕТОДЫ
выражений в другие. Эти операции целенаправленно применяются програм-
мистом, чтобы получить аналитическое выражение для тех или иных целей
(в примере — для решения уравнения, но это совсем не обязательно!). Обыч-
ные операции пополняются специальными, часто выражающими сущности
более высоких порядков (например, дифференцированием).
Существенный момент систем аналитических преобразований — вну-
треннее представление выражений. Текстовое представление явно не похо-
дит.Немногим лучше и абстрактно-синтаксическое представление,если иметь
ввиду семантику, которая вкладывается в соответствующие операции тради-
ционных языков программирования.
Конечно, реализовывать аналитические вычисления можно самыми раз-
нообразными способами. Можно упрятать реализацию всех нужных преобра-
зований в каком-либо прикладном пакете (как это сделано,например в
Maple
)
и даже не заметить, что мы имеем дело с сентенциальными по сути своей
задачами. Однако этот путь ведет лишь к таким решениям, которые нужны
«здесь и сейчас»: программист, к примеру, не сможет подсказать программе
символического дифференцирования, что она имеет дело в неким частным
случаем, для которого можно резко сократить перебор вариантов. Когда тре-
буется проводить подобные преобразования систематически, удобнее снаб-
дить перерабатываемые данные дополнительными атрибутами, направляю-
щими вычисления в нужное русло. Иными словами, полезно делать струк-
турные единицы данных активными. А это — привнесение в программу, об-
рабатывающую такие данные, элементов сентенциального стиля, пусть даже
без использования подходящей языковой поддержки. Преимущества, кото-
рые при этом появляются, непосредственно следуют из того, что данный вид
обработки является сентенциальным по своей сути, требующим адекватных
средств реализации.
13.4.2. Сентенциальные методы в традиционных языках
Что касается программирования в сентенциальном стиле на операцион-
ном языке, то прежде всего здесь нужно очертить границы применения. Мы
упоминали условия, при которых применение данного стиля оправдано. Из
них следует, что нет никаких оснований говорить об ‘универсальном’ сен-
тенциальном стиле, пригодном для обработки любых данных. Для специа-
лизированного применения, когда перерабатываемые данные естественным
образом структурированы,правильное программирование в сентенциальном
стиле предполагает отражение в составляемой программы этой структуры.