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


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


Привет, всем!
    я хочу еще раз подчеркнуть именно важность интеграции с Явой. Я бы все
рассматривал именно с этой точки зрения.
Я это понимаю и не собираюсь спорить с этим утверждением.
    На мой взгляд даже сам принцип отображения функция -> функия,
выражение -> массив важен именно потому, что интерфейс с Явой крайне
упрощается.

Все верно, и вместо Явы можно подставить любой язык, в котором поддержаны
все понятия, которые используются при синтаксическом отображении
РефалАС-->Ява.

В частности, легко может быть подставлен:

    -1- Си/Си++ -- вот вся разница: в Яве более просто описать run-time
support -- описал объекты терм, массив термов, вырезка массива термов--и
все! А сборка муссора дается даром. В Си/Си++ все примерно также, только
сборку мусора надо писать самим.

    -2- Т-язык (имеется и работает) -- тут разницы вообще нету, более того
уже сейчас в Т-сситеме не только поддержана сборка мусора, но и еще и
рефальские структуры данных...
    В Яве мы можем получить хороший "тягач" для рефала. Все, что будет
мешать интегрировать рефал с Явой я бы безжалостно отбросил. Даже ценой
потери универсальности отображения по отношению к другим императивным
языкам.

Я не верю, что при реализации "Рефал-->Ява" не будет фаз:
    -1- Рефал-->РефалАС
    -2- РефалАС --> ЯваАС
    -3- ЯваАС --> Ява (файл)

где буковки "АС" можно произносить как "Абстрактный Синтаксис" и/или
"внутреннее представление в виде рефальского выражения".
При этом, "ЯваАС" будет совсем маленький язычек -- то мизерное подмножество
Явы, которое и потребуется для реализации Рефала.

Так вот, можешь считать, что "ЯваАС" это и есть, что я назвал АСАИЯ.
То что требуется для отображения Рефала в Яву есть во всех современных
императивных языках (по крайней мере есть в Си, Си++, Т-системе).

ОК, я соглашаюсь в дальнейшем называть АСАИЯ словом ЯваАС и включать в это
понятие только то, что
    -а- абсолютно необходимо для отображения рефал программ в Яву и
    -б- эффективно поддержано Явой;

От такого определения ЯваАС ничем не будет отличаться от АСАИ. Так
получится само получится, что в ЯваАС будет то, и только то, что:
    -а- абсолютно необходимо для отображения рефал программ в любой
современный императивный язык (Ява, Си, Си++, Т-язык) и
    -б- эффективно поддержано в любом современном императивном языке (Ява,
Си, Си++, Т-язык);
    Второе, что бы я безжалостно отбросил - это преемственность по отношению
с существующим и существовавшим реализациям рефала. Версию языка необходимо
определить заново. Если она войдет в противоречие с существующими
реализациями на уровне АС, тем хуже для этих реализаций и для АС.

Не соглашусь ;-)

АС для того и разрабатывается, чтобы в него вписывались все сегодняшние и
будущие рефалы...
Если это не получилось -- надо расширять АС, а не выбрасывать его.
    Это не означает, что новая версия не возьмет ничего от старых, но мы не
должны быть связаны никакими нашими исторически сложившимися предпочтениями.
Версия рефала для Явы (Refal-J) должна на мой взгляд разрабатываться так,
чтобы быть наиболее естественной для знатоков Явы, а не рефала.

Прекрасно. Значит надо начать с разработки языка Refal-J ? Есть какие-либо
идеи, с чего следует начинать писать этот документ (Описание языка...) ?

Я нисколько не против, если кто-то сейчас займется таким документом (я
поучаствую в дискуссии!!!). Я нисколько не против того, что возможно после
разработки Refal-J потребуется расширять тот РефалАС, который вот-вот
сложится сегодня...

Ну вот совсем уж я "ЗА" то, чтобы сегодня, немедленно, иметь:
    -0- хоть какую-то версию РефалАС-а, покрывающего Рефал Плюс;
    -1- версию РефалПлюс компилятора, который выдает в файл РефалАС;

Это все, что мне надо, чтобы быстро и по уму сделать три двухфазных
компилятора:

(1) Рефал Плюс-->РефалАС
     РефалАС --> ЯваАС
     ЯваАС --> Ява (файл)

(2) Рефал Плюс-->РефалАС
     РефалАС --> ЯваАС
     ЯваАС --> Си++

(3) Рефал Плюс-->РефалАС
     РефалАС --> ЯваАС
     ЯваАС --> Си++

Ну, а после разработки описания Refal-J и возможно расширения РефалАС -->
Рефала-J-АС я думаю новый компилятор:

(4) RefalJ-->Рефал-J-АС
     Рефал-J-АС --> ЯваАС+
     ЯваАС+ --> Ява

будет каждой своей фазой на 75...100% кода совпадать с компилятором номер
(1). Разве нет?
Именно это я и называл разумной организацией работы.
    Эта тематика мне кажется важной, как относящаяся к первому уровню
иерархии целей.

Абсолютно согласен.

Сергей



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