Hishnik писал(а):
mOleg писал(а):вы избавили поле флагов от 3-4 занимаемых бит :DА что, тут речь идет об экономии битов? :)) А почему бы тогда не добавить поля ARM-COMPATIBLE и WEB-READY? А программист пусть думает, как это обеспечивать. Даже простые и понятные флаги - это не только лишняя работа по их заполнению, это еще и проверка того, что везде в последующем коде работа с ними идет правильно. Допустим, я по каким-то причинам добавил слово, которое делает в принципе то же, что DOES>, но как-то иначе. Оно должно устанавливать флаг DAS? А почему (здесь независимо от ответа на первый вопрос)? А что будет, если оно сделает наоборот?
Ну, во-первых, перечислены зарезервированные номера атрибутов, что не обязывает их использовать - это раз;
второе, я не заставляю никого делать лишнюю работу - я лишь предложил удобную с моей точки зрения модель работы со словарными статьями и словарями;
третье, если вы создаете свой словарь в рамках заданной системы, вы должны предусмотреть стандартный интерфейс, который как минимум вместо атрибута будет возвращать ошибку "нет такого атрибута".
Hishnik писал(а):
То есть само определение словаря - не первое в словаре?
конечно,
собственно, словарь обычно определен внутри другого словаря, причем в форке они могут находится в различных адресных пространствах.
Hishnik писал(а):
Это как - сначала слова поместили куда-то, а потом заявили, что есть словарь?
нет, в форке сначала резервируется место в хранилище, которое связано с именем словаря, а лишь потом что-то туда добавляем. Правда, это не касается временно компилируемых определений вида
10 0 DO I , LOOP и т.п. которые после выполнения забываются(но и там сохраняется правило - сначала резервируем, потом сохраням)
Hishnik писал(а):
Размер определения - зачем? Что будет, если реальный размер не совпадает с установленным здесь? Как должно заполняться это поле и каков контроль за адекватностью помещенных сюда данных?
возможны проблемы, если потребуется переносить содержимое словарной статьи в другую область памяти. Если такая необходимость отсутствует, его можно не заполнять.
размер вычисляется автоматически с помощью ;CREATE которое завершает любое определение.
Контроля адекватности любых данных в форте отсутствует.
Hishnik писал(а):
Хорошо, что опциональное. То есть место под него все равно отведено
нет, оно зависит от опции в параметрах сборки, т.е. в содержимом options.f
Hishnik писал(а):
Уже появилось хэширование. Можно обойтись?
изначально было.
Обойтись можно. Вообще, устройство словаря в форке - это интимное дело самого словаря, важно соблюсти интерфейс 8)
Hishnik писал(а):
Счетчик фиксированной длины, а идентификатор - произвольной? :)
Именно.
собственно, опять это дело конкретного словаря ( в одном может быть так, в ином этак).
Hishnik писал(а):
То есть lfa не образуют цепной список, а указывают на свои cfa?
то есть код может храниться раздельно. А lfa - это основное поле, зная которое можно определить и имя слова, и предыдущее слово на треде, и предыдущее словов в родном словаре, и имя слова и любые атрибуты.
Hishnik писал(а):
Вот с этого следовало начать :) Таким образом, мы возвращаемся к вопросу необходимого минимума
Начал, с чего считал необходимым 8)
А необходимый минимум в каждом случае свой. У меня не стояло цели сделать "жирное ядро", наоборот, старался все, без чего можно обойтись выкидывать в библиотеки.