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


Subject: Re: Refal -> Java? РефалАС-->АСАИЯ !
From: Nikolai Kondratiev (Nikolai.Kondratiev@gmx.de)
Date: Fri Dec 10 1999 - 16:48:41 MSK


Сергей,

я пока не против ничего из того, что ты пишешь. Но мне кажется преждевременным обсуждение этих тем до того, как приняты основные цели, иначе мы скатимся к нашим предпочтениям и версия языка будет эклектичной.

Мое утверждение заключается лишь в том, что конкретный синтасис Refal-J и выбор основных используемых конструкций должен быть сделан исходя из интересов Ява-пользователя и простоты и эффективности интерфейса между рефалом и Явой. Боже упаси нас также от разработки рефал-68 (по аналогии с алгол-68).

Николай Кондратьев
  ----- Original Message -----
  From: Sergei M. Abramov
  To: Nikolai Kondratiev ; Refal
  Sent: Friday, December 10, 1999 1:14 PM
  Subject: Re: Refal -> Java? РефалАС-->АСАИЯ !

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