Zinger писал(а):
true-grue писал(а):
Манипуляторы Ваши, ув. chess, только ленивый еще не обругал. А Вы все сражаетесь с ветряными мельницами
+1
Да, блевонтина редкостная (пожалуй, я бы высказался значительно крепче, но у нас же не имиджборд).
Впрочем, я бы с удовольствием ещё послушал мантры этого унылого пассажира о том, что все кругом живут в иллюзии - это немало забавляет.
А давайте я Вам эти мантры пропою. Только не о том монстре что получился, а о изначальной идее откуда он родился и которая все еще является его составляющей.
А идея проста:
Очень часто в Форте приходится делать вподряд несколько операций над содержимым стека с одной единственной целью - вытащить из глубины стека на вершину стека одну или несколько ячеек для того, что-бы скормить их некоему слову. Обычно это выглядит а-ля так:
R> ROT DUP
Тут еще и стек возвратов использовался как временно хранилище(костыль) для некоего параметра который иначе из под вороха сверху накладенного очень весело было-бы доставать.
Смысл всех этих операций - из некоего текущего стекового кадра так перетасовать параметры, что-бы получить другой, требуемый здесь и сейчас. Т.е. к примеру надо сделать операцию над стеком единственный результат которой выглядит так
( a b c -- a b c a b ) или если вместо букв написать цифрами ( 1 2 3 -- 1 2 3 1 2 )
Исходное состояние стека записывается всегда в одном порядке который определяется исключительно числом элементов начального стекового кадра которые мы собрались переставлять. Поэтому если записать вместо 1 2 3 просто 3 понимая под этой цифрой только число начальных элементов суть сильно не изменится
( 3 -- 1 2 3 1 2 )
Так понятно записано? Понятно, что это записано изначальное желание - еще до того, как начать думать какими из имеющихся перестановок его можно сделать мы желаем получить имеенно такой результат => вытащить два числа из под вершины стека - типовой пример для операции сравнения по результатам которой надо что-то сделать с тремя оставшимися параметрами.
Это была призказка
... А теперь суть идеи -
а давайте вместо того, что-бы думать какими существующими перестановками сделать желаемое, запишем это желание сразу одним словом которое это желание и совершит.У chess-манипуляторов для выше приведенного примера выглядит буквально выбрасыванием всего лишнего:
3/12312
Надеюсь что означает такая запись и почему она именно такая понятно?
Над формой записи можно спорить, можно спорить о ее реализации, но эти 6 цифр являются простым, логичным, понятным и мощным инструментом работы со стеком. Я не прав?
ЗЫ. Ну а дальше chess понесло - он решил отказаться от "простой, логичный, понятный" сосредоточившись на "мощный". Результат, как говорится, на лице.