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


Subject: Re: Refal -> Java? РефалАС-->АСАИЯ !
From: Mikhail Kovtun (mkovtun@nortelnetworks.com)
Date: Fri Dec 10 1999 - 18:02:33 MSK


Привет всем!

Сначала -- небольшое техническое замечание:

А не лучше ли в отображении использовать вместо массивов java.util.Collection и дальнейшие вариации? А какой вариант реализации Collection лучше в конкретных случаях, пусть братья Климовы думают.

По основному вопросу -- я согласен с Колей: отображение в Яву должно быть на первом местею Если случайно заодно получится отображение в другие языки, то хорошо. Но если для получения отображения в другие языки  потребуется хоть немного ухудшить отображение в Яву -- от этого нужно отказываться.

Я не разделяю Сережиного оптимизма по поводу того, что ЯваАС без труда может быть отображен в любой язык: семантика Явы слишком сильно отличается от семантики C/C++, и это должно отразиться на абстрактном синтаксисе (несмотря на то, что внешние представления синтаксиса Явы и C/C++ крайне похожи!) Поэтому, полагаю, тезис "Ява превыше всего" следует принять (или отвергнуть, если общество так решит) с самого начала, и если принять, то принять безоговорочно -- иначе потом споров не оберешься...

"Sergei M. Abramov" wrote:

Привет, всем!
я хочу еще раз подчеркнуть именно важность интеграции с Явой. Я бы все рассматривал именно с этой точки зрения.
Я это понимаю и не собираюсь спорить с этим утверждением.
На мой взгляд даже сам принцип отображения функция -> функия, выражение -> массив важен именно потому, что интерфейс с Явой крайне упрощается.
 Все верно, и вместо Явы можно подставить любой язык, в котором поддержаны все понятия, которые используются при синтаксическом отображении  РефалАС-->Ява. В частности, легко может быть подставлен:     -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).  Разве нет?Именно это я и называл разумной организацией работы.
Эта тематика мне кажется важной, как относящаяся к первому уровню иерархии целей.
 Абсолютно согласен. Сергей

--
Best regards,

Mikhail
 




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