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


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


Сергей,

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

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

Второе, что бы я безжалостно отбросил - это преемственность по отношению с существующим и существовавшим реализациям рефала. Версию языка необходимо определить заново. Если она войдет в противоречие с существующими реализациями на уровне АС, тем хуже для этих реализаций и для АС.

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

Эта тематика мне кажется важной, как относящаяся к первому уровню иерархии целей.

Николай Кондратьев
  ----- Original Message -----
  From: Sergei M. Abramov
  To: Arkady Klimov ; Andrei Klimov
  Cc: refal ; ; Lyuda Solovskaya ; Mikhail Kovtun
  Sent: Friday, December 10, 1999 7:32 AM
  Subject: Re: Refal -> Java? РефалАС-->АСАИЯ !

  День добрый, всем!
   
  Позвольте краткую реплику, по поводу:

  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