Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 23:04

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - словари
Автор Сообщение
  Заголовок сообщения:  Re: словари  Ответить с цитатой
mOleg писал(а):
С контекстом все просто и удобно, кроме того, очень удобно, когда в текущем словаре поиск не ведется (только проверка, есть ли в нем уже такое имя).
Получается, что Forth-79 именно так и был сделан.
Сообщение Добавлено: Чт июл 14, 2011 23:10
  Заголовок сообщения:  Re: словари  Ответить с цитатой
ну и сколько можно тему-то перетирать?
решение без контекста (когда есть поиск не в одном локальном словаре а в целой цепочке) не подходит для многопоточных программ и нереентерабелен, кроме того, лично я неоднократно попадал в ситуацию, когда непонятно как вообще вызвать слово из ээ соседней ветки или, недай бог, поменять порядок просмотра словарей, например, реверсировать его.
С контекстом все просто и удобно, кроме того, очень удобно, когда в текущем словаре поиск не ведется (только проверка, есть ли в нем уже такое имя).
Сообщение Добавлено: Чт июл 14, 2011 20:03
  Заголовок сообщения:  Re: словари  Ответить с цитатой
угу, и получается, что вместо одного слова МАСЛО я должен писать
МАСЛО-МАСЛЯНОЕ-ИЗ-МАСЛЯНОГО-СЛОВАРЯ...
Сообщение Добавлено: Чт июл 14, 2011 17:33
  Заголовок сообщения:  Re: словари  Ответить с цитатой
WingLion писал(а):
A теперь представим, что есть еще и словарь G,родителем которого является непросматриваемый родитель словаря из CONTEXT...
И получаем при поиске - ?Кукиш, когда этот словарь надо подключить для работы. Или гемор по управлению содержимым CONTEXT.

Не гемор. Просто внутри создаваемого определения указываешь нужный словарь.
: NEW_WORD ... ИМЯ_СЛОВАРЯ СЛОВО_ИЗ_СЛОВАРЯ ... ;
Примерно как в ООП Класс.Метод, где Класс=Словарь, Метод=Слово_из_него
Сообщение Добавлено: Чт июл 14, 2011 16:40
  Заголовок сообщения:  Re: словари  Ответить с цитатой
_Harry писал(а):
Тут закономерный вопрос может стек словарей не так уж и плох

По крайней мере Форт не запрещает не пользоваться стеком словарей. В отдельных случаях контекстные словари все-таки дают какой-то эффект( в основном это касается написания кросс-компиляторов), правда даже в этом случае достаточно двух словарей
CONTEXT и CURRENT.
Сообщение Добавлено: Чт июл 14, 2011 09:42
  Заголовок сообщения:  Re: словари  Ответить с цитатой
WingLion писал(а):
И получаем при поиске - ?Кукиш,
Тут закономерный вопрос может стек словарей не так уж и плох :?:
Сообщение Добавлено: Чт июл 14, 2011 08:37
  Заголовок сообщения:  Re: словари  Ответить с цитатой
A теперь представим, что есть еще и словарь G,родителем которого является непросматриваемый родитель словаря из CONTEXT...
И получаем при поиске - ?Кукиш, когда этот словарь надо подключить для работы. Или гемор по управлению содержимым CONTEXT.
Сообщение Добавлено: Чт июл 14, 2011 04:52
  Заголовок сообщения:  Re: словари  Ответить с цитатой
Изображение
Разобрался с особенностями реализации словарей в Fig-Forth и Forth-79.

1.) Fig-Forth
а.) Первый проход поиска начинается со словаря на который указывает CONTEXT.
б.) Второй проход поиска начинается со словаря на который указывает CURRENT.
в.) На каждом проходе у каждого из словарей последовательно обходятся родители
вплоть до самого древнего предка (которым является FORTH).
Поиск продолжается до нахождения слова, поэтому рассматриваем случай,
когда слово никак не находится и поэтому поиск продолжается до конца.
При этом для нарисованной картинки поиск будет проходить в таком порядке :
первый проход : A->F B->I E->J, второй проход : C->G D->H E->J.
Забавно, но в итоге получается обход словарей в таком порядке :
CONTEXT,ПОСЛЕДОВАТЕЛЬНО_РОДИТЕЛИ_CONTEXT,FORTH,CURRENT,ПОСЛЕДОВАТЕЛЬНО_РОДИТЕЛИ_CURRENT,FORTH,
причем словарь FORTH просматривается дважды.

2.) Forth-79
а.) Первый проход поиска начинается со словаря на который указывает CONTEXT.
б.) Второй проход поиска начинается со словаря на который указывает FORTH.
в.) Родители словарей не просматриваются.
Поиск продолжается до нахождения слова, поэтому рассматриваем случай,
когда слово никак не находится и поэтому поиск продолжается до конца.
При этом для нарисованной картинки поиск будет проходить в таком порядке :
первый проход : A->F, второй проход : E->J.
В итоге получается обход словарей в таком порядке : CONTEXT,FORTH.

3.) Вариант, который я залепил в своем Форте, согласно тому как понял Баранова и Ноздрунова.
а.) Первый проход поиска начинается со словаря на который указывает CONTEXT.
б.) Второй проход поиска начинается со словаря на который указывает CURRENT.
в.) Третий проход поиска начинается со словаря на который указывает FORTH.
г.) Родители словарей не просматриваются.
Поиск продолжается до нахождения слова, поэтому рассматриваем случай,
когда слово никак не находится и поэтому поиск продолжается до конца.
При этом для нарисованной картинки поиск будет проходить в таком порядке :
первый проход : A->F, второй проход : C->G, третий проход : E->J.
В итоге получается обход словрей в таком порядке : CONTEXT,CURRENT,FORTH.
Сообщение Добавлено: Ср июл 13, 2011 23:44
  Заголовок сообщения:  Re: словари  Ответить с цитатой
Ethereal писал(а):
Создатели FIG-форта не следовали никакому стандарту и у них та-же фигня.
Создатели стандартов 79/83 не принимали FIG-форт в рассчет и у них та-же хрень.
Неспроста это ... Они явно чего-то имели ввиду ...

Так надо не для стандарта, а для дела писать. Если какое-то поведение словарей вызывает проблемы в прикладных программах, изменяем поведение словарей. Только не умозрительно, и не для подгонки под два-три абстрактных примера, а как итог накопленного в проектах опыта.
Сообщение Добавлено: Вс мар 27, 2011 20:31
  Заголовок сообщения:  Re: словари  Ответить с цитатой
Создатели FIG-форта не следовали никакому стандарту и у них та-же фигня.
Создатели стандартов 79/83 не принимали FIG-форт в рассчет и у них та-же хрень.
Неспроста это ... :shuffle; Они явно чего-то имели ввиду ... :shuffle;

P.S. Во, чего накопал. Автор MVP-FORTH хвастается, что в его форте можно переключать организацию словарей со словарей в духе FIG на словари в духе 79 и обратно :
There are two flavors of vocabularies available in MVP-FORTH. In one all vocabularies chain directly to FORTH. That is, when a vocabulary is invoked, it will be searched first and then the FORTH vocabulary will be searched. If you were to define a second vocabulary within another vocabulary, the search would only search the current one and jump directly to the FORTH vocabulary. The other flavor allows the sequential searching of parent vocabularies all of the way back to FORTH. The latter is known as <VOCABULARYFIG>. The former is <VOCABULARY79>. The function of VOCABULARY is vectored through 'VOCABULARY.
Разбираюсь за счет чего выходили столь разные эффекты в FIG и 79.

P.P.S. Вот словари в 79 и FIG сделаны по разному, но все равно у обоих малопонятное
: : ... CURRENT @ CONTEXT ! ... ;
Сообщение Добавлено: Вс мар 27, 2011 19:12
  Заголовок сообщения:  Re: словари  Ответить с цитатой
Ethereal писал(а):
Ошибочно ? И так три раза подряд ?

И что тут такого? Разве от следования стандарту автор транслятора Форта получает много полезного?
Сообщение Добавлено: Вс мар 27, 2011 15:42
  Заголовок сообщения:  Re: словари  Ответить с цитатой
Хищник писал(а):
Ethereal писал(а):
Скомпилированные слова всегда будут найдены, поскольку
само слово : "colon" во всех 3-х старых стандартах cделает current контекстом.

Предположим, что такое поведение введено в стандарт ошибочно. Что тогда?

Ошибочно ? И так три раза подряд ?
Сообщение Добавлено: Вс мар 27, 2011 15:37
  Заголовок сообщения:  Re: словари  Ответить с цитатой
К словарям в стандарте ANSI есть претензии.
- Их реализация накладна для систем с катастрофически малыми ресурсами.
- Мысленно отслеживать составной контекст сложно, а потому идея стека словарей избыточна
Понимать как работали старые системы важно, если создаешь свои.
Позволяет найти минимальное эффективное решение.

Я, по прочтении Баранова и Ноздрунова сделал так :
Порядок поиска: CONTEXT->CURRENT->FORTH
Держишь в голове только три вещи - в каком контексте определяешь слова,
в какой словарь, ну и базовые слова Форта есть в наличии по умолчанию.
Применение плавающего + из словаря FLOAT для определения слова в словаре
FORTH у меня будет таким (изначально CONTEXT=CURRENT=FORTH) :
FLOAT
: SHIT_1 ... + ... ;
: SHIT_2 ... + ... ;
FORTH
Но оказалось, что это идет вразрез со всеми старыми стандартами.

Вот что я еще накопал в стандарте Forth-83.
Previously standardized words continue in their use:
VOCABULARY, FORTH, DEFINITIONS, and FORGET. However, this
proposal assumes that vocabulary names are not IMMEDIATE .

А отсюда следует, что до Forth-83 словари были немедленного исполнения.
А значит они переключали контекст в т.ч. и ВНУТРИ форт-определений.

Ах вот значит как !
В Forth-79 порядок поиска CONTEXT->FORTH, каждое новое определение по :
само переключает CONTEXT на CURRENT, чтобы видеть переопределение слова
в словаре, если такое произойдет, и мой пример, приведенный выше,
выглядел бы так :
: SHIT_1 FLOAT ... + ... ;
: SHIT_2 FLOAT ... + ... ;
FORTH
, т.е. контекст каждый раз надо заново задавать внутри Форт-определений.
Получается так ! Правда, мой вариант мне все-таки больше нравится.
Сообщение Добавлено: Вс мар 27, 2011 15:36
  Заголовок сообщения:  Re: словари  Ответить с цитатой
Ethereal писал(а):
Скомпилированные слова всегда будут найдены, поскольку
само слово : "colon" во всех 3-х старых стандартах cделает current контекстом.

Предположим, что такое поведение введено в стандарт ошибочно. Что тогда?
Сообщение Добавлено: Вс мар 27, 2011 14:49
  Заголовок сообщения:  Re: словари  Ответить с цитатой
mOleg писал(а):
В любом случае стек контекстный отменил все проблемы,


Не все он отменил. Не все.

Для переключения контекста нужно применять танцы с бубном.
Вложение:
Forth_voc_dic.GIF
Forth_voc_dic.GIF [ 22.28 Кб | Просмотров: 24591 ]


Каждый кружок - это определение (группа определений). Линии контекста определяют, какие словари нужны для определений в словаре WORK. И получается, что перед каждым новым определением (группой определений) надо контекст дергать.
Мало того, надо самому ПОМНИТЬ (системе то все пофиг!), что надо подключить, а что отключить, чтобы не напортачить.
Сообщение Добавлено: Вс мар 27, 2011 12:42

Часовой пояс: UTC + 3 часа [ Летнее время ]


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB