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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 48 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: обсуждение src4-mc10-b562@24.04.2011
СообщениеДобавлено: Пт июл 22, 2011 08:20 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: fork SPF4.17 от mOleg
СообщениеДобавлено: Вс июл 24, 2011 19:15 
Не в сети
Moderator
Moderator
Аватара пользователя

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

?а почему два, ведь у каждого типа словарей собственные цепочки.

_Harry писал(а):
например сначала ищем в статических словарях потом в хипе.

получается таки сложнее, то есть, не то, чтобы нельзя.

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


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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: fork SPF4.17 от mOleg
СообщениеДобавлено: Пн июл 25, 2011 20:04 
Не в сети
Moderator
Moderator
Аватара пользователя

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

нет, дело не в том.
сейчас не предусмотрено единой структуры для связывания имен словарей, т.е. цепочки типа VOC-LIST, а именно их хвосты, никак не увязаны между собой. Т.е. поиск по имени словаря (кстати он так же не связан с поиском по словарям) предусмотрен только для статических словарей.

_Harry писал(а):
А пользователю так проще не разбираться в каких словарях ищет, а в каких нет.

проще, но, тогда система станет несколько сложнее.
Кстати, обнаружилось, что в динамических словарях цепочка HEAP-LIST при удалении словаря будет рваться (т.е. мое упущение обнаружилось).

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: fork SPF4.17 от mOleg
СообщениеДобавлено: Вт июл 26, 2011 08:19 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
mOleg писал(а):
динамических словарях цепочка HEAP-LIST при удалении словаря будет рваться (т.е. мое упущение обнаружилось).
Ну дык раз обнаружилось... значит сам понимаешь... :wink:
Кстати может сделать так :?:
Код:
: FINDVOC (asc # -- vid | 0 ) DDUP FindStaticVoc *IF NIP NIP ;EXIT DROP FindTempVok ;
Вот и будут слова на все случаи поиска словарей.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: fork SPF4.17 от mOleg
СообщениеДобавлено: Вт июл 26, 2011 08:41 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
И вот еще что очень не нравится :
Код:
\ деинициализация словаря
\ удаляется только одна ссылка на словарь из контекста
\ контроля CURRENT не производится
: (umount-heap) ( vid --> )
                PREVIOUS
    \ еще нужно исключить словарь из списка HEAP-LIST
                0 OVER off_last   A!           \ список пуст.
                0 OVER off_vflags B!           \ флагов нет
                off_specific A@ HeapDestroy
                IFNOT ERROR" Не могу удалить Хип словаря!" THEN ;

PREVIOUS в начале слова совсем лишний так как словарь vid которого используется
может быть и не на вершине стека словарей. Он вообще может не быть на стеке.
Думаю правильнее было бы не связывать удаление со стека и деинициализацию словаря таким образом.
Соответственно надо бы изменить:
Код:
: UMOUNT ( --> ) CONTEXT @  DUP off_umount PERFORM  PREVIOUS ;

А также другие слова использующие off_umount PERFORM (надеюсь их не много)
А так как сейчас при деинициализации одного словаря может быть выкинут из контекста совсем другой словарь что не есть хорошо :hey;
Вообще то сильная сторона форка это как раз то, что я могу и сам изменить процедуру umount в конкретном словаре. Но всеш таки мне кажется лучше поправить как то оно не хорошо выглядит. :roll:


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: fork SPF4.17 от mOleg
СообщениеДобавлено: Вт июл 26, 2011 19:29 
Не в сети
Moderator
Moderator
Аватара пользователя

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

дык, понимаю. Вот только времени и сил стало совсем не хватать.

_Harry писал(а):
Кстати может сделать так
Код:
: FINDVOC (asc # -- vid | 0 ) DDUP FindStaticVoc *IF NIP NIP ;EXIT DROP FindTempVok ;
Вот и будут слова на все случаи поиска словарей.

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

_Harry писал(а):
И вот еще что очень не нравится :
Код:
\ деинициализация словаря
\ удаляется только одна ссылка на словарь из контекста
\ контроля CURRENT не производится
: (umount-heap) ( vid --> )
PREVIOUS
\ еще нужно исключить словарь из списка HEAP-LIST
0 OVER off_last A! \ список пуст.
0 OVER off_vflags B! \ флагов нет
off_specific A@ HeapDestroy
IFNOT ERROR" Не могу удалить Хип словаря!" THEN ;

PREVIOUS в начале слова совсем лишний так как словарь vid которого используется
может быть и не на вершине стека словарей. Он вообще может не быть на стеке.

речь идет о стеке контекста я так понимаю.
однако, как раз таки ситуация невозможная, т.к. UMOUNT работает только с верхним контекстным словарем, другое дело, что в контексте словарь может упоминаться несколько раз:
: UMOUNT ( --> ) CONTEXT @ DUP off_umount PERFORM ;

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

нет, именно что нельзя другой, если на вершине контекста будет другой словарь, то именно он будет демонтирован. Тут как раз все достаточно логично 8)

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

в том-то и дело, что процедура демонтирования словаря достаточно интимна, а значит не очень предсказуема...

Вобщем думать надобно тут.

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


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

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
mOleg писал(а):
однако, как раз таки ситуация невозможная, т.к. UMOUNT работает только с верхним контекстным словарем, другое дело, что в контексте словарь может упоминаться несколько раз:
Ты видимо непонял в чем дело. UMOUNT - то правильно работает так как vid получается с вершины стека контекста, а вот (umount-heap) :idea: обрати внимание PREVIOUS ни как не связан vid который может получен например в результате поиска или из переменной т.е. словаря в контексте нет а мы удаляем с вершины контекста то что там лежит. Т.е. другой словарь. Просто ты наверно не использовал (umount-heap) таким образом как я, ну так значит и исправлять не много надо. Как переделать UMOUNT я тебе предложил кстати он будет так сказать "симметричен" MOUNT. Собственно это коснется только тех словарей где определена процедура (umount-heap) мне кажется так будет логичней.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: fork SPF4.17 от mOleg
СообщениеДобавлено: Ср июл 27, 2011 20:02 
Не в сети
Moderator
Moderator
Аватара пользователя

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

обращаю внимание, (umount-heap) не находится в словаре FORTH 8)
поэтому не предполагается его использование непосредственно, кроме того, все слова с именами в (круглых скобках) не должны вызываться непросредственно, т.е. предназначены для вызова с помощью VECT и подобных слов. (это так, для общего развития так сказать), кстати это описано в agreements.txt :
2. Имена в круглых скобках не предназначены для прямого вызова, и обычно
используются из VECT и USER-VECT переменных, поэтому при попытке
исполнения таких слов, может лишь возвращаться адрес исполнимого кода.


_Harry писал(а):
Просто ты наверно не использовал (umount-heap) таким образом как я, ну так значит и исправлять не много надо.

вероятно 8) ну и рассчитывал его использовать, вероятно, таки иначе, впрочем, не вижу в этом ничего страшного.

_Harry писал(а):
Как переделать UMOUNT я тебе предложил кстати он будет так сказать "симметричен" MOUNT. Собственно это коснется только тех словарей где определена процедура (umount-heap) мне кажется так будет логичней.

ну, тут все несколько сложнее, в первую очередь встает вопрос, можно ли использовать словарь отсутствующий в контексте и\или не являющийся текущим - этот вопрос не очень актуален для статических словарей, но очень актуален для всех более сложных. Т.е. предполагается и такой вариант, когда при удалении словаря из контекста автоматически выполняется umount !!!
Вобщем пока думаю как сделать лучше.

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


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

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
mOleg писал(а):
когда при удалении словаря из контекста автоматически выполняется umount !!!
Не это какая то экзотика может кому то и понадобится так пусть сам и пишет. В принципе к работе слова UMOUNT претензий нет а вот на счет слов круглых скобках хочу сказать что это не по фортовски. Все слова в идеале должны допускать использование. Другой вопрос это простота доступа к ним. Тут я согласен с твоим подходом надо кое что и спрятать подальше, чтобы тот кто докапался до этого слова понимал что дело "серьезное" :) Но по поводу (umount-heap) тут даже логическая неувязка - все действия привязаны к словарю vid кроме PREVIOUS который привязан к вершине контекста но никто же не гарантирует что там именно словарь vid. Короче я то уже сделал как мне надо переопределив off_umount в моем словаре.
Код:
ONLY ALSO HIDDEN DEFINITIONS

USER-VALUE cvoc
USER-VALUE lvoc  \ vid временного словаря локальных имен
ALSO IMPORT
\ деинициализация словаря
:> (clear-voc) ( vid --> )
                \ PREVIOUS
                0 OVER off_last   A!           \ список пуст.
                0 OVER off_vflags B!           \ флагов нет
                off_specific
                A@
                HeapDestroy
                IFNOT ERROR" Не могу удалить Хип словаря!" THEN ;
PREVIOUS
ALSO FORTH THIS

\ Заново инициализировать и сделать текущим временный словарь локальных имен
\ Если он не создан то создать
: ln{ ( -- ) GET-CURRENT TO cvoc
      lvoc *IF DUP DUP off_umount PERFORM
           ELSE DROP ALSO HEAP THIS s" LocNames" SVOCAB
                (clear-voc) OVER off_umount A!
           THEN DUP TO lvoc
      DUP DUP off_mount PERFORM
      SET-CURRENT ;


Как то так....
Обрати внимание код (clear-voc) это код (umount-heap) только PREVIOUS закоментирован


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: fork SPF4.17 от mOleg
СообщениеДобавлено: Сб июл 30, 2011 11:16 
Не в сети
Moderator
Moderator
Аватара пользователя

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

таки не экзотика, основополагающая идея.

_Harry писал(а):
В принципе к работе слова UMOUNT претензий нет а вот на счет слов круглых скобках хочу сказать что это не по фортовски. Все слова в идеале должны допускать использование.

ну, как бы в идеале должно стремится 8) но количество имен тоже не хочется увеличивать безмерно.

_Harry писал(а):
Но по поводу (umount-heap) тут даже логическая неувязка - все действия привязаны к словарю vid кроме PREVIOUS который привязан к вершине контекста но никто же не гарантирует что там именно словарь vid.

просто не рассчитывалось, что слово будет вызываться как либо иначе 8)

_Harry писал(а):
Короче я то уже сделал как мне надо переопределив off_umount в моем словаре.

8)

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: обсуждение src4-mc10-b562@24.04.2011
СообщениеДобавлено: Вс авг 14, 2011 19:31 
Не в сети
Moderator
Moderator
Аватара пользователя

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

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: обсуждение src4-mc10-b562@24.04.2011
СообщениеДобавлено: Пн авг 15, 2011 03:31 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
mOleg писал(а):
тут может и не нужно выполнять umount при удалении словаря из контекста (хотя напрашивается),
А мне непонятно почему "напрашивается".Удаление из контекста может быть сделано на время. Потом опять словарь будет помещен в контекст. Зачем в этом случае его отмонтировать? Вообще в этом вопросе все как то не додумано. Потому как отмонтированый словарь оставшийся в CURRENT скорее всего вызовет исключение или того хуже... Решение видится такое - слово UMOUNT должно проверить наличие словаря в СURRENT и вызвать ошибку если он там.
А вот в off_umount я бы положил слово которое делает деинициализацию словаря и ничего больше(конечно это относится только к временным словарям :!: ) . И выполнятся метод off_umount должен после соответствующих проверок :hey;


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: обсуждение src4-mc10-b562@24.04.2011
СообщениеДобавлено: Пн авг 15, 2011 19:05 
Не в сети
Moderator
Moderator
Аватара пользователя

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

может, причем, может быть несколько контекстов (ничто этого не запрещает, более того, я так делал), но мысли смутные в голове по этому поводу ворочаются. Ведь как мы добавляем словарь в контекст - по его названию обычно (редко в ход идет vid), а при упоминании имени словаря всеравно выполняется часть (mount), которая, если умная, проверяет, был ли он уже инициализирован или нет (как-то так):
\ создать словарь, с именем asc #
: SVOCAB ( asc # --> vid )
..............
DOES> off_wlist A@ DUP
DUP off_mount PERFORM \ инициализировали словарь
WITH ; \ добавили словарь в контекст

Кстати, вот если использовать WITH с неинициализированным словарем, должно происходить исключение...
То есть работа со словарями по их vid несколько некорректна получается.

_Harry писал(а):
Вообще в этом вопросе все как то не додумано. Потому как отмонтированый словарь оставшийся в CURRENT скорее всего вызовет исключение или того хуже..

да, недодумано малость, но исправимо, собственно я уже понял, что придется создать словарь-прототип (или как его назвать), который будет оказываться в CURRENT при попытке изменит CURRENT на недопустимый вариант. Другой вариант, класть туда, к примеру FORTH и делать исключение, но лучше ли это?

_Harry писал(а):
Решение видится такое - слово UMOUNT должно проверить наличие словаря в СURRENT и вызвать ошибку если он там.

Это тоже вариант, но похуже, имхо, описанного выше

_Harry писал(а):
А вот в off_umount я бы положил слово которое делает деинициализацию словаря и ничего больше(конечно это относится только к временным словарям )

не обязательно только к ним, ведь словарь сейчас может содержать что угодно.

_Harry писал(а):
И выполнятся метод off_umount должен после соответствующих проверок

но это уже к создателю словаря 8)

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: обсуждение src4-mc10-b562@24.04.2011
СообщениеДобавлено: Пн авг 15, 2011 20:19 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
mOleg писал(а):
да, недодумано малость, но исправимо, собственно я уже понял, что придется создать словарь-прототип (или как его назвать), который будет оказываться в CURRENT при попытке изменит CURRENT на недопустимый вариант. Другой вариант, класть туда, к примеру FORTH и делать исключение, но лучше ли это?
Ни в коем случае так делать нельзя. :!: :!: :!: Такая автоматика будет источником опасных и трудно определяемых ошибок. :!: :!: :!:
Да и незачем. Какой словарь будет текущим должен определять программист. Исключение еще куда ни шло. Но почему не выдать сообщение об ошибке и не делать больше ни чего в том числе и деинициализацию :?: Такой вариант вынудит программиста исправить свою ошибку. Чем это хуже :?: . Кстати некорректность работы со словарем по vid это опять же на совести того кто так работает можно ведь и вполне корректно написать :!:
Учти что все мои рассуждения относятся к словарям в HEAP для которых уже определен метод off_umount вот именно он мне не понравился. Естественно можно самому определить свой вариант
(что я и сделал в конце концов) и это большой плюс форка.


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

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


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

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


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

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