Александр Владимирович!
Вы безусловно правы! Про копилку в рефал-5 я подзабыл.
Конечно, копилка функционально вполне заменяет статические ящики. Только вопрос наглядности и эффективности...
Вы безусловно правы! Про копилку в рефал-5 я подзабыл.
Конечно, копилка функционально вполне заменяет статические ящики. Только вопрос наглядности и эффективности...
Ну ладно, раз есть Копилка, рефал-5 - тоже нормальный рефал, на нем тоже можно писать. Уговорили ;)
--
С уважением,
С уважением,
Василий
----------------
13.11.2024, 19:53, "Александр Коновалов a.v.konovalov87_AT_mail.ru" <[email protected]>:
Кому: [email protected] ([email protected]);
Тема: Синтаксис словарей в Рефале!;
Василий Игоревич и Сергей Юрьевич!В Рефале-5 нет вообще никаких ящиков, ни статических, ни динамических. Но есть копилка — глобальный словарь стеков объектных выражений.Использование статических ящиков или копилки как словаря глобальных переменных я не одобряю из-за того, что затрудняется понимание программы — по вызову функции невозможно понять, с какими данными она работает, т.к. она может брать данные не только из аргументов, но и из глобального состояния, и, соответственно, результат не возвращать, а тоже куда-то прятать.При этом статические ящики лучше копилки тем, что они описываются явно: есть определение статического ящика (или имя в списке extern), значит, есть некоторое глобальное состояние. В случае же копилки, чтобы понять, какими переменными пользуется программа, нужно проанализировать все вызовы Br, Dg, Rp и Cp.Динамические ящики представляют некоторый компромисс между чисто функциональным стилем и императивным — по вызову функции видно, к каким ящикам она обращается.В защиту копилки могу сказать, что при определённой дисциплине ею можно пользоваться как локальными переменными: до выполнения какого-то алгоритма положить на вершины соответствующих стеков (Br) начальные значения, в самом алгоритме для работы с ними использовать только Cp для чтения и Rp для присваивания, после завершения алгоритма результирующие значения удалить прочтя (или прочитать удаля) при помощи Dg. Но я не видел программ, где так поступают.Сам я предпочитаю не пользоваться глобальным изменяемым состоянием, как и Сергей Юрьевич. А динамических ящиков в Рефале-5λ нет.С уважением,Александр Коновалов
