Королев Виктор пишет:
> Заметил некоторую нелогичность сообщений об ошибке в SPF при компиляции
> условий IF THEN, когда лишняя THEN выдается сообщение: "-2007 Conditionals
> not paired", но когда не хватает THEN ничего не выдает и компилирует как ни
> в чем не бывало, только мусорит стек. Было бы проще найти подобную ошибку в
> сложных словах со множеством вложенных IF THEN, если бы выдавалось сообщение
> когда и не хватает THEN.
1. Добавить в определение нового слова (в слова : и ; ) проверку на
сохранение глубины стека вроде несложно. Ну может еще во всякие LITERALы
придется. Но в принципе это легче контролировать самостоятельно, не
раздувая компилятор. Поставил "DEPTH . CR" в начале и в конце модуля,
сравнил. (Кстати, в определении модуля, в слова MODULE: ;MODULE такая
проверка бы гораздо лучше вошла, как мне кажется. Модули вроде нечасто
стек двигают. И Warning какой-нибудь выводить, если что. Может
разработчики вставят?)
2. Из-за особой настраиваемости компилятора на форте гораздо больше
стилей программирования, чем в классических C/Pascal и иже с ними. Но
такие особенности форта, как:
- замена операций с переменными операциями со стеком,
- передача параметров в процедуры этим же стеком,
- чрезвычайно малая длина текста служебных конструкций для определения
нового слова,
- возможность манипуляций со словарями,
(наверное еще можно добавить) дают прекрасную возможность разбивать
большие определения с кучей вложенных условий и циклов на несколько
маленьких определений. Их гораздо проще отлаживать (если стековые
диаграммы не забывать писать :) ), понимать как посторонним, так и
самому себе через 1-2 месяца, повторно использовать в других
определениях. Есть еще чисто психологический аспект: сложная проблема
описывается в главном Слове одной осмысленной(!) фразой из
вспомогательных слов, разбивается на набор проблем поменьше, помнить
подробности которых одновременно(!) нет необходимости. Звучит это
наверное абстрактно, но если попробовать написать маленькую программку
сначала длинными определениями, а затем короткими, то разница будет
очевидна. Вроде бы автор форта для себя считал оптимальной длиной одного
определения 7 слов. Мой (пока что маленький) опыт приводит к такой же цифре.
К чему я это все писал. Мне ни разу не пришлось использовать вложенные
условия и вложенные циклы. Они у меня всегда расходились про разным
словам. У меня нечасто встречается даже условие в цикле.
P.S. В основном это вольное осмысливание книги Лео Броди Thinking Forth.
P.P.S. Господа местные! Подскажите пожалуйста, есть ли на этой рассылке
какие-нибудь особые правила, и где их прочитать.
------------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It is the best place to buy or sell services for
just about anything Open Source.
http://p.sf.net/sfu/Xq1LFB_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev