Способ мышления-Форт


Глава 7. Работа с данными: стеки и состояния - часть 2


Сорви обертку и открой футляр. Вынь дар и выброси его.

В этой фразе конфуз возник оттого, что мы использовали "его" для ссылки одновременно на много вещей. Есть два решения по преодолению этой ошибки. Простейшее - это использование реального имени вместо "него":

Сорви обертку и открой футляр. Вынь дар и выброси `футляр`.

Или мы можем ввести слова "первый" и "последний". Однако лучшим решением было бы перепроектирование фразы:

Сорви обертку и открой подарок. Отбрось футляр.

Так и в Форте мы имеем те же наблюдения:

------------------------------------------------------------ СОВЕТ Упрощайте код за счет использования стека. Однако не уходите в стек слишком глубоко внутри отдельно взятого определения. Измените планировку, или, как к последней инстанции, обратитесь к именованной переменной. ------------------------------------------------------------

Некоторые новички в Форте смотрят на стек так же, как гимнаст глядит на трамплин: как на отличное место для того, чтобы на нем скакать. Однако стек предназначен для передачи данных, а не для акробатики. Так насколько глубоко это "слишком глубоко"? В общем случае три элемента на стеке - это максимум того, чем Вы можете - 205 -

управлять внутри одного определения. (Для арифметики двойной точности каждый "элемент" занимает две позиции в стеке, но они логично воспринимаются за один элемент такими операторами, как 2DUP, 2OVER и т.д.) В обычном лексиконе стековых операторов ROT - единственный, который дает доступ к третьему элементу на стеке. Кроме слов PICK и ROLL (которые мы позже прокомментируем), нет легкого способа добраться до того, что лежит ниже. Для продолжения наших аналогий можно предположить, что три элемента в стеке соответствуют трем русским (английским) местоимениям - "это" ("this"), "то" ("that") и "се" ("th'other").

ПЕРЕПРОЕКТИРОВАНИЕ.

Давайте вообразим ситуацию, когда неверно выбранный подход ведет к проблеме беспорядка на стеке.


Начало  Назад  Вперед