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




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


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

: ПРОВЕРКА ." ЭТО - СТРОКА. " ; - 244 -

В действительности эта версия слова `не` печатает строку. Она `компилирует` строку вместе с адресом другого определения, которое ее и печатает во время исполнения. Это тупая версия слова. Если Вы используете ее вне определения через двоеточие, оно бессмысленно скомпилирует строку, что совсем не соответствует тому, что ожидает получить новичок. Для решения этой проблемы FIG-Форт добавил проверку внутрь слова .", которая определяла, находится ли система в режиме компиляции или интерпретации. В первом случае оно компилировало строку и адрес примитива, во втром - печатало ее TYPEом. Слово ." стало состоящим из двух совершенно разных слов, поселенных вместе в одном определении внутри структуры IF THEN ELSE. Флаг, определяющий, компилирует или интерпретирует Форт, называется STATE. Поскольку ." зависит от STATE, то говорят, что это слово "STATE-зависимо". Команда `вела себя` одинаково внутри и снаружи определения через двоеточие. Эта двойственность оправдала себя для послеобеденных вводных курсов по Форту, но серьезный студент скоро понял, что это еще не все. Допустим, некая студентка желает написать новое слово по имени Я." (т.е. "яркая-точка-кавычка") для отображения выделенной яркостью строки символов на своем дисплее, с использованием в виде:

." Вставьте диск в " Я." левый " ." привод "

Она могла бы расчитывать определить это так:

: Я." ЯРКО ." НОРМА ;

то есть поменять видеорежим на повышенную яркость, напечатать строку, а затем восстановить режим на нормальный. Она пытается. И немедленно - иллюзия разрушена; обман разоблачен; определение не может работать.


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