Доброе утро, Сергей!

На сколько я знаю, Рефал Плюс имеет front-end’ы для Рефала-5 и Рефала-6. На 
сколько они совместимы с оригинальными реализациями?

> Ну, и, конечно, представление рефал-выражений обязано быть массивным.

Обязано быть с дорогущей конкатенацией? В языке, где конкатенация — один из 
двух конструкторов?

Дорогая конкатенация пагубно влияет на стиль программирования. Я читал архив 
рассылки (старый, которого сейчас нет) за, по-моему, начало нулевых. Там кто-то 
сравнивал программу Fab на Рефале-5 и Рефале Плюс. Первая программа гораздо 
компактнее и элегантнее, чем на втором.

ИМХО, дорогое копирование переменных портит стиль программирования гораздо 
меньше.

(Знаю, что эта тема уже обсуждалась много лет назад, но архив рассылки 
поглотила пучина времени.)

С уважением,
Александр Коновалов

-----Original Message-----
From: Sergei M. Abramov [mailto:ab...@botik.ru] 
Sent: Sunday, February 4, 2018 9:45 AM
To: Eisymont Leonid <verger...@yandex.ru>; refal@botik.ru
Subject: Re: Рефал умер

День добрый, всем!

Вот за что я и люблю Рефал Плюс.  И это объесняет мое молчание.  Даже когда 
обсуждается геерация Си кода по рефал-программе (ведь там такие статьи написаны 
и доступны про правильную компиляцию отождествления).

Ни, и, конечно, представление рефал-выражений обязано быть массивным.

Всего доброго,

Сергей Абрамов

Вы писали 04 февраля 2018 г., 01:46:37:

> Не согласен.Рефал хорош был своей простотой, технологичностью. Это и 
> старшее поколение специалистов, наших учителей, ценило в этом языке 
> прежде всего. Что было сделано Сергеем и Андреем в Рефале-2 - это, 
> наверное, оптимальный уровень его усложнения для практического 
> применения.Мы на протяжении десятилетий на этом диалекте языка 
> создавали очень сложные компиляторы языков высокого уровня для 
> необычных новых машин советского времени. Причем именно эта технология 
> была решающей, когда требовалось быстро создать компилятор для новой 
> машины. Никто не брался, а мы в Институте Прикладной Математики 
> им.М.В.Келдыша АН СССР вытягивали один проект за другим. Примеры с 
> Бураном и Булатами - наиболее яркие, а ведь были еще и язык НОРМА, 
> ПС-3000, ЕС-1195, это последний суперкомпьютер Советского Союза. 
> Далее, уже в середине первого десятилетия двухтысячных годов, первые 
> исследования по НИР "Беркут", это мультитредовый суперкомпьютер Ангара 
> стратегического назначения, были очень быстро проведены с 
> использованием именно Рефала.Мы применяли и применяем реализацию 
> Рефала-2 на односвязных списках с кольцевыим цепочками, которую с 
> Колей Мансуровым сделали в свое время также в ИПМ. Эта реализация 
> жива, исходники есть, имеется очень богатая библиотека машинных 
> операция с продуманными нестандартными возможностями, просто я не стал 
> вмешиваться в переписку в силу разных причин. Она у нас в горячем 
> резерве, когда потребуется будем использовать в своих работах. 
> Время-то приближается лихое...будет невероятно много разработок 
> специализированных высокопроизводительных устройств.Новые версии 
> Рефала - хорошее дело. Только я не знаю, был ли у них такой объем 
> практического применения в сложных проектах, как у нас. Тем не менее, 
> с уважением отношусь к этим работам, но уж очень много в новых версиях 
> текста и сложностей, поэтому мы это использовать вряд ли будем в своих 
> проектах. А вот параллельная версия реализации обычного Рефала явно не 
> помешала бы.В далеких семидесятых Рефал мои руководители и я 
> рассматривали не только как технологичный язык для задач обработки 
> символьной информации, но и как прототип внутреннего машинного языка 
> символьного процессора с отличной от фон-Неймановской архитектурой. С 
> этой точки зрения компилировать Рефал в Си с невероятными 
> оптимизациями - это "бег на месте или даже ход назад", в угоду старых 
> архитектур, хотя на сегодняшний день, м.б. и имеет практический мысл. 
> Да и этот Си слишком сильный конкурент на поляне существующих 
> архитектур, он, как сорняк, все забивает, не дает новым языкам 
> подняться в полный рост, причем дело не только в новых версиях Рефала. 
> Даже PGAS языки не пошли. Выбиться сейчас с новым языком без 
> фантастических преимуществ практически невозможно. Кстати, одна из 
> причин, почему мы изначально брались с Рефалом за самые "гиблые" с 
> точки зрения возможной выполнимости проекты - стремление доказать 
> привлекательность этого языка. Ну а потом, приобрели соответствующую 
> известность из-за этого и популярность "пожарной команды". Затянуло, 
> особенно если "просили"
> из ЦК КПСС или уважаемых ведомств. Доказывали несколько десятилетий, 
> результат - какой есть. Если честно, то не очень, ведь техника 
> приходит и уходит, заслуги забываются, а жизни своей немного жаль.
> Можно было бы и более фундаментальными делами заняться, диссертации 
> писать по этому поводу. В итоге цель наша с продвижением реализаций 
> этого функционального языка с глубоким распараллеливанием, вплоть до 
> применения клеточных автоматов, как это видели в семидесятых, пока не 
> достигнута.С другой стороны, слишком большие перемены ожидаются в 
> архитектуре вычислительной техники в предстоящие десять лет в связи с 
> достигнутым пределом развития КМОП-технологий и приближением 
> пост-Муровской элементной базы, а там - своя схемотехника, это скорее 
> всего, многие аналитики предсказывают. Там и место новым языкам, в том 
> числе и Рефалу, хотя бы упрощенной версии, об этом и думали много лет 
> назад.Будущее загадочно, не всем его дано увидеть, да и не так быстро 
> оно наступает. Вот и я не претендую, м.б. и ошибаюсь, но мы об этом 
> мечтали в свое время. Дано ли будет это увидеть или разочароваться? На 
> всякий случай, не стоит отчаиваться и делать поспешные выводы, 
> перечеркивать достижения и опрежавшие время работы предшественников, 
> причем целых двух - трех поколений, да и хоронить само это детище 
> Валентина Федоровича. Таким людям, как он, дано увидеть сквозь годы, я 
> в это верю, вижу признаки его правоты в современных проявлениях и 
> грядущих изменениях.Л.Эйсымонт 03.02.2018, 23:19, "Александр 
> Коновалов"
> <a.v.konovalo...@mail.ru>:Добрый вечер всем!

> Судя по тому, что на это письмо никакой реакции не воспоследовало, 
> экосистема Рефала уже никому не интересна.

> А ведь я предложил маленький шаг по борьбе с «вавилонской башней 
> Рефала» — проблемой наличия нескольких несовместимых диалектов. Если 
> что, темой, обозначенной в предыдущем письме, я никого не призываю 
> заняться — я сам могу за это взяться вместе со своими студентами.

> Александр Коновалов

>  

> From: Александр Коновалов [mailto:a.v.konovalo...@mail.ru]
> Sent: Saturday, January 27, 2018 3:22 PM
> To: refal@botik.ru
> Subject: Общее подмножество Рефала-5 и Рефала-6

>  

> Добрый день всем!

> В одном из своих предыдущих писем я затронул вопрос общего 
> подмножества Рефала-5 и Рефала-6. Сейчас раскрою этот вопрос подробнее.

> На сколько мне известно, Рефал-6 изначально писался как альтернативная 
> реализация Рефала-5 Турчина, и, по-видимому, был совместим с ним на 
> уровне исходного кода. Позже развитие обоих диалектов разошлось. В 
> августе 2000-го Рефал-5 обзавёлся новым
> синтаксисом: идентификаторы, в частности, стали чувствительными к 
> регистру, появились escape-последовательности, были запрещены 
> переменные без точки, а также изменился формат функции Type. Рефал-6 
> обзавёлся синтаксисом и семантикой действий и неуспехов из Рефала Плюс 
> много раньше 2000-го года, тут я уже не в курсе. И в итоге сейчас 
> практически любая программа для Рефала-5 не будет компилироваться 
> Рефалом-6 и наоборот.

> Однако, можно выделить подмножество программ, которые будут успешно 
> компилироваться и одинаково выполняться актуальными (доступными на
> 2018-01-27 в интернете) реализациями Рефала-5 (PZ Oct 29 2004) и
> Рефала-6 («Обновлено 08.02.2001»). Если программа на Рефале-5 
> удовлетворяет следующим требованиям:

> ·         После каждой «}» обязательно ставится «;».

> ·         Имена функций и идентификаторов (без кавычек) всегда начинаются с 
> большой буквы.

> ·         Используются только escape-последовательности \n, \r, \t, 
> \', \", \\, \xHH (только в 'литерах' и "составных символах").

> ·         Не используются никакие встроенные функции кроме коротких 
> синонимов для арифметики: <+…>, <−…>, <*…>, </…>, <%…>, при этом после + и − 
> обязателен пробел.

> ·         Результаты арифметических вычислений не должны быть 
> отрицательными и не должны превышать 2³²−1.

> ·         Стартовая функция всегда пишется как GO.

> То в этом случае программа может быть успешно откомпилирована и 
> выполнена Рефалом-6 ключами по умолчанию (компилируется при помощи rfc 
> program.ref, выполняется при помощи ri i+program+*GO).

> Поясню некоторые пункты списка.

> Синтаксис функций Рефала-5 имеет вид «[$ENTRY] Имя Блок», синтаксис 
> функций Рефала-6 — «[$ENTRY] Имя ОбразцовоеОкончание», причём 
> «ОбразцовоеОкончание» должно завершаться точкой с запятой. Однако, 
> синтаксис Рефала-5 допускает на верхнем уровне грамматики использовать 
> незначащие точки с запятой.

> Рефал-5 допускает имена, начинающиеся с маленькой буквы, Рефал-6 не 
> допускает. Поэтому запись «eq» первый воспримет как имя, второй — как 
> переменную.

> Рефал-5 также допускает escape-последовательности «\<», «\>», «\(», 
> «\)» которые обозначают те же символы, что и без «\». При этом текущая 
> реализация refc допускает запись escape-последовательностей вне 
> кавычек — это альтернативная запись для литер: \n эквивалентно '\n'. 
> Это нигде не документированная возможность, но она есть (и 
> поддерживается Рефалом-5λ, кстати). Другие escape-последовательности, 
> кроме вышеперечисленных и недокументированных, Рефал-5 не 
> поддерживает.

> Встроенные функции текущей реализации Рефала-5 начинаются с прописной 
> буквы и пишутся строчными: Open, Add и т.д. Встроенные функции 
> Рефала-6 пишутся целиком прописными буквами: OPEN, ADD.
> Соответственно, их множество пересекается только на коротких 
> синонимах. Нюанс со знаками «+» и «−» объясняется тем, что слитная 
> запись знака с целым числом описывает отрицательное число, т.е. <−10
> 5> в Рефале-5 будет проинтерпретировано вычитание из десяти пяти, в
> Рефале-6 как вызов числа «минус десять» в роли функции с аргументом 
> «пять». Можно переопределить функцию APPLY_OBJECT, чтобы и это 
> работало, но я пока не касаюсь переопределения библиотеки.

> Длинная арифметика в Рефале-5 описывается цепочками макроцифр, причём 
> признак отрицательного числа обозначается литерой '−'. В
> Рефале-6 сами символы-числа являются числами произвольной разрядности 
> со знаком. Поэтому отрицательные или слишком большие результаты 
> арифметических операций будут выглядеть по-разному.

> Последний пункт про GO — мне не удалось запустить программу (с ключами 
> запуска по умолчанию), стартовой функцией которой является функция Go.

> Но, у Рефала-6 есть слой совместимости с Рефалом-5, который позволяет 
> расширить общее подмножество. Именно расширить, поскольку слой устарел 
> + синтаксические различия. Во-первых, это стартовый модуль i5.rex, 
> содержащий определения некоторых встроенных Рефала-5.
> Во-вторых, чтобы можно было воспользоваться r5.rex без его 
> модификации, компилировать программу следует с ключом /U — все 
> незакавыченные слова в upper case. В этом случае программа на
> Рефале-5 должна ограничиваться следующими требованиями:

> ·         Опять после «}» обязательно должна быть «;».

> ·         Имена функций и идентификаторов пишутся с большой буквы.
> Нельзя в программе использовать функции и идентификаторы, которые 
> различаются только регистром символов. Не следует предполагать, что AbCd == 
> "AbCd".

> ·         Escape-последовательности см. выше.

> ·         Можно использовать встроенные функции с номерами от 1 «Mu» 
> до 35 «Sysfun». Номера функций можно посмотреть в выводе функции 
> «ListOfBuiltin» (но она имеет номер 67). Короткими синонимами для 
> арифметики пользоваться нельзя.

> ·         Не следует делать никаких предположений о размере 
> макроцифры. В Рефале-5 отрицательные числа записываются как '−' s.1
> s.2 s.3…, положительные — как '+' s.1 s.2 s.3… или s.1 s.2 s.3…; в
> Рефале-6 — '−' s.One, '+' s.One или s.One соответственно.

> ·         Запрещено пользоваться функцией Type, ибо форматы 
> возвращаемого значения в обоих реализациях различны.

> ·         Функция Step может показывать разные значения на обоих 
> реализациях. В Рефале-6 библиотечные функции написаны на Рефале и 
> поэтому они могут выполняться за несколько шагов рефал-машины, в отличие от 
> Рефала-5.

> ·         Стартовую функцию можно называть Go или GO.

> Чтобы ещё больше расширить подмножество, можно в первую очередь 
> обновить библиотеку совместимости — добавить синонимы функций с 
> именами в правильном регистре, обновить функцию Type и (что потребует 
> расширения интерпретатора) добавить новые встроенные функции. С точки 
> зрения синтаксиса можно поступить по-разному: от разрешения не писать 
> «;», когда тело функции задаётся одним блоком (это не должно привести 
> к противоречиям в грамматике) до разработки отдельного front-end’а для 
> синтаксиса Рефала-5. Но даже разрешение отсутствия точек с запятой на 
> верхнем уровне вместе с модификацией библиотеки сделает Рефал-6 точным 
> надмножеством Рефала-5.

> С уважением,
> Александр Коновалов




-- 
С уважением,
Абрамов С.М.                          mailto:ab...@botik.ru

Ответить