Добрый вечер, Николай Викторович!

Вот и всплыл в интернете ещё один фрагмент мозаики в истории Рефала.

На сайте refal.ru есть такие слова Аркадия Климова:
В середине 80-х В. Турчиным предложен язык Рефал-5, который содержит Базисный 
рефал в качестве подмножества. Расширения языка Рефал-5 качественно меняют 
стиль программирования, поэтому можно говорить о нем как о новом поколении 
языка. В настоящее время существует две реализации языка Рефал-5: одна 
выполнена Д. Турчиным, другая - Н. Кондратьевым и Арк. Климовым. Обе имеют 
практически один и тот же входной язык, но отличаются рядом особенностей 
реализации. Вторая известна также под названием Рефал-6, однако следует 
помнить, что это название не языка, а его реализации.

Параллельно, С. Романенко разработал язык Рефал Плюс, основанный в принципе на 
тех же расширениях, что и Рефал-5, но доведенный до концептуальной полноты. В 
нем основным можно назвать расширение рефала средствами обработки неуспехов. 
Впоследствии ряд нововведений Рефала Плюс в несколько пересмотренном виде был 
перенесен Арк.Климовым в реализацию Рефала-6. В настоящее время (1999) 
продолжается работа по унификации входных языков Рефал Плюс и Рефал-6.

Отсюда: http://refal.ru/intro-ref.htm. Выделение моё.

Стало быть, когда-то была реализация Рефала-6, гораздо более близкая к 
Рефалу-5, чем нынешняя реализация Аркадия Климова (которая приобрела ряд черт 
Рефала Плюс и некоторых своих, уникальных черт). Ваши исходники позволяют 
получить представление о том, как эта реализация могла выглядеть.

Судя по исходникам, в ней ещё не было «действий» Рефала-6, опирающихся на 
понятие неуспеха, а были классические условия и блоки — в исходных текстах 
компилятора используются только они. Хотя файл tsyn.ref уже демонстрирует 
поддержку «результатных блоков». Однако, точно сказать, какие расширения 
синтаксиса поддерживаются в Refal-6b, я сказать не могу, т.к. не разбирал 
исходники на столько подробно.

В документации к Рефалу-6 Аркадий писал, что вся поддержка модульности 
(загрузки и выгрузки модулей) реализована кодом на Рефале, поддержки со стороны 
рантайма нет. Изучая загрузчики Рефала-6b, (refal.dynldr и refal.sys), я понял, 
в чём там хитрость.


Аркадий Валентинович мне как-то рассказывал, что в 90-е годы был написан 
суперкомпилятор Рефала-6 в Си (он называл его «полусуперкомпилятором», на 
сколько я помню), и у Аркадия Валентиновича есть его исходники. Данный 
суперкомпилятор умел повышать местность функций и распознавал 
«параметры-призраки» — параметры, при передаче значений в которые не нужно 
инкрементировать счётчики ссылок. Сейчас это называется «заимствованием» 
(borrowing) и применяется в таких языках как Rust и Lobster (memory management 
in Lobster). Интересно было бы проверить этот суперкомпилятор на Рефале-6b и 
для Рефала-6b.


Интересно сравнить исходные тексты Рефалов-6(b), Рефала-5 PZ и FLAC. Есть ли 
между какими-то из них точные заимствования фрагментов? А также сравнить 
Рефал-6 и Refal-6b, сколько кода там наоборот различается и сколько сохранилось 
общего. Как-нибудь сравню и напишу в рассылку.


Спасибо!
Александр Коновалов


From: nikolai.kondratiev_AT_gmail.com 
Sent: Friday, March 26, 2021 3:22 PM
To: refal@botik.ru 
Cc: 'Andrei Klimov' 
Subject: Refal6-basic

Уважаемые коллеги!

 

После того, как Рефал-6 был передан Аркадию Климову для дальнейшей с ним 
работы, язык довольно сильно изменился, что не всегда мне нравилось. В своей 
работе я использовал имеющуюся у меня реализацию, в которой тоже понемногу 
происходили изменения, наиболее важным из которых была длинная арифметика. Я 
считал, что в реализации Рефала неограниченное целое число должно быть одним 
символом с точки зрения языка.

 

Поскольку на мой взгляд реализация достаточно устойчива, я решил сделать ее 
доступной для Рефал-сообщества.

 

Вся документация на русском языке.

 

Тексты программ должны быть в ASCII.

 

Рефал-6b находится на моем домашнем компьютере, который доступен по ссылке:

                http://nkon04.ddns.net/refal6b/

 

Реализация состоит из файлов:

refal (refal.exe для Windows)

refal.sys

refal.comp

refal.dynldr

refal.tracer

 

Все они должны находиться в одном каталоге файловой системы.

Это либо каталог Windows,

Либо /usr/local/bin/ под Linux

 

Все замечания приветствуются.

 

Успехов.

 

Николай Кондратьев
  • Ref... nikolai . kondratiev_AT_gmail . com
    • ... nikolai . kondratiev_AT_gmail . com
    • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
    • ... nikolai . kondratiev_AT_gmail . com
      • ... Andrei Klimov andrei_AT_klimov . net
        • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
          • ... Andrei Klimov andrei_AT_klimov . net
      • ... Arkady Klimov arkady . klimov_AT_gmail . com
        • ... Александр Гусев gusev_aleksandr_AT_mail . ru
          • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
            • ... Andrei Klimov andrei_AT_klimov . net
              • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
                • ... Andrei Klimov andrei_AT_klimov . net

Ответить