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




Глава 8. Минимизация структур управления - часть 13


Оборотной стороной этой медали являются некоторые структуры данных, которые легче `связывать` вместе. Каждая запись указывает на последующую (или предыдущую). Последняя (или первая) запись в цепи может обозначаться нулем в своем поле связи. Раз у Вас есть поле связи, Вам все равно придется работать с его значением. Нет необходимости хранить счетчик того, сколько имеется записей. Если Вы всякий раз уменьшаете счетчик для выяснения момента окончания, то создаете себе этим лишнюю работу. (Такая технология применяется при создании словаря Форта как связного списка.)

ВЫЧИСЛЕНИЕ РЕЗУЛЬТАТОВ.

------------------------------------------------------------ СОВЕТ Не принимайте решений, но вычисляйте. ------------------------------------------------------------

Во многих случаях условные операторы применяются ошибочно тогда, когда различные варианты поведения обусловливаются численными различиями. Раз задействованы числа, то мы их можем посчитать. (См. в главе 4 раздел "Расчеты или структуры данных или логика".)

------------------------------------------------------------

СОВЕТ Используйте логические значения в качестве чисел. ------------------------------------------------------------ - 252 -

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

: S>D ( n -- d ) \ распространение знака на d DUP 0< IF -1 ELSE 0 THEN ;

(Задачей этого определения является превращение числа одинарной длины в число двойной длины. Это последнее представляется как два 16-разрядных числа на стеке, старшие разряды - на вершине. Превращение положительного целого заключается просто в добавлении нуля на стек для представления этой старшей части. Но преобразование отрицательного требует "расширения знака", то есть старшая часть должна быть представлена всеми единицами.) Вышеприведенное определение проверяет одинарное число на отрицательность.


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