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


Глава 5. Разработка: элементы Форт-стиля - часть 3


Рис.5-1. Пример загрузочного блока.

Блок # 1 0 \ QTF+ Загрузочный Блок 07/09/83 1 : RELEASE# ." 2.01" ; 2 9 LOAD \ инструментарий компилятора, примитивы языка 3 12 LOAD \ видео-примитивы 4 21 LOAD \ редактор 5 39 LOAD \ отображение строки 6 48 LOAD \ форматтер 7 69 LOAD \ окна 8 81 LOAD \ предопределения 9 90 LOAD \ обрамление 10 96 LOAD \ надписи, рисунки, таблицы 11 102 LOAD \ генератор оглавления

В блоке загрузки программы говорится о том, где найти все ее главы. Так, если Вам захочется посмотреть на программы для обрамления, можете найти их в секции, начинающейся с блока 90.

Каждый из блоков загрузки главы, в свою очередь, загружает все блоки, входящие в эту главу. Мы вкратце изучим некоторые форматы блоков загрузки глав.

Первый выигрыш от такой иерархической схемы состоит в том, что можно загружать любой участок или любой блок поодиночке, без необходимости компиляции всей задачи. Модульность исходного текста является одной из причин скорости Фортовского цикла редактирования, загрузки и проверки (необходимых для итеративного подхода). Как и страницы книги, каждый из блоков может быть доступен индивидуально и быстро. То есть имеет место "произвольный доступ" к управлению исходным текстом.

Можно также заменять любой пассаж кода новой, испытанной версией с помощью простой замены чисел в блоке загрузки. Нет нужды в передвижении протяженных отрезков исходного текста внутри файла.

В маленьких задачах может не быть таких вещей, как главы. Блок управления загрузкой задачи будет напрямую загружать все лексиконы. В то же время в более крупных задачах дополнительный уровень иерархии позволяет улучшить управляемость программы.

Блок должен быть либо загрузочным, либо содержать программу, но не быть смешанным. Избегайте внедрения команд LOAD и THRU в середину блока с определениями только потому, что Вам "что-то нужно" или поскольку у Вас "не хватает места".

КОМАНДЫ ОБХОДА (SKIP).

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


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