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