Forth
http://fforum.winglion.ru/

Варианты словарей и словарных статей
http://fforum.winglion.ru/viewtopic.php?f=9&t=1495
Страница 2 из 4

Автор:  Pretorian [ Вт сен 09, 2008 11:32 ]
Заголовок сообщения: 

Хищник писал(а):
Словарь - это обычное слово, с установленным флажком vocabulary, у которого в LFA вписан не указатель на LFA предыдущего слова, а указатель на точку входа в словарь-родитель. Таким образом, для перехода дальше надо сделать не @, а @ @ (сначала получаем адрес переменной, хранящей последнее LFA родителя, потом получаем LFA оттуда).

Как я понял в кварке дерево словарей можно построить? А как узнать тогда какие словари имеются в системе и вывести список конкретного словаря?

Автор:  Hishnik [ Вт сен 09, 2008 15:08 ]
Заголовок сообщения: 

Pretorian писал(а):
Как я понял в кварке дерево словарей можно построить? А как узнать тогда какие словари имеются в системе и вывести список конкретного словаря?

Отдельно я ничего не делал. Видимо, прямым перебором, ориентируясь на флажок vocabulary. Список нигде отдельно не хранится, самый простой путь - выполнить FORTH и начать искать все слова с vocabulary, начиная с точки входа LATEST. В этих словарях, в свою очередь, тоже могут быть определены словари. Но вообще-то я предполагаю, что планирование структуры словарей происходит до собственно кодирования, и разработчик хорошо представляет иерархию и содержание каждого словаря.

Автор:  Pretorian [ Вт сен 09, 2008 15:13 ]
Заголовок сообщения: 

Получается что корневой словарь FORTH. Интересная идея, а кто еще как?

Автор:  mOleg [ Вт сен 09, 2008 17:52 ]
Заголовок сообщения: 

мндя, тема поднята, похоже, потому, что кто-то не разобрался в том, что такое словари и как с ними работают. Лично я достаточно серьезно пересмотрел методику работы со словарями в форке (так что упрекнуть меня в консерваторстве сложно), но при этом я не понял что же даст идея уважаемого Pretorian-a. К сожалению на вопрос в чем его подход лучше он пока не ответил 8(
Поэтому повторяю свою просьбу объяснить, что же даст предлагаемый подход.

Автор:  Pretorian [ Вт сен 09, 2008 18:02 ]
Заголовок сообщения: 

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

Одинаковые имена слов в словарях.

Автор:  mOleg [ Вт сен 09, 2008 18:12 ]
Заголовок сообщения: 

Pretorian писал(а):
Одинаковые имена слов в словарях.

но это же и сейчас возможно. Причем, можешь посмотреть, например сюда и описание тут.
(смотреть в win1251 кодировке, чтобы небыло кракозябров1)

Автор:  Pretorian [ Вт сен 09, 2008 18:15 ]
Заголовок сообщения: 

нее надо что бы сразу понимало изначально не переучивая.

Автор:  mOleg [ Вт сен 09, 2008 18:20 ]
Заголовок сообщения: 

Pretorian писал(а):
нее надо что бы сразу понимало изначально не переучивая.

а какая разница?
либу можно заточить к любой форт-системе 8)

Автор:  Pretorian [ Вт сен 09, 2008 18:24 ]
Заголовок сообщения: 

mOlegа писал(а):
какая разница?
либу можно заточить к любой форт-системе 8)

А какая разница Форк или СПФ?

Автор:  mOleg [ Вт сен 09, 2008 18:26 ]
Заголовок сообщения: 

Pretorian писал(а):
А какая разница Форк или СПФ?

форк пока что эксперементальная система, в которой в ядре все достаточно сильно меняется, причем процесс не застыл на месте. СПФ же сложившаяся система. Либа, кстати не для форка, а для СПФа заточена.

Автор:  Pretorian [ Вт сен 09, 2008 18:31 ]
Заголовок сообщения: 

Вот и я говорю, пора менять формат, что плохого если интересное решение найдем?

Автор:  chess [ Чт сен 11, 2008 13:05 ]
Заголовок сообщения: 

Pretorian писал(а):
Что быстрей найти слово в словаре из 10000 имен или найти словарь из 100 существующих и в нем слово из 100 имеющихся? Ну а разделение слов на темы, это удобство разработчика ведь, скажем слово ОТКРЫТЬ может быть применено не только для файла, а для других ситуаций.

Насчет ускорения поиска в словаре есть вот такое соображение - вспомнил принцип Парето (20%-80%).
Надо найти самые часто употребляемые слова и сделать для них быстрый хэш(число).
По хэшу имени слова из заранее сформированной таблицы извлечь адрес имени этого слова в словарной статье и сравнить имя из словарной статьи с исходным именем слова, которое ищем, если совпадение есть, то поиск окончен - берем xt слова и все, а если нет совпадения запускаем стандартный поиск. Для слов, у которых хэш больше порога(порог определяется как максимальный хэш для выбранных слов) - поиск стандартный.
Попробовал с таким хэшем - сумма кодов символов слова. Брал слова из тем: арифметика(фикс.точка), логика, структуры управления, работа с памятью, работа со стеком данных, со стеком возвратов, сравнения, определяющие слова - вообщем наиболее часто употребляемые(штук 100). Совпадения хэшей что-то всего 4 было. Их легко убрать можно, чуть изменив имена слов. Но даже если и не менять такие несовпадения очень редки и исправляются повторным стандартным поиском. Таблица получилась где-то на 4000 байт, так что и по SAVE может быть сохранена.
Ну а если текст программы считать в первую очередь планом построения кода программы, а не входным потоком - как это у Мура в ColorForth - то конечно быстрее будет с прекомпиляцией исходников, но тогда спец.редактор должен стать неотъемлемой частью форт-системы.
Насчет ОТКРЫТЬ. Пишем ОТКРЫТЬ ФАЙЛ. В само слово ФАЙЛ надо закладывать ссылку на процедуру открытия файла. А слово ОТКРЫТЬ ничего не открывает, оно, например, только кладет на стек параметр для слова ФАЙЛ. Для остальных слов параметр тот-же, но реакция конечно другая. Вообщем Форт ООП не противоречит.

Автор:  Pretorian [ Чт сен 11, 2008 13:09 ]
Заголовок сообщения: 

Хорошая идеища :writer;

Автор:  Pretorian [ Чт сен 11, 2008 13:15 ]
Заголовок сообщения: 

chess писал(а):
Насчет ОТКРЫТЬ. Пишем ОТКРЫТЬ ФАЙЛ. В само слово ФАЙЛ надо закладывать ссылку на процедуру открытия файла.

А вот это не пойдет, т.к. это означает что слово ФАЙЛ должно сначало обработать ОТКРЫТЬ, ЗАКРЫТЬ и прочее, а потом в связи с этим отправить куда нужно, в данном случае ФАЙЛ будет являтся избыточным словом, а если не будет ни куда отправлять, а сам все обрабатывать, нарушится закон "разделяй и властвуй".

Автор:  mOleg [ Чт сен 11, 2008 21:24 ]
Заголовок сообщения: 

chess писал(а):
Насчет ускорения поиска в словаре есть вот такое соображение - вспомнил принцип Парето (20%-80%).
Надо найти самые часто употребляемые слова и сделать для них быстрый хэш(число).

вообще, это классика жанра для форта.
Линейный поиск = это особенность СПФа, хотя уже, вроде, есть либа ускоряющая поиск..
Причем со скоростью поиска как только не извращались, были опробованы очень разнообразные схемы ускорения поска слов.

Страница 2 из 4 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/