Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пн окт 21, 2019 16:21

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 61 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: словари
СообщениеДобавлено: Вс мар 27, 2011 10:07 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4997
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 20 раз.
Поблагодарили: 58 раз.
Ethereal писал(а):
Так-что вот это

mOleg писал(а):
Изначально форт умел работать только с двумя словарями,
один словарь находился в переменной context другой в переменной current - в первом словаре велся поиск во второй производилась компиляция слов. Таким образом откомпилированные слова не всегда могли быть найдены.

неправильно. Скомпилированные слова всегда будут найдены, поскольку
само слово : "colon" во всех 3-х старых стандартах cделает current контекстом.

Только в разных форт-системах это обыграно по-разному.
В любом случае стек контекстный отменил все проблемы, смотреть в сторону старых стандартов в этом месте нет смысла.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: словари
СообщениеДобавлено: Вс мар 27, 2011 12:42 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
mOleg писал(а):
В любом случае стек контекстный отменил все проблемы,


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

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


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

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: словари
СообщениеДобавлено: Вс мар 27, 2011 14:49 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6808
Благодарил (а): 16 раз.
Поблагодарили: 110 раз.
Ethereal писал(а):
Скомпилированные слова всегда будут найдены, поскольку
само слово : "colon" во всех 3-х старых стандартах cделает current контекстом.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: словари
СообщениеДобавлено: Вс мар 27, 2011 15:36 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 588
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 23 раз.
К словарям в стандарте 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
, т.е. контекст каждый раз надо заново задавать внутри Форт-определений.
Получается так ! Правда, мой вариант мне все-таки больше нравится.


Последний раз редактировалось Ethereal Вс мар 27, 2011 15:39, всего редактировалось 1 раз.


За это сообщение автора Ethereal поблагодарил: dynamic-wind
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: словари
СообщениеДобавлено: Вс мар 27, 2011 15:37 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 588
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 23 раз.
Хищник писал(а):
Ethereal писал(а):
Скомпилированные слова всегда будут найдены, поскольку
само слово : "colon" во всех 3-х старых стандартах cделает current контекстом.

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

Ошибочно ? И так три раза подряд ?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: словари
СообщениеДобавлено: Вс мар 27, 2011 15:42 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6808
Благодарил (а): 16 раз.
Поблагодарили: 110 раз.
Ethereal писал(а):
Ошибочно ? И так три раза подряд ?

И что тут такого? Разве от следования стандарту автор транслятора Форта получает много полезного?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: словари
СообщениеДобавлено: Вс мар 27, 2011 19:12 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 588
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 23 раз.
Создатели 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 ! ... ;


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: словари
СообщениеДобавлено: Вс мар 27, 2011 20:31 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6808
Благодарил (а): 16 раз.
Поблагодарили: 110 раз.
Ethereal писал(а):
Создатели FIG-форта не следовали никакому стандарту и у них та-же фигня.
Создатели стандартов 79/83 не принимали FIG-форт в рассчет и у них та-же хрень.
Неспроста это ... Они явно чего-то имели ввиду ...

Так надо не для стандарта, а для дела писать. Если какое-то поведение словарей вызывает проблемы в прикладных программах, изменяем поведение словарей. Только не умозрительно, и не для подгонки под два-три абстрактных примера, а как итог накопленного в проектах опыта.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: словари
СообщениеДобавлено: Ср июл 13, 2011 23:44 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 588
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 23 раз.
Изображение
Разобрался с особенностями реализации словарей в 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.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: словари
СообщениеДобавлено: Чт июл 14, 2011 04:52 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
A теперь представим, что есть еще и словарь G,родителем которого является непросматриваемый родитель словаря из CONTEXT...
И получаем при поиске - ?Кукиш, когда этот словарь надо подключить для работы. Или гемор по управлению содержимым CONTEXT.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: словари
СообщениеДобавлено: Чт июл 14, 2011 08:37 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
WingLion писал(а):
И получаем при поиске - ?Кукиш,
Тут закономерный вопрос может стек словарей не так уж и плох :?:


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: словари
СообщениеДобавлено: Чт июл 14, 2011 09:42 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2129
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 40 раз.
_Harry писал(а):
Тут закономерный вопрос может стек словарей не так уж и плох

По крайней мере Форт не запрещает не пользоваться стеком словарей. В отдельных случаях контекстные словари все-таки дают какой-то эффект( в основном это касается написания кросс-компиляторов), правда даже в этом случае достаточно двух словарей
CONTEXT и CURRENT.

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: словари
СообщениеДобавлено: Чт июл 14, 2011 16:40 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 588
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 23 раз.
WingLion писал(а):
A теперь представим, что есть еще и словарь G,родителем которого является непросматриваемый родитель словаря из CONTEXT...
И получаем при поиске - ?Кукиш, когда этот словарь надо подключить для работы. Или гемор по управлению содержимым CONTEXT.

Не гемор. Просто внутри создаваемого определения указываешь нужный словарь.
: NEW_WORD ... ИМЯ_СЛОВАРЯ СЛОВО_ИЗ_СЛОВАРЯ ... ;
Примерно как в ООП Класс.Метод, где Класс=Словарь, Метод=Слово_из_него


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: словари
СообщениеДобавлено: Чт июл 14, 2011 17:33 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
угу, и получается, что вместо одного слова МАСЛО я должен писать
МАСЛО-МАСЛЯНОЕ-ИЗ-МАСЛЯНОГО-СЛОВАРЯ...

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: словари
СообщениеДобавлено: Чт июл 14, 2011 20:03 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4997
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 20 раз.
Поблагодарили: 58 раз.
ну и сколько можно тему-то перетирать?
решение без контекста (когда есть поиск не в одном локальном словаре а в целой цепочке) не подходит для многопоточных программ и нереентерабелен, кроме того, лично я неоднократно попадал в ситуацию, когда непонятно как вообще вызвать слово из ээ соседней ветки или, недай бог, поменять порядок просмотра словарей, например, реверсировать его.
С контекстом все просто и удобно, кроме того, очень удобно, когда в текущем словаре поиск не ведется (только проверка, есть ли в нем уже такое имя).

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 61 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

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


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

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