*"Данный суперкомпилятор умел повышать местность функций и распознавал «параметры-призраки» — параметры, при передаче значений в которые не нужно инкрементировать счётчики ссылок."*
Хочу уточнить, чтобы не было недоразумений, что "полусуперкомпилятор" из Рефала в С состоял из двух отдельных частей: собственно (полу)суперкомпилятор, написанный Н.Кондратьевым, вырабатывающий граф конфигураций, и отображение графа в С, mapping, как назвал его Турчин еще в 70х гг., которое было "поручено" сделать мне. Повышение местности производил первый компонент, а "призраки", actual/ghost variables (это термин Турчина) возникали уже при отображении, на уровне графа они еще не имеют смысла. На самом деле, и в mapping-е это работа была недоделана: этот аспект еще как-то проработан в пределах одной C-функции (образа одной конфигурации), при том, что все входные параметры-выражения конфигураций считались actual. Хотелось иметь глобальную оптимизацию этой разметки, было понятно как, и я даже статью про это написал, когда был у Турчина (в 1990м), и под его "пинками", но ее тогда не приняли, там куда я ее послал, и на этом все закончилось. Ох, сейчас хотелось бы все это реанимировать, но нужно время, силы... К большому сожалению сопроводительные отчеты по маппингу утрачены (они делались в CHI-writer, бумажные копии передавались через посредника в ИПС, который за эту работу платил, мои же копии потерялись). Сохранились только коды на рефале, надеюсь работоспособные. Там был введен и использовался некий промежуточный символьный язык - РАМАЛ (как бы "Refal Assembler Mapping Language"). Аналог языка сборки, но бесстековый, для прямой трансляции в С. Что касается кода самого рефала, то да, рефал-6 это модификация рефала-6b, кодов общих много, даже названия файлов старые. Небольшие модификации поначалу были мотивированы тем, чтобы сделать более удобным включение новых отображенных функций. А потом, видимо, я вошел во вкус, и меня "понесло". Кстати и рефал6 хотелось бы выложить в github с исходниками, но опять недосуг, а как сделать быстро и правильно, я пока не разбираюсь. Надо, конечно, найти время, и еще хотя бы на такое же "описание реализации". Коля, а что это за файл такой большой там на 150 МБ, по ссылке под "Studio Community 2019 solution <http://nkon04.ddns.net/refal6b/Refal6b.zip>", файл refal6.zip. У меня после загрузки он выглядит пустым. Судя по названию и размеру, это, вероятно, сборка проекта (-ов) под MS Visual Studio со всеми исходниками и (промежуточными) результатами. Аркадий сб, 27 мар. 2021 г. в 01:38, nikolai.kondratiev_AT_gmail.com <[email protected] >: > Спасибо за замечания! > > > > OPEN исправлю. > > Имена в system.ref не остаются в таблице имен, насколько я помню, поэтому > чистить не обязательно, правда память не освобождается. > > В dinload.ref может быть было опасно оставлять определения функций кроме > LOAD и DELETE. > > > > Должен заметить, что эти тексты программ были написаны в 1988 году и я не > все помню. > > Я не писал диссертации, связанной с Рефалом и не работал в ИПМ. > > > > >Стало быть, когда-то была реализация Рефала-6, гораздо более близкая к > Рефалу-5, чем нынешняя реализация Аркадия Климова > > > (которая приобрела ряд черт Рефала Плюс и некоторых своих, уникальных > черт). > > >Ваши исходники позволяют получить представление о том, как эта реализация > могла выглядеть. > > Это, собственно, она и есть. Изменения с тех пор незначительны. > > > > Я не использовал исходных текстов предыдущих реализаций, но использовал > язык сборки Романенко-Турчина и теоремы об удлинениях Сергея Романенко (не > все). Тогдашняя реализация Рефала-5 не использовала теоремы об удлинениях. > На каких-то примерах Рефал-6 сильно выигрывал. > > > > *Von:* Александр Коновалов <[email protected]> > *Gesendet:* Freitag, 26. März 2021 22:41 > *An:* [email protected] > *Betreff:* Re: Refal6-basic > > > > Добрый вечер, Николай Викторович! > > > > *«Все замечания приветствуются»* > > > > В функции OPEN не поддерживается режим 'a'. В функции rb_open() > допускаются только «r» и «w» в обоих регистрах. > > > > В файле dinload.ref не чистится функция Resort в Null. В system.ref > вообще ничего не чистится. > > > > > > Андрей Валентинович рассказывал, что в ИПМ кто-то писал диссертацию про > проверку типов Рефала с использованием регулярных выражений, а потом уехал > в Германию. Это не Вы были? > > > > > > С уважением, > Александр Коновалов > > > > > > *From**:* nikolai.kondratiev_AT_gmail.com <[email protected]> > > *Sent:* Friday, March 26, 2021 3:22 PM > > *To:* [email protected] > > *Cc:* 'Andrei Klimov' <[email protected]> > > *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 > > > > Все замечания приветствуются. > > > > Успехов. > > > > Николай Кондратьев > -- _______________ *С уважением, * *Аркадий Климов,* *с.н.с. ИППМ РАН,* *+7(499)135-32-95* *+7(916)072-81-48*
