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


         

Возможность присваивания имени является обязательной


Возможность присваивания имени является обязательной частью декомпозиции. Естественно, Вы должны глубоко понимать идею.
----------------------------------------------------------------
Сравните такой взгляд на вещи с критериями для декомпозиции модуля, на защиту которых становится структурное проектирование (глава 1). При таком подходе модуль должен был бы проявлять "функциональную связность", которая может меняться при описании его функции единственным и не составным `предложением`. "Атом" Форта - `имя` - детализирован на порядок лучше.
------------------------------------------------------------ СОВЕТ Делайте факторизацию определений так, чтобы скрыть детали, которые мгут измениться. ------------------------------------------------------------
Важность упрятывания информации мы уже видели в предыдущих главах, особенно в отношении предварительного проектирования. Полезно вспомнить об этом критерии и на этапе разработки.
Вот очень короткое определение, которое только то и делает, что упрятывает информацию:
: >BODY ( acf -- apf ) 2+ ;
Это определение позволяет превращать адрес поля кода (acf) в адрес поля параметров (apf) вне зависимости от действительного строения словарной статьи. Если бы Вы использовали 2+ вместо слова >BODY, то потеряли бы переносимость в случае, если когда-либо перешли бы на Форт-систему, в которой заголовки отделены от тел определений. (Это - одно из слов набора, предложенного Кимом Харрисом и включенного в список экспериментальных расширений в стандарт Форт-83 [3].)
А вот группа определений, которую можно было бы использовать при написании редактора:
: ЭКРАН ( -- а) SCR @ BLOCK ; : КУРСОР ( -- а) R# ; : НА ( -- а) ЭКРАН КУРСОР @ + ;
Эти слова могут послужить основой для вычислений всех адресов, потребных для работы с текстом. Их использование полностью устраняет зависимость Ваших алгоритмов редактирования от Форт-блоков.
Что же в этом хорошего? Если бы Вы решили (в процессе развития) создать буфер редактирования для предохранения разрушения блока при ошибках пользователя, то Вам достаточно было бы переопределить пару этих слов, может быть, вот так:

Содержание  Назад  Вперед