Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Сб дек 05, 2020 18:09

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 56 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Ср авг 25, 2010 18:06 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7080
Благодарил (а): 17 раз.
Поблагодарили: 116 раз.
Организация словарей в стандарте-83 вполне позволяет организовывать древовидные структуры. Манипулируя содержимым поля связи корневых слов этих словарей, такую структуру можно и перестраивать на ходу. Является ли это решением?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Ср авг 25, 2010 18:10 
Не в сети

Зарегистрирован: Вс апр 25, 2010 11:14
Сообщения: 200
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Это и предлогалось


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Ср авг 25, 2010 18:39 
Не в сети
Moderator
Moderator
Аватара пользователя

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

мне кажется, что что-то появившееся, да еще вошедшее (пускай даже в неудачный стандарт) появилось на свет не зря;)

Antender писал(а):
3 Сейчас нельзя прикрепить слова посредине основных слов системы и использоватьне весь основной словарь ( либо всё, либо ничего )

Да можно, можно, только зачем?

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


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

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
mOleg писал(а):
Да можно, можно, только зачем?

А все просто. Пришла человеку в голову интересная идея.
И теперь он хочет всем доказать что она еще и полезная.
Ну понравилась, с каждым бывает.
На самом деле история покажет :roll:
Мне вот видится что этот механизм неудобнее чем стек словарей.
Проверка простая - практика :!:


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

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

Именно обязательно.
mOleg писал(а):
если вы в каждый отдельный словарь "скрываете" специфические части определенных модулей, то сложность уменьшается.
Я имею ввиду следующий случай:

Ну и причем здесь сложность. То о чем вы пишите проще сделать через локальный словарь.
Имена ненужные так вообще будут отсутствовать в словаре.
mOleg писал(а):
в маленьких словарях ищется быстрее.

при определенном апгоритме поиска размер словаря не влияет
mOleg писал(а):
в контексте слишком много словарей не бывает.

в ansi-94 до 16 штук можно - это мало? :)

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Ср авг 25, 2010 22:53 
Не в сети
Аватара пользователя

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

Вобще то маловато будет :lol:
Хотя я сам больше пяти шести в стек не укладывал.
Да и то потому что лень было убирать ненужные в данный момент словари они ведь ни сколько не мешают :lol: А NOTFOUND-ом в форке можно благополучно не пользоваться.
Так что весь контекст перебирается только в случае ошибок.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Чт авг 26, 2010 09:59 
Не в сети
Аватара пользователя

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

Это как бег в мешке - еще несколько мешков ничего не изменят. :D

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Чт авг 26, 2010 10:35 
Не в сети
Аватара пользователя

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

P.S. Теперь понимаю mOleg-а почему NOTFOUND - "зло"
Когда человек начинает изобретать свой велосипед поверх мотоцикла ему и мотор мешает, и
бензобак вроде бы лишний....


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Чт авг 26, 2010 10:48 
Не в сети
Аватара пользователя

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

Чтобы было понятно - идет сравнение программиста, использующего
контекстные словари с бегуном в мешках. Транслятор тут не при чем.
А вот NOTFOUND чего вы тут приплетаете - действительно непонятно.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Чт авг 26, 2010 14:53 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5016
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 21 раз.
Поблагодарили: 58 раз.
chess писал(а):
не обязательно.Именно обязательно.

разговор какой-то глупый, если вы не видите других вариантов - это не означает, что их нет.
Бывает очень удобно "замкнуть" интерпретатор только в безопасном наборе слов, причем, ни одно слово в данном наборе не будет использоваться в коде. За примеро далеко не надо ходить - обработка параметров командной строки.

chess писал(а):
Ну и причем здесь сложность. То о чем вы пишите проще сделать через локальный словарь.Имена ненужные так вообще будут отсутствовать в словаре.

Что такое локальный словарь?
Имена могут быть очень нужны, и доступность к ним остается, и "включается" она просто и обычно.
Пользуются машиной с помощью руля, педалей и кнопок, но иногда надо и под капот залезть ;) тем более, что вы разработчик этой самой машины.

chess писал(а):
при определенном апгоритме поиска размер словаря не влияет

при определенном алгоритме поиска количество словарей в контексте на время поиска не влияет.

chess писал(а):
в ansi-94 до 16 штук можно - это мало?

вобщем достаточно, но было такое, что не хватало.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Чт авг 26, 2010 16:30 
Не в сети
Аватара пользователя

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

Я вот тоже не пойму почему вы никак не поймете, что если-бы у разных процедур были-бы разные имена, то
надобности в контекстных словарях не было-бы в принципе.
mOleg писал(а):
Что такое локальный словарь?
Имена могут быть очень нужны, и доступность к ним остается, и "включается" она просто и обычно.
Пользуются машиной с помощью руля, педалей и кнопок, но иногда надо и под капот залезть тем более, что вы разработчик этой самой машины.

Локальный словарь(не знаю есть такое общеупотребительное понятие или нет) действует применительно к форту
в рамках одного определения. О локальных словах я уже писал.
mOleg писал(а):
при определенном алгоритме поиска количество словарей в контексте на время поиска не влияет.

Это время поиска для одного словаря в абсолютном выражении будет меньше чем для набора словарей из-за наличия
механизма переключения контекста.
mOleg писал(а):
вобщем достаточно, но было такое, что не хватало.

Механизм переключения контекста в форте посредством введения множества словарей и управлением порядком поиска в них
плох тем( и это принципиально), что занимает самый ценный ресурс у программиста - внимание(кратковременную память).
Ценность этого ресурса высока потому, что объем внимания у программиста очень маленький(вспомниете про правило Миллера).
В других языках реализованы другие концепции управления контекстом с упором на долговременную память программиста, объем которой не ограничен. Объем внимания при этом может быть целиком загружен понятиями предметной области.
Я думаю, что именно поэтому(сознательно или интуитивно) и Мур отказался от множества словарей в пользу по существу одного.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Чт авг 26, 2010 16:56 
Не в сети
Moderator
Moderator
Аватара пользователя

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

может потому что я делал как минимум несколько ЦК, и еще один сильно под свои нужды пререрабатывал,
а может потому, что реализоваывал нескольк вариантов наборов имен для упрощения описания аппаратуры, предварительно намучившись с одним словарем, имли потому что пользовался фортом 83 стандарта и знаю, как с одним деревом бывает тяжело добиться результата. Или потому что очень долго думал над тем, как лучше организовать словарь изнутри, чтобы использовать весь возможный потенциал стандартными средствами, и таки сделал пока что устраивающий меня вариант.

chess писал(а):
Локальный словарь(не знаю есть такое общеупотребительное понятие или нет)

вы создатель этого потнятия 8)

chess писал(а):
действует применительно к фортув рамках одного определения. О локальных словах я уже писал.

хотя, в том же СПФе локальные переменные подобным образом реализованы.

chess писал(а):
Это время поиска для одного словаря в абсолютном выражении будет меньше чем для набора словарей из-за наличиямеханизма переключения контекста.

во время поиска контекст не переключается, поиск слов может быть очень быстрым (почитайте, как поиск реализован в СМАЛ32 - там скорость поиска от количества словарей в контексте практически не зависит), к тому же не забывайте, что подавляющее большиство слов находится в верхнем контекстном словаре (вобщем, имхо, проблема из пальца).

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


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

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
mOleg писал(а):
подавляющее большиство слов находится в верхнем контекстном словаре (вобщем, имхо, проблема из пальца).

Точнее сказать обычно наверху тот словарь где и предполагается искать слова и значит они находятсся быстро. Хотя скорость их нахождения в большинстве применений и не важна вовсе.


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

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

Не знаю, но думаю, что вряд-ли.
mOleg писал(а):
хотя, в том же СПФе локальные переменные подобным образом реализованы.

Нет у меня сделано абсолютно по-другому.
mOleg писал(а):
во время поиска контекст не переключается, поиск слов может быть очень быстрым (почитайте, как поиск реализован в СМАЛ32 - там скорость поиска от количества словарей в контексте практически не зависит), к тому же не забывайте, что подавляющее большиство слов находится в верхнем контекстном словаре (вобщем, имхо, проблема из пальца).

Все описания страдают литьем воды в той или иной степени, а исходников там нет, поэтому ничего конкретно не скажу.
Тут надо расставить точки над i - ускорение поиска не самоцель, это лишь следствие. Ну не ускорился бы поиск ну и ладно. Даже
бы если и замедлился все равно нормально. Цель исключить забивание внимания контекстом. Причем это относится не только
к словарям, но и к стекам и к состоянию форт-системы(компиляция-исполнение), к значению основания системы счисления.
Это все контекст.

Что касается конкретно ускорения поиска в результате перехода к одному словарю, то:
Код:
USER-CREATE S-O 16 CELLS TC-USER-ALLOT
USER-VALUE CONTEXT

: SFIND ( addr u -- addr u 0 | xt 1 | xt -1 )
  S-O 1- CONTEXT
  DO
    2DUP I @ SEARCH-WORDLIST
    DUP IF 2SWAP 2DROP UNLOOP EXIT THEN DROP
   I S-O = IF LEAVE THEN
   1 CELLS NEGATE
  +LOOP 0 ;

: FIND1 ( c-addr -- c-addr 0 | xt 1 | xt -1 )
  DUP >R COUNT SFIND
  DUP 0= IF NIP NIP R> SWAP ELSE RDROP THEN  ;


SFIND сводится только к SEARCH-WORDLIST(при одном словаре)
а для SEARCH-WORDLIST время поиска не будет зависеть от количества слов
в единственном словаре(в случае использования быстрого алгоритма поиска).
В общем случае, суммарное время поиска при компиляции программ при этом будет
заведомо меньше, чем при наличии нескольких словарей.

Но это дело десятое, как я уже говорил, главное в том, что не будет контекста в памяти программиста.

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


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

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

по крайней мере раньше я его не встречал.

chess писал(а):
Все описания страдают литьем воды в той или иной степени, а исходников там нет, поэтому ничего конкретно не скажу.

да это и не важно (я с наскока тоже не нашел, а где был описан процесс поиска уже не помню), однако, это не означает, что поиск нельзя разогнать, вопрос лишь в том, насколько это необходимо.
Вобщем-то идея проста, используется единая ХЭШ-таблица, а каждое слово хранит идентификатор словаря.
Если слово находится, смотрим, находится ли в контексте данный словарь.

chess писал(а):
Цель исключить забивание внимания контекстом. Причем это относится не толькок словарям, но и к стекам и к состоянию форт-системы(компиляция-исполнение), к значению основания системы счисления.Это все контекст.

боюсь, мы не договоримся ни до чего.

chess писал(а):
В общем случае, суммарное время поиска при компиляции программ при этом будетзаведомо меньше, чем при наличии нескольких словарей.

совершенно некорректный вывод. Вы не учитываете ни время сравнения одного ключа, ни время на инициализацию поиска, ни то как связаны слова (линейный список, хешированный, бинарное дерево), ни то, используются ли трюки для поиска слов в словаре (например, в одной работе предлагалось каждое найденное слово перемещать в голову списка слов, что постепенно ускоряло систему "опуская" редкие слова в самый низ поиска (но существуют и другие предложения)).
Кроме того, на СПФе весь мир не ограничивается, например, поиск в форке выглядит так:

\ поиск lfa словарной статьи с именем asc # в указанном vid словаре
: SEARCH-NAME ( asc # vid --> lfa | 0 ) DUP off_quest PERFORM ;

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

chess писал(а):
Но это дело десятое, как я уже говорил, главное в том, что не будет контекста в памяти программиста.

В реальном мире мы тоже вынуждены учитывать контекст: общаясь с коллегой мы находимся в одном контексте, с продавцем - другой, внутри семьи - третий, и.т. д.

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


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

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


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

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


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

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