1 апреля 2010 · Комментарий

Без заголовка

HOL тут выступает не совсем как промежуточный язык, а мета-описание промежуточного языка :). Проблема в том, что в Жабу можно транслировать разными способами. Т.е. сама жаба построена на ОО парадигме, и уже с функционалкой не очень вяжется. А тем более с логикой. Ведь декларативка не требует какого-то жесткого алгоритма выполнения, в отличие от императивки. Т.е. декларативка может быть оттранслирована разными способами (бесконечным кол-вом). Грубо говоря, трансляция декларативки - это сама по себе суперкомпиляция. Ибо декларативка задает модель вычислений, а не сам алгоритм. Ну а описанием этой модели вычислений, подходящим как для функ-, ОО- так и для логических парадигм как раз ХОЛ и является. Условно говоря, мы императивные алгоритмы транслируем в модель этих алгоритмов. А (чистая)декларативка уже сама по себе есть модель. Далее эти модели как-то преобразуются: упрощаются, специализируются. А потом их уже можно генерить код (тоже в любой архитектуре). Вобщем, я предлагаю Workbench рассматривать как мультипарадигмальный суперкомпилятор :). Где фронтенды для разных языков транслируют программы в промежуточный ХОЛ-формализм, который трансформируются под нужные цели (тоже с помощью ДСЛей), а потом генерится целевой код (опять через ДСЛи). Т.е. фронтенды, бэкенды (кодогенераторы), оптимизации - это все специализированные DSL.

К записи · К обсуждению