Re: Рефал умер?

2017-08-09 Пенетрантность Sergei M. Abramov
> Самое ужасное что в первую очередь кажется что это goon=болван, а не go on...

Антон, с этим я смирился ;-) Но было не просто. Был соблазн написать
not_found...

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

Сергей

PS.  Впрочем Гугль переводчик переводит как "шрпдплжай" (основной
вариант) и только потом все остальные варианты: неуклюжий, громила,
головорез, болван, тупица, неловкий человек, неуклюжий человек,
наемный бандит.



Re: Рефал умер?

2017-08-09 Пенетрантность Anton Korzh
Самое ужасное что в первую очередь кажется что это goon=болван, а не go on...


Sent from a Cellphone, sorry for misprints

On Aug 9, 2017, at 11:45, Boyko Bantchev  wrote:

>> был очень витиеватый цикл for, который мог быть даже while
> 
> Вот именно: while-ом можешь ты и быть, но for-ом все равно быть обязан.
> Хочешь не хочешь, а for и «управляющая переменная» обязательны для
> цикла.  Даже когда переменная никак не нужна и нигде не используется.
> Поэтому написал, что оператор цикла в Алголе-60 единственный.
> 
> А в Алголе-68 не так: там никакая часть не обязательна.  Можно
> счетчик использовать, можно и условие, но все на выбор.
> 
> (Еще более это развито в ПЛ/1 — в нем голова кружится от возможностей
> написать цикл, как впрочем и почти все остальное.  Цикл ПЛ/1 скопирован
> в REXX, который и ныне здравствует.)
> 
>> Впрочем, и польза от разумной структурности тоже вполне обоснована
> 
> Конечно, это само собой, никто не спорит.
> Проблема в том, что принято только пользу подчеркивать, а о вреде
> умалкивают.  Ниже приведу пример в этом духе.
> 
>> Читал как-то отечественную книжку 80-х годов про Симулу-67. Редкий метод в 
>> ней обходился без goto
> 
> Если и была такая книжка, не думаю что она показательна в данном
> отношении.  Книг по программированию на русском у меня много, а
> покупал их как раз в это время.  (Тогда у нас их продавали в большом
> количестве, очень недорого, и у меня накопилась библиотека приличного
> размера.)  Но злоупотребление goto нигде не встречал.
> 
>> Под флагом и по причине борьбы за эффективность в программировании
>> совершено больше преступлений, чем по всем остальным причинам вмести
>> взятын. Включая непроходимую тупость.
> 
>> … в конце 70-х Владимир Леонидович Топунов учил что, если предполагаемый 
>> эффект от оптимизации меньше 10%, то не следует даже браться...
> 
> Роджер Хюи, автор (совместно с К.Айверсоном) и главный реализатор
> языка J (наследника APL) утверждает, что никакую оптимизацию не стоит
> делать, если приведет к улучшению не больше чем в два раза!
> 
> Но!  Под оптимизацией можно понимать разные вещи.  Меня в этой
> дискуссии мотивирует не оптимизация в смысле повышения быстродействия,
> а экономия.  Не вводить лишнее, не повторять действия, расставить
> нужное где ему лучше быть.  Организовать программу из таких
> соображений, а не из соображений придерживания к неясно чем полезным
> на практике правилам.
> 
> Приведу пример: процедура проталкивания в пирамиду.  У меня она
> получается так:
> 
> void sift(T a[], unsigned n, unsigned p) {
>  unsigned j;
>  T x = a[p];
>  for (;;) {
>if (j=2*p+1, j+1if (j>=n || a[j]<=x)  break;
>a[p] = a[j];  p = j;
>  }
>  a[p] = x;
> }
> 
> Как во многих других случаях, цикл естественнее всего пишется с
> выходом из середины тела.
> 
> А это вариант Н.Вирта из его известной книги — текст то ли на Модуле,
> то ли на Обероне:
> 
> PROCEDURE sift(L, R: INTEGER);
>  VAR i, j: INTEGER; x: Item;
> BEGIN i := L; j := 2*i+1; x := a[i];
>  IF (j < R) & (a[j] < a[j+1]) THEN j := j+1 END;
>  WHILE (j <= R) & (x < a[j]) DO
>a[i] := a[j]; i := j; j := 2*j+1;
>IF (j < R) & (a[j] < a[j+1]) THEN j := j+1 END
>  END;
>  a[i] := x
> END sift;
> 
> Есть различия несущественные, но главная в моем понимании проблема
> здесь — дублирование строк 4 и 7, только из желания избежать выхода
> из тела цикла, быть «структурным».  Не знаю чем это может быть
> полезным, для меня оно выглядит нелепо.  Хоть и из уст великих.
> В самом первом варианте книги (на Паскале) Вирт использовал goto для
> выхода из цикла и дублирования действий нет.  Потом «эволюировал».


Re: Рефал умер?

2017-08-09 Пенетрантность swi
  Добрый день!Лет семь назад встретил цитаты из великих (не помню кто и цитата попамяти, не точный текст): Под флагом и по причине борьбы за эффективность в программировании совершено больше преступлений, чем по всем остальным причинам вмести взятын. Включая непроходимую тупость.С тей пор как прочитал, как и отрезало ;-)Нас - "пацанов" в конце 70-х Владимир Леонидович Топунов учил что, если предполагаемый эффект от оптимизации меньше 10%, то не следует даже браться... ЗЫ Правда, я и в одноразовых программах (на рефале) стараюсь расставлять предложения так, чтобы было меньше "проверок" (у меня оптимизации почти нет, Александр не даст соврать ;) )

Re: Рефал умер?

2017-07-30 Пенетрантность swi
 код, тем лучше!!! А значит короткие односимвольные имена переменных предпочтительнее длинных-мнемонических. Чем меньше строк - тем нагляднее»Я использую как редактор Far и Vim. Причём исторически начинал с Far’а (и мне не влом было набирать длинные имена переменных без автодополнения).С тем, что чем компактнее исходный код, тем лучше, я не согласен. Я считаю, что чем легче читается и воспринимается, тем нагляднее. Например, что делает функция F2E_K? Для ответа на этот вопрос нужно прочитать её код, а также прочитать то, как она вызывается из других функций. А что делает функция PairResultBrackets? Имя нам подсказывает, что она спаривает скобки в результатном выражении. А значит, чтобы понять, что происходит в месте её вызова, тупо не надо читать другое место. Аналогична история с переменными. Что хранится в переменной T3? Нужно посмотреть, где эта функция вызывается и что по этому параметру передаёт. А что хранится в t.NextToken? Следующий токен. «2) спецификацииВ новых версиях есть внутренние функции. Безусловно, с их помощью можно спрограммировать и спецификации рефала/2 и еще много чего! НО!!!Но они затуманивают алгоритм выполнения программы!!!На самом деле, когда пишешь программу, каждый раз для себя доказываешь (теорему), что тот код, который пишешь, действительно решает ту задачу, которую надо решить...»Вообще-то вложенные функции не могут заменить спецификации Рефала-2. Заменить спецификации можно только условиями Рефала-5 или более общей конструкцией — действиями с неуспехом Рефала-6, Рефала-Плюс, Рефала-7.То, что они затуманивают выполнение программы, я не согласен. Они наоборот её проясняют. Например, функция Map, отображающая одну последовательность термов в другую:Map SF TN ET = kSF TN. k/Map/ SF ET.    SF   =PlusOnes EX = k/Map/ /P1/ EX.UnBracket EX = k/Map/ /UnBracket1/ EX.UnBracket1 (EX) = EXPutLines EX = k/Map/ /PutLine/ EX.PutLine (EX) = k/P/ EX.Здесь для примера функция PlusOnes прибавляет к каждому терму единицу, UnBracket, принимая список скобочных термов, все их разворачивает, PutLines распечатывает последовательность строк. Преимущество функции Map в том, что не надо описывать обработку всей последовательности — достаточно описать обработку одного элемента и сказать «сделай со всеми так».Вообще, вложенные функции сейчас присутствуют практически во всех распространённых языках общего назначения: Си++ (с 2011 года), Java, C#, _javascript_, Python, Ruby, Scala, Kotlin, Rust, Go. Относительно Visual Basic не в курсе, не слежу за ним. И люди этим активно пользуются. Вложенные функции стали такой же общей практикой, что и ООП.  «3) привычкаКогда я смотрю на метакод B - я его читаю.Когда ж "современный" синтаксис - приходится переводить... как с другого языка...Особенно, когда несколько встроенных функций (как, например, в "декартовом произведении" п. 3.3.5.3 изhttps://github.com/bmstu-iu9/simple-refal/blob/master/doc/manul.pdf )Безусловно - красиво!Но писать, думаю, быстрее проще, да и в случае возникновения ошибок, мне кажется, легче разбираться с простым кодом.»Исключительно вопрос привычки и практики. «4) возможность программной оптимизации не обязательна!»Простой Рефал самоприменяется 10 секунд, поэтому оптимизация не лишняя. Кроме того, это очень интересно (писал уже выше). From: s...@cnshb.ru [mailto:s...@cnshb.ru]Sent: Thursday, July 27, 2017 6:48 PMTo: refal@botik.ruSubject: Re: Рефал умер? Здравствуйте, Александр, здравствуйте господа!Посмотрел на Ваш, Александр, Простой Рефал...Вы меня извините, господа, я конечно понимаю: унификация, суперкомпиляция, имена, отражающие суть...Безусловно, меня гнетет груз привычки к рефалу/2, с которым я познакомился в конце 70-х...Но использовать рефал в производственных условиях я начал с 1998-го, когда для ПК написал собственную версию.Правда, я еще раньше для Turbo-C написал функцию "рефальское отождествление"...Т.е. уже более 19 лет использования в практических задачах.За что я его (рефал) ценю?0) удобно производить символьные преобразования1) наглядностьЯ использую как редактор far, раньше был Norton Commander.Основной код программы на рефале (в метакоде B), которым занимаюсь при программировании (та часть,которую сейчас пишу), обычно помещается на экране (в окне редактора).Не нужно никуда листать, смотреть и т.п.В этом смысле, чем компактнее исходный код, тем лучше!!! А значит короткие односимвольные имена переменных предпочтительнее длинных-мнемонических. Чем меньше строк - тем нагляднее2) спецификацииВ новых версиях есть внутренние функции. Безусловно, с их помощью можно спрограммировать и спецификации рефала/2 и еще много чего! НО!!!Но они затуманивают алгоритм выполнения программы!!!На самом деле, когда пишешь программу, каждый раз для себя доказываешь (теорему), что тот код, который пишешь, действительно решает ту задачу, которую надо решить...3) привычкаКогда я смотрю на метакод B - я его читаю.Когда ж "современный" синтаксис - приходится переводить... как с другого языка...Особенно, когд

RE: Рефал умер?

2017-07-29 Пенетрантность Александр Коновалов
. Заменить 
спецификации можно только условиями Рефала-5 или более общей конструкцией — 
действиями с неуспехом Рефала-6, Рефала-Плюс, Рефала-7.

То, что они затуманивают выполнение программы, я не согласен. Они наоборот её 
проясняют. Например, функция Map, отображающая одну последовательность термов в 
другую:

Map SF TN ET = kSF TN. k/Map/ SF ET.
SF   =
PlusOnes EX = k/Map/ /P1/ EX.
UnBracket EX = k/Map/ /UnBracket1/ EX.
UnBracket1 (EX) = EX
PutLines EX = k/Map/ /PutLine/ EX.

PutLine (EX) = k/P/ EX.

Здесь для примера функция PlusOnes прибавляет к каждому терму единицу, 
UnBracket, принимая список скобочных термов, все их разворачивает, PutLines 
распечатывает последовательность строк. Преимущество функции Map в том, что не 
надо описывать обработку всей последовательности — достаточно описать обработку 
одного элемента и сказать «сделай со всеми так».

Вообще, вложенные функции сейчас присутствуют практически во всех 
распространённых языках общего назначения: Си++ (с 2011 года), Java, C#, 
JavaScript, Python, Ruby, Scala, Kotlin, Rust, Go. Относительно Visual Basic не 
в курсе, не слежу за ним. И люди этим активно пользуются. Вложенные функции 
стали такой же общей практикой, что и ООП. 

 

«3) привычка

Когда я смотрю на метакод B - я его читаю.

Когда ж "современный" синтаксис - приходится переводить... как с другого 
языка...

Особенно, когда несколько встроенных функций (как, например, в "декартовом 
произведении" п. 3.3.5.3 из

https://github.com/bmstu-iu9/simple-refal/blob/master/doc/manul.pdf )

Безусловно - красиво!

Но писать, думаю, быстрее проще, да и в случае возникновения ошибок, мне 
кажется, легче разбираться с простым кодом.»

Исключительно вопрос привычки и практики.

 

«4) возможность программной оптимизации не обязательна!»

Простой Рефал самоприменяется 10 секунд, поэтому оптимизация не лишняя. Кроме 
того, это очень интересно (писал уже выше).

 

From: s...@cnshb.ru [mailto:s...@cnshb.ru] 
Sent: Thursday, July 27, 2017 6:48 PM
To: refal@botik.ru
Subject: Re: Рефал умер?

 

Здравствуйте, Александр, здравствуйте господа!
Посмотрел на Ваш, Александр, Простой Рефал...
Вы меня извините, господа, я конечно понимаю: унификация, суперкомпиляция, 
имена, отражающие суть...
Безусловно, меня гнетет груз привычки к рефалу/2, с которым я познакомился в 
конце 70-х...
Но использовать рефал в производственных условиях я начал с 1998-го, когда для 
ПК написал собственную версию.
Правда, я еще раньше для Turbo-C написал функцию "рефальское отождествление"...
Т.е. уже более 19 лет использования в практических задачах.
За что я его (рефал) ценю?

0) удобно производить символьные преобразования
1) наглядность
Я использую как редактор far, раньше был Norton Commander.
Основной код программы на рефале (в метакоде B), которым занимаюсь при 
программировании (та часть,которую сейчас пишу), обычно помещается на экране (в 
окне редактора).
Не нужно никуда листать, смотреть и т.п.
В этом смысле, чем компактнее исходный код, тем лучше!!! А значит короткие 
односимвольные имена переменных предпочтительнее длинных-мнемонических. Чем 
меньше строк - тем нагляднее

2) спецификации
В новых версиях есть внутренние функции. Безусловно, с их помощью можно 
спрограммировать и спецификации рефала/2 и еще много чего! НО!!!
Но они затуманивают алгоритм выполнения программы!!!
На самом деле, когда пишешь программу, каждый раз для себя доказываешь 
(теорему), что тот код, который пишешь, действительно решает ту задачу, которую 
надо решить...
3) привычка
Когда я смотрю на метакод B - я его читаю.
Когда ж "современный" синтаксис - приходится переводить... как с другого 
языка...
Особенно, когда несколько встроенных функций (как, например, в "декартовом 
произведении" п. 3.3.5.3 из
https://github.com/bmstu-iu9/simple-refal/blob/master/doc/manul.pdf )
Безусловно - красиво!
Но писать, думаю, быстрее проще, да и в случае возникновения ошибок, мне 
кажется, легче разбираться с простым кодом.
4) возможность программной оптимизации не обязательна!
Мне кажется, сейчас, когда ПК становятся всё быстрее и мощнее, вопрос 
производительности так остро не стоит!
(тем более, что вообще решили обратиться к рефалу ;) )

Значительно важнее простота доказательства, что это именно то, что нужно!

 

Рефал - не простой язык. Не привычный.
Я после фортрана, PL/1 и ассемблера ЕС ЭВМ долго к рефалу привыкал, а после 
того как уже свободно "читал" программы, "писать" начал только через полгода.

 

Может быть новых потенциальных программистов рефала отпугивает излишняя 
"заумность" последних "научных" версий (5, 6, + и т.п.) ???

 

ЗЫ а после рефала СНОБОЛ-4 пошел "на ура!"... но не прижился

 

Василий
http://swi.16mb.com/

26.07.2017, 21:47, "Александр Коновалов" <a.v.konovalo...@mail.ru 
<mailto:a.v.konovalo...@mail.ru> >:

Здравствуйте, Василий!

 

Да, Рефал жив его пользователями. Но, если уйдёт поко

Re: Рефал умер?

2017-07-27 Пенетрантность swi
Здравствуйте, Александр, здравствуйте господа!Посмотрел на Ваш, Александр, Простой Рефал...Вы меня извините, господа, я конечно понимаю: унификация, суперкомпиляция, имена, отражающие суть...Безусловно, меня гнетет груз привычки к рефалу/2, с которым я познакомился в конце 70-х...Но использовать рефал в производственных условиях я начал с 1998-го, когда для ПК написал собственную версию.Правда, я еще раньше для Turbo-C написал функцию "рефальское отождествление"...Т.е. уже более 19 лет использования в практических задачах.За что я его (рефал) ценю?0) удобно производить символьные преобразования1) наглядностьЯ использую как редактор far, раньше был Norton Commander.Основной код программы на рефале (в метакоде B), которым занимаюсь при программировании (та часть,которую сейчас пишу), обычно помещается на экране (в окне редактора).Не нужно никуда листать, смотреть и т.п.В этом смысле, чем компактнее исходный код, тем лучше!!! А значит короткие односимвольные имена переменных предпочтительнее длинных-мнемонических. Чем меньше строк - тем нагляднее2) спецификацииВ новых версиях есть внутренние функции. Безусловно, с их помощью можно спрограммировать и спецификации рефала/2 и еще много чего! НО!!!Но они затуманивают алгоритм выполнения программы!!!На самом деле, когда пишешь программу, каждый раз для себя доказываешь (теорему), что тот код, который пишешь, действительно решает ту задачу, которую надо решить...3) привычкаКогда я смотрю на метакод B - я его читаю.Когда ж "современный" синтаксис - приходится переводить... как с другого языка...Особенно, когда несколько встроенных функций (как, например, в "декартовом произведении" п. 3.3.5.3 изhttps://github.com/bmstu-iu9/simple-refal/blob/master/doc/manul.pdf )Безусловно - красиво!Но писать, думаю, быстрее проще, да и в случае возникновения ошибок, мне кажется, легче разбираться с простым кодом.4) возможность программной оптимизации не обязательна!Мне кажется, сейчас, когда ПК становятся всё быстрее и мощнее, вопрос производительности так остро не стоит!(тем более, что вообще решили обратиться к рефалу ;) )Значительно важнее простота доказательства, что это именно то, что нужно! Рефал - не простой язык. Не привычный.Я после фортрана, PL/1 и ассемблера ЕС ЭВМ долго к рефалу привыкал, а после того как уже свободно "читал" программы, "писать" начал только через полгода. Может быть новых потенциальных программистов рефала отпугивает излишняя "заумность" последних "научных" версий (5, 6, + и т.п.) ??? ЗЫ а после рефала СНОБОЛ-4 пошел "на ура!"... но не прижился Василийhttp://swi.16mb.com/26.07.2017, 21:47, "Александр Коновалов" <a.v.konovalo...@mail.ru>:Здравствуйте, Василий! Да, Рефал жив его пользователями. Но, если уйдёт поколение пользователей, то и Рефал умрёт. Может я и ошибаюсь, но по моим наблюдениям поколение воспроизводится как-то слабо (если вообще воспроизводится).  Спасибо за ссылки. Я их пока поверхностно посмотрел, думаю, потом изучу внимательнее. А мне наоборот, проще воспринимать языки с «современным» синтаксисом: РЕФАЛ-5, Рефал-6, Рефал Плюс. А вот читать Рефал-2 я ещё не привык — глаза не привыкли к k/F/что-то. Вашу реализацию постараюсь посмотреть в свободное время (видел, что исходник целиком написан в одном файле REFAL.REF, а внутри сплошной метакод B). Кстати, студентов я пытаюсь привлекать к Рефалу. В частности, в моей реализации уже есть исходный код нескольких курсовых и дипломных проектов (в папке https://github.com/bmstu-iu9/simple-refal/tree/master/doc и её подпапках есть несколько записок по проектам, можно почитать). Но, к сожалению, их он не особо интересует (сдали и забыли). --Коновалов Александр Владимирович, преподавателькафедра ИУ9 «Теоретическая информатика и компьютерные технологии»МГТУ имени Н. Э. Баумана, Москва From: s...@cnshb.ru [mailto:s...@cnshb.ru]Sent: Wednesday, July 26, 2017 4:15 PMTo: refal@botik.ruSubject: Re: Рефал умер? Здравствуйте, господа!Большое спасибо, Аркадий, за развернутый ответ!Полностью с Вами согласен, что рефал жив его пользователями.Я в своей производственной и др. деятельности активно использую рефал. Правда, я задержался на рефале/2 (с метакодом B), и пользуюсь последнее время своей версией. В паре задач использовал рефал-5, но потом от него отказался, т.к. мне удобнее думать на 2-м, к которому давно привык...К сожалению мне не удалось научить рефалу ни своих сотрудников, ни даже своих детей :(Большую работу по пропаганде рефала проводил научивший меня рефалу Топунов В.Л., но его уже давно нет, и, мне кажется, после него пропаганда рефала в вузах резко сократилась...Хотя я бы считал, что изучение студентами-будущими программистами рефала пошло бы им только на пользу!!! может быть Вам будут интересны ссылки:http://www.cnshb.ru/vniitei/sw/refal/http://ito.edu.ru/1999/I/2/278.htmlhttp://sw710.narod.ru/For_ITO-2000.htm ЗЫ динамические ящики мне в практической деятельности ни разу не понадобились... Вас

RE: Рефал умер?

2017-07-26 Пенетрантность Александр Коновалов
Здравствуйте, Василий!

 

Да, Рефал жив его пользователями. Но, если уйдёт поколение пользователей, то и 
Рефал умрёт. Может я и ошибаюсь, но по моим наблюдениям поколение 
воспроизводится как-то слабо (если вообще воспроизводится). 

 

Спасибо за ссылки. Я их пока поверхностно посмотрел, думаю, потом изучу 
внимательнее. А мне наоборот, проще воспринимать языки с «современным» 
синтаксисом: РЕФАЛ-5, Рефал-6, Рефал Плюс. А вот читать Рефал-2 я ещё не привык 
— глаза не привыкли к k/F/что-то. Вашу реализацию постараюсь посмотреть в 
свободное время (видел, что исходник целиком написан в одном файле REFAL.REF, а 
внутри сплошной метакод B).

 

Кстати, студентов я пытаюсь привлекать к Рефалу. В частности, в моей реализации 
уже есть исходный код нескольких курсовых и дипломных проектов (в папке 
https://github.com/bmstu-iu9/simple-refal/tree/master/doc и её подпапках есть 
несколько записок по проектам, можно почитать). Но, к сожалению, их он не особо 
интересует (сдали и забыли).

 

--
Коновалов Александр Владимирович, преподаватель
кафедра ИУ9 «Теоретическая информатика и компьютерные технологии»
МГТУ имени Н. Э. Баумана, Москва

 

From: s...@cnshb.ru [mailto:s...@cnshb.ru] 
Sent: Wednesday, July 26, 2017 4:15 PM
To: refal@botik.ru
Subject: Re: Рефал умер?

 

Здравствуйте, господа!
Большое спасибо, Аркадий, за развернутый ответ!
Полностью с Вами согласен, что рефал жив его пользователями.
Я в своей производственной и др. деятельности активно использую рефал. Правда, 
я задержался на рефале/2 (с метакодом B), и пользуюсь последнее время своей 
версией. В паре задач использовал рефал-5, но потом от него отказался, т.к. мне 
удобнее думать на 2-м, к которому давно привык...

К сожалению мне не удалось научить рефалу ни своих сотрудников, ни даже своих 
детей :(
Большую работу по пропаганде рефала проводил научивший меня рефалу Топунов 
В.Л., но его уже давно нет, и, мне кажется, после него пропаганда рефала в 
вузах резко сократилась...

Хотя я бы считал, что изучение студентами-будущими программистами рефала пошло 
бы им только на пользу!!!

 

может быть Вам будут интересны ссылки:
http://www.cnshb.ru/vniitei/sw/refal/
http://ito.edu.ru/1999/I/2/278.html
http://sw710.narod.ru/For_ITO-2000.htm
 

ЗЫ динамические ящики мне в практической деятельности ни разу не понадобились...

 

Василий Стеллецкий
http://swi.16mb.com/

 

 

26.07.2017, 14:23, "Arkady Klimov" <arkady.kli...@gmail.com 
<mailto:arkady.kli...@gmail.com> >:

Здравствуйте, Александр!

 

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

 

Правда, уже сейчас можно высказать и возражение. Есть основания полагать, что 
Рефал создавался Турчиным именно как язык первого порядка, и в этом была 
интенция автора. И другие особенности языка также были с этой интенцией 
согласованы, как-то: выражения с двусторонним доступом, явная активация, 
концепция "поля зрения", динамическая типизация (отсутствие статической 
типизации). Смысл в том, что любой объект, значение переменной, может быть 
рассмотрено во всех деталях, записано на бумаге, и при этом все, что будет 
видно, и только оно, может использоваться в вычислениях. Функциональные объекты 
этим условиям не удовлетворяют, они эктенсиональны: функцию можно вызвать, но 
нельзя препарировать, рассмотреть ее устройство. Это надлежит делать на 
метауровне, когда одной программе доступен код другой. И насколько я понимаю, 
попытки вводить абстракции, функции высших порядков и т.п. в базовый язык 
встречали сопротивление Турчина. Рефал-5 -- это максимум того, что он был готов 
допустить. Многие дополнительные возможности Рефала Плюс он уже считал 
излишними, кажется, даже динамические ящики.

 

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

 

Что касается меня, как приложившего руку к созданию Рефала-6, могу только 
сказать, что в последние годы, уже лет 15, выступаю только как пользователь 
"своего" диалекта и пока вполне им доволен. Но это, конечно, не промышленное 
использование. Есть у Рефала-6 еще по-меньшей мере один активный пользователь - 
Игорь Щенков, и он время от времени выска

Re: Рефал умер?

2017-07-26 Пенетрантность swi
Здравствуйте, господа!Большое спасибо, Аркадий, за развернутый ответ!Полностью с Вами согласен, что рефал жив его пользователями.Я в своей производственной и др. деятельности активно использую рефал. Правда, я задержался на рефале/2 (с метакодом B), и пользуюсь последнее время своей версией. В паре задач использовал рефал-5, но потом от него отказался, т.к. мне удобнее думать на 2-м, к которому давно привык...К сожалению мне не удалось научить рефалу ни своих сотрудников, ни даже своих детей :(Большую работу по пропаганде рефала проводил научивший меня рефалу Топунов В.Л., но его уже давно нет, и, мне кажется, после него пропаганда рефала в вузах резко сократилась...Хотя я бы считал, что изучение студентами-будущими программистами рефала пошло бы им только на пользу!!! может быть Вам будут интересны ссылки:http://www.cnshb.ru/vniitei/sw/refal/http://ito.edu.ru/1999/I/2/278.htmlhttp://sw710.narod.ru/For_ITO-2000.htm ЗЫ динамические ящики мне в практической деятельности ни разу не понадобились... Василий Стеллецкийhttp://swi.16mb.com/  26.07.2017, 14:23, "Arkady Klimov" :Здравствуйте, Александр! Рефал жив людьми, которые им занимаются, пользуются и т.п., и вы своей деятельностью вносите свой вклад. Причем я считаю ваш проект в этом смысле очень ценным, поскольку в нем делается попытка привнести в Рефал функции высших порядков на более продвинутом уровне, чем это делается Рефалами прежними, а именно, с включением вложенных анонимных функций -- аналога лямбда-абстракции. Можно спорить, надо ли это, какой в этом "практический"смысл, но в любом случае такое исследование и ценно и поучительно. Я еще плохо знаю о ваших достижениях (только поверхностно посмотрел доки), но думаю, что на этом этапе было бы интересно и важно наработать множество примеров и техник с использованием этих новых средств, демонстрирующих их удобство и преимущество. Правда, уже сейчас можно высказать и возражение. Есть основания полагать, что Рефал создавался Турчиным именно как язык первого порядка, и в этом была интенция автора. И другие особенности языка также были с этой интенцией согласованы, как-то: выражения с двусторонним доступом, явная активация, концепция "поля зрения", динамическая типизация (отсутствие статической типизации). Смысл в том, что любой объект, значение переменной, может быть рассмотрено во всех деталях, записано на бумаге, и при этом все, что будет видно, и только оно, может использоваться в вычислениях. Функциональные объекты этим условиям не удовлетворяют, они эктенсиональны: функцию можно вызвать, но нельзя препарировать, рассмотреть ее устройство. Это надлежит делать на метауровне, когда одной программе доступен код другой. И насколько я понимаю, попытки вводить абстракции, функции высших порядков и т.п. в базовый язык встречали сопротивление Турчина. Рефал-5 -- это максимум того, что он был готов допустить. Многие дополнительные возможности Рефала Плюс он уже считал излишними, кажется, даже динамические ящики. Но конечно, это не значит, что последователи не вправе делать по-своему, с опорой на новые знания и опыт. И может быть, особенности Рефала дадут возможность по новому увидеть и понять функциональные объекты. Что касается меня, как приложившего руку к созданию Рефала-6, могу только сказать, что в последние годы, уже лет 15, выступаю только как пользователь "своего" диалекта и пока вполне им доволен. Но это, конечно, не промышленное использование. Есть у Рефала-6 еще по-меньшей мере один активный пользователь - Игорь Щенков, и он время от времени высказывает претензии. Но к сожалению сил на них активно откликаться сейчас у меня очень мало. Се ля ви. С уважением, Аркадий Климов,с.н.с. ИППМ РАН,+7(499)135-32-95+7(916)072-81-48 25 июля 2017 г., 15:33 пользователь Александр Коновалов  написал:В начале 2000-х годов язык Рефал ещё как-то развивался, выходили новые версии компиляторов: РЕФАЛ-5, Рефал-6, была некоторая активность на сайте http://wiki.botik.ru/Refaldevel/, был написан компилятор SCP4. Я читал старый архив рассылки refal@botik.ru, в нём тоже были обсуждения Рефала и не только (например, сравнивали его с Си++). Потом, практически синхронно со смертью Турчина, активность спала практически до нуля (архива рассылки refal-devel в сети не нашёл, судить не могу). В текущей рассылке (судя по новому архиву) в основном рекламируются конференции по метавычислениям, выкладываются сканы старых архивных материалов и Сергей Михайлович Абрамов поздравляет с Новым Годом. Я правильно понимаю ситуацию, что Рефал появился не от хорошей жизни: Турчину нужен был инструмент (формальный язык) для выражения идей метавычислений, суперкомпиляции, существовавшие тогда Фортран и Алгол для этого не подходили, а о Лиспе в СССР никто тогда не знал? И теперь, когда появились новые, современные функциональные языки программирования, для реализации идей суперкомпиляции стали применять уже их? Те же Юрий Климов и Илья Ключников свои суперкомпиляторы писали отнюдь не на Рефале. А язык