Re: Refal -> Java? РефалАС-->АСАИЯ !


Subject: Re: Refal -> Java? РефалАС-->АСАИЯ !
From: Sergei M. Abramov (abram@botik.ru)
Date: Fri Dec 10 1999 - 09:32:46 MSK


День добрый, всем!

Позвольте краткую реплику, по поводу:

Date: 7 декабря 1999 г. 22:45
Subject: Refal -> Java

================
(0) Блестящая идея!
================

Идея компилировать Рефал(ы) в императивный язык (функция-->в функцию,
развилки-->в "IF", вызовы-->в CALL, циклы--в циклы) как убедительно показал
Алик, достояна самого пристального внимания...

Я давно (с лета!) не испытывал такого Рефал-удовлетворения и Рефал-подъема!

===================
(1) Давно забытое старое
===================

Конечно, идея старая. И даже был ведь компилятор Рефала Плюс в Си.

Правда, идея Алика--намного глубше ТОГО компилятора--там был все-таки
виртуальный код.

Основная мысль у Алика (и именно ее надо не потерять), в том, что:
виртуальный код НЕ НУЖЕН, ОН ТОЛЬКО МЕШАЕТ (!!!).

Нужна прямая синтаксическая компиляция из АС в императивный язык (и Ява тут
не причем):

1 функция-->в функцию;
      арность-->в арность;
      коарность-->хотелось бы в коарность, (но можно выкрутиться и массивом,
хотя надо честно себе сказать--это именно "выкрутиться", кривое решение, по
хорошему надо возвращать раздельно).

2 переменные-->в переменные;

3 развилки-->в "IF";

4 вызовы-->в CALL;

5 циклы--в циклы (хочу в императивном языке иметь метки и GOTO внутри
тела функции! Не знаю, в Яве-то они есть?);

6 "::" в присваивания;

7 ":" в цепочку конструкций, с широкой эксплуатацией преимуществ
массивного представления списков:
        (а) прямое обращение к термам по индексу;
        (б) проверка длинны массива, прежде чегм ковыраться в термах.

Ради исторической справедливости скажу, что даже в такой формулировке (1--7)
идея у нас была уже давно. А именно,

    * я четко помню, что Рутик и СеРгей обсуждали такую компиляция (по
крайней мере, раздел "2. переменные-->в переменные;" мне помнится четко);

    * и в своих играх в НИЦЭВТе (Рефал-->ПЛ/1-МДА) я выписывал (но не
реализовал!) использование "7.б Проверка длинны массива, прежде чегм
ковыраться в термах";

    * а в понедельник идя из МГУ в метро (за день !!!, когда я от Алика
узнал о его письме!) с Андреем Слепухиным мы именно такую реализацию
обсуждали ;-)

Сказанное выше не умалаяет исторического значения сделанного Аликом
шага--надо было не просто обсуждать, надо было вспомнить это самое "давно
забытое старое" и не побояться ярко показать, что оно красиво и НАСТОЛЬКО
эффективно (надо было попрограммировать и замерить эффективность!)

СПАСИБО!

=============================
(2) Надо делать быстро и качественно
=============================

Это общий мотив всех откликов на Аликино письмо. И я присоединяююсь к
этому.

Ну так и давайте от общих слов попробуем перейти к конкретному обсуждению
(прежде чем перейти к делу ;-). Тем более (по результатом восторженной
реакции и после локального обсуждения со Светланой Пономаревой) кажется
могут быть волонтиры, которые возможно до 15 января будут иметь "дырку" для
написания такого компилятора. Сложного-то в нем ничего ведь нету!

Так что значит "делать быстро и качественно" (чтобы по возможности потом не
переделывать)? Мне кажется, это осначает:

    * Компилировать надо из АС

    * А при чем тут Ява? Компилировать надо в АСАИЯ (в Абстрактный
Синтаксис Абстрактного Императивного Языка)

=======================
(3) Компилировать надо из АС
=======================

Думаю, с этим тезисом все согласятся.
Тем самым, после выступления Алика можно сделать два адмнистративных
заявления:

    -а- работа в направлении "уметь выдавать виртуальный код из РефалПлюс
компилятора"--имеет низкий приоритет, так как для промышленной реализации
Аликовой идеи:
>...виртуальный код НЕ НУЖЕН, ОН ТОЛЬКО МЕШАЕТ (!!!)

    -б- работа в направлении "уметь выдавать АС из РефалПлюс
компилятора"--имеет ВЫСОКИЙ приоритет.

========================
(4) А при чем тут Ява?
Компилировать надо в АСАИЯ
========================

Объяснюсь. Ставя задачу именно так "компилировать надо в АСАИЯ" мы легко
получаем:

    -1- не только компилятор Рефал в Яву (я согласен, он весьма интересен!)
но и компиляторы Рефал->Си/Си++, и Рефал->Т-язык (пардон за шкурный интерес
;-);

    -2- возможность привлечь к разработке волонтеров, которые не знают (не
хотят спешно изучать) Яву (например: Абрамов, Пономарева);

    -3- да и вообще, это выделение разумной независимой фазы ;-)

Ну а фаза "АСАИЯ -->Ява" будет задачей на полчаса, для знатоков Явы...
Впрочем как и фазы "АСАИЯ -->Си", "АСАИЯ -->Си++", "АСАИЯ -->Т-язык".

Вот и все, что я хотел бы сказать по Аликовму письму.

Самый важный лично для меня тезис:
========================
Андрей Слепухин! Срочно
захотелось иметь отдельную
фазу: Рефал Плюс-->АС
========================

Всего всем доброго,

Сергей



This archive was generated by hypermail 2b25 : Mon Oct 25 2004 - 21:24:58 MSD