RE: Запахи кода и антипаттерны в Рефале

2020-12-14 Пенетрантность Александр Коновалов a . v . konovalov87_AT_mail . ru
Доброй ночи, Николай! Сквозной просмотр был у Турчина в учебнике по Рефалу-5: Глава 3.

RE: Запахи кода и антипаттерны в Рефале

2020-12-14 Пенетрантность Александр Коновалов a . v . konovalov87_AT_mail . ru
Доброй ночи, Аркадий! Спасибо за пояснение про намерения Турчина! Это действительно интересно. На самом деле, решение Enum e1 = k/EndEnum/k/DoEnum/e1 /1/.. DoEnum s1 e2 sN = sN k/DoEnum/ e2 k/P1/sN.. (e1)e2 sN = k/DoEnum-Wrap/ (k/DoEnum/ e1 sN.) e2. sN = sN DoEnum-Wrap (e1 sN) e2 =

Second call for papers. VPT 20-21 - International Workshops on Verification and Program Transformation

2020-12-14 Пенетрантность Andrei P. Nemytykh
[Apologies for multiple copies] *** SECOND CALL FOR PAPERS Ninth International Workshop on Verification and Program Transformation Devoted to the achievements of the research career

AW: Запахи кода и антипаттерны в Рефале

2020-12-14 Пенетрантность nikolai . kondratiev_AT_gmail . com
Я вспоминаю, что Турчин был очень доволен тем, что нашел алгоритм СПАРИВАНИЯ СКОБОК, работающий линейное время, а сквозной просмотр появился как вариация на ту же тему. Мне кажется, что сам сквозной просмотр он не слишком пропагандировал. Von: Arkady Klimov arkady.klimov_AT_gmail.com

Re: Запахи кода и антипаттерны в Рефале

2020-12-14 Пенетрантность Arkady Klimov arkady . klimov_AT_gmail . com
Я тоже начал было писать про "настоящее выворачивание", но Александр меня опередил. Да, это оно самое. Мне такой стиль не нравится, и сам я так не пишу. Возможно, потому, что Рефал-6 позволяет не экономить на копированиях, и я предпочитаю рекурсивный стиль. Но хочу высказаться в защиту этой формы,

RE: Запахи кода и антипаттерны в Рефале

2020-12-14 Пенетрантность Александр Коновалов a . v . konovalov87_AT_mail . ru
Василий, не надо пошаговую прокрутку. Я неправильно посчитал скобки. Во входной строке их не 4, а 3, поэтому всё сходится: 3+1=4. From: Василий Стеллецкий swi_AT_cnshb.ru Sent: Monday, December 14, 2020 4:58 PM To: refal@botik.ru Subject: Re: Запахи кода и антипаттерны в Рефале

Re: Запахи кода и антипаттерны в Рефале

2020-12-14 Пенетрантность Василий Стеллецкий swi_AT_cnshb . ru
Александр.Действительно.Еще раз, Большое спасибо.PS Если хотите, могу прислать пошаговую прокрутку обоих вариантов... -- С уважением,-- Василий Стеллецкийmailto:s...@cnshb.ru  mailto:sw...@narod.ru   14.12.2020, 16:38, "Александр Коновалов a.v.konovalov87_AT_mail.ru" :Василий!Разница тут

RE: Запахи кода и антипаттерны в Рефале

2020-12-14 Пенетрантность Александр Коновалов a . v . konovalov87_AT_mail . ru
Василий! Разница тут принципиальная. В первом варианте стек был системный, программист писал рекурсивную функцию, явно со стеком не манипулировал. Поскольку программист за стек не отвечает, сломаться стек не может. Во втором случае — стеком явно управляет программист. И он может ошибиться,

Re: Запахи кода и антипаттерны в Рефале

2020-12-14 Пенетрантность Василий Стеллецкий swi_AT_cnshb . ru
Александр!Большое спасибо за подробный рассказ!Но, то что в примере применили Вы - тоже самое: Справа стек.Только просмотренную часть Вы не собирали в левой скобке, а сразу выводили за пределы функции...Точнее стек получался из вызовов DoEnum-Wrap и скобок наизнанку ...Еще раз, Большое

RE: Запахи кода и антипаттерны в Рефале

2020-12-14 Пенетрантность Александр Коновалов a . v . konovalov87_AT_mail . ru
Василий! Выворачивание скобок, оно же сквозной просмотр, — это другое. Это использование стека для представления незакрытых скобок. Например, так: Enum e1 = k/DoEnum/ /0/ ('$') e1 '$'. * Формат: k/DoEnum/ sN (tL eS) eU tR * eS — просканированная часть * eU — непросканированная часть * tL

Re: Запахи кода и антипаттерны в Рефале

2020-12-14 Пенетрантность Василий Стеллецкий swi_AT_cnshb . ru
Добрый день, Александр!Да, шагов поменьше!a =/0/k/Enum/ 'abc' (('de') 'f' ('gh') 'ij') 'k'.Enum e1 = k/EndEnum/k/DoEnum/e1 /1/..DoEnum s1 e2 sN = sN k/DoEnum/ e2 k/P1/sN..      (e1)e2 sN = k/DoEnum-Wrap/ k/DoEnum/ e1 sN. (e2).      sN = sNDoEnum-Wrap e1 sN (e2) = (e1) k/DoEnum/ e2 sN.EndEnum e1 sN

RE: Запахи кода и антипаттерны в Рефале

2020-12-14 Пенетрантность Александр Коновалов a . v . konovalov87_AT_mail . ru
Добрый день, Василий! А если мы пишем для многопоточного Рефала, то статический ящик или копилка не подойдёт. Нужно использовать или динамический ящик, или передавать номер через параметр. Получится как-то так: Enum e1 = k/DoEnum/e1 /0/. DoEnum s1 e2 sN = sN k/DoEnum/ e2 k/P1/sN..

RE: Запахи кода и антипаттерны в Рефале

2020-12-14 Пенетрантность Александр Коновалов a . v . konovalov87_AT_mail . ru
Добрый день, Андрей! «Не согласен! Ещё как имеет. Нельзя не думать об эффективности, выбирая шаблоны программирования, особенно когда речь не о коэффициенте, а об уменьшении сложности, скажем с квадратичной до линейной.» А где возникает квадратичная сложность при сквозном обходе выражений

Re: Запахи кода и антипаттерны в Рефале

2020-12-14 Пенетрантность Василий Стеллецкий swi_AT_cnshb . ru
Добрый день всем!Я про задачку...Ну, на мой взгляд не просто для понимания...На других диалектах Рефала - да пожалуйста!В этой задаче удобно использовать Ящики или Копилку.Например с копилкой:a =/0/k/Enum/ 'abc' (('de') 'f' ('gh') 'ij') 'k'.Enum s1e2=k/Enum1/k/ВК/'n'..k/Enum/e2.     

Re: Запахи кода и антипаттерны в Рефале

2020-12-14 Пенетрантность Andrei Klimov andrei_AT_klimov . net
пн, 14 дек. 2020 г., 10:46 Александр Коновалов a.v.konovalov87_AT_mail.ru < refal@botik.ru>: Доброе утро всем! > 1. Выворачивание скобок наизнанку, для организации прохода по выражению. К представлению объектных выражений этот приём (антиприём) не имеет отношение. Не согласен! Ещё как имеет.