Василий Игоревич и Сергей Юрьевич!

В Рефале-5 нет вообще никаких ящиков, ни статических, ни динамических. Но есть 
копилка — глобальный словарь стеков объектных выражений.
Использование статических ящиков или копилки как словаря глобальных переменных 
я не одобряю из-за того, что затрудняется понимание программы — по вызову 
функции невозможно понять, с какими данными она работает, т.к. она может брать 
данные не только из аргументов, но и из глобального состояния, и, 
соответственно, результат не возвращать, а тоже куда-то прятать.
При этом статические ящики лучше копилки тем, что они описываются явно: есть 
определение статического ящика (или имя в списке extern), значит, есть 
некоторое глобальное состояние. В случае же копилки, чтобы понять, какими 
переменными пользуется программа, нужно проанализировать все вызовы Br, Dg, Rp 
и Cp.
Динамические ящики представляют некоторый компромисс между чисто функциональным 
стилем и императивным — по вызову функции видно, к каким ящикам она обращается.
В защиту копилки могу сказать, что при определённой дисциплине ею можно 
пользоваться как локальными переменными: до выполнения какого-то алгоритма 
положить на вершины соответствующих стеков (Br) начальные значения, в самом 
алгоритме для работы с ними использовать только Cp для чтения и Rp для 
присваивания, после завершения алгоритма результирующие значения удалить прочтя 
(или прочитать удаля) при помощи Dg. Но я не видел программ, где так поступают.
Сам я предпочитаю не пользоваться глобальным изменяемым состоянием, как и 
Сергей Юрьевич. А динамических ящиков в Рефале-5λ нет.

С уважением,
Александр Коновалов
  • Re:... Стеллецкий Василий sw710_AT_yandex . ru
    • ... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
  • RE:... Александр Коновалов a . v . konovalov87_AT_mail . ru
    • ... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
      • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
        • ... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
          • ... Стеллецкий Василий sw710_AT_yandex . ru
            • ... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
              • ... Стеллецкий Василий sw710_AT_yandex . ru
          • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
            • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
              • ... Стеллецкий Василий sw710_AT_yandex . ru
            • ... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
              • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
              • ... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
              • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
              • ... Стеллецкий Василий sw710_AT_yandex . ru
              • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
              • ... Стеллецкий Василий sw710_AT_yandex . ru
              • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
              • ... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com

Ответить