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