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

...
Google Search
Forth-FAQ Spy Grafic

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




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

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

Автор написал это после попытки разобраться с ALSO и ONLY.
Окончательно добила конструкция
VOCABULARY имя ALSO чего-то ALSO чего-то ONLY DEFINITIONS в ficl
:< - - - - :))


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

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

Без этого можно жить?
Вполне.

Причем плюсов от этого больше чем минусов.
Плюсы:
1. упрощается работа с исходниками при реализации алгоритмов
(не надо помнить о текущем контексте использования слов)
2. увеличивается скорость трансляции из-за упрощения процедуры поиска
3. ускоряется исполняемый код программ, в которых используется поиск слов в словаре

Минус:
1. больший набор имен слов в исходниках

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


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

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

для того, чтобы реализовывать изолированные DSL,
для того, чтобы скрывать внутреннюю организацию какого-либо модуля.
Есть и другие применения.

chess писал(а):
1. упрощается работа с исходниками при реализации алгоритмов

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

С точностью до наоборот: Замедляется поиск в словаре, т.к. слов становится больше (если не приняты меры по повышению скорости поиска, о чем в последнее время забывают).

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

ну с чего такой вывод?

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


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

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

Хотел добавить но нечего :wink:


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

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

Реализует полноценные DSL с отделением редких слов в отдельные ветви, без необходимости переключаться со словаря на словарь.
Скрывает слова одной ветви для другой.=> имена не заняты

Ускоряется поиск - нет переключения словарей, можно искать только в определённом подмножестве слов.


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

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

и одно не противоречит другому?
или вы предлагаете писать ужасы типа: left.make.strait ?
(ксати, чтобы пользоваться такими ужасами ничего менять не нужно, и оно уже давно есть в СПФе...)

Antender писал(а):
Ускоряется поиск - нет переключения словарей,

Это раз, второе, как часто, по-вашему, приходится переключать словари? И сколько по-вашему в проекте бывает словарей?

Antender писал(а):
можно искать только в определённом подмножестве слов.

все это уже есть, зачем мудрить?

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


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

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

Нет. Обращение к слову такое же как и раньше.
Меняется структура словаря на нелинейную и меняется поиск.

Цитата:
Ускоряется поиск - нет переключения словарей,

Поиск идёт как и раньше в отдельной ветви - то есть в одном списке - то есть с точки с зрения поиска все нужные словари сцепляются в один.
Чтобы изменить структуру поиска достаточно записать всего 1 адрес в переменную.
При переключении поиск перестаёт затрагивать слова ветвей на одном уровне - т.е. образуется DSL. Очень похоже на русский язык - есть общий набор слов, ствол
ветви - отдельные DSL

Цитата:
можно искать только в определённом подмножестве слов.

все это уже есть, зачем мудрить?


Проще реализация при сохранении функционала. Наоборот упрощать.


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

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

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

Antender писал(а):
Поиск идёт как и раньше в отдельной ветви - то есть в одном списке - то есть с точки с зрения поиска все нужные словари сцепляются в один.Чтобы изменить структуру поиска достаточно записать всего 1 адрес в переменную.

а теперь возьмите старый форт 79 или 83 стандарта ;) потом подумайте, почему от такой организации отказались.

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


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

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

Так в чём смысл тыканья мной в 83 стандарт?

пример обращения к слову:

слово

Просто и банально!

Изменяется способ определения слова ( немного ) и поиска ( тоже немного )


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

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

один (в смысле переменная CONTEXT там не была стеком).

Antender писал(а):
Во-вторых все словари там линейные, а должен быть один древовидный!

они всегда древовидные (и сейчас тоже)

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

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

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


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

Зарегистрирован: Вс апр 25, 2010 11:14
Сообщения: 200
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Сейчас словари - это список, а не дерево!Или несколько несвязных списков! (Требуется показать древовидность)
Стек словарей не будет нужен! Поиск проходит по внешней ветви по вутренним ветвям прицепленным друг к другу по "стволу", основному словарю и оканчивается на NOOP

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


Цепляем к корню основного словаря, к NOOP - виден только он.


P.S. Очень в тему viewtopic.php?f=34&t=1120&start=15
Объединяются преимущества и 83, и 94 стандартов.


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

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

Это все следствия возможности использования разных слов с одинаковыми именами.

Цитата:
усложняется работа, код становится путанным из-за неудобных имен (так как удобные уже заняты).

Это ваше мнение. Накладные расходы удержания контекста программистом
во время программирования могут быть гораздо выше накладных расходов
на введение новых слов(ресурсы для поддержания того и другого разные и стоят совершенно по разному).
В большинстве случаев вообще бывает достаточно локального именования.
Концепция контекстных словарей еще как-то работает когда этих словарей 1-2,
а когда больше - себе дороже. Тут полная аналогия с параметрами на стеке -
когда их 2-4 еще куда ни шло, если больше - себе дороже.

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

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


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

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

если говорить о физическом предсатавлении, то дерево.

Antender писал(а):
Требуется показать древовидность

требуется просто подумать о том, где определен каждый словарь (и определяются последующие)

Antender писал(а):
Стек словарей не будет нужен!

он нужен совсем по другой причине - с ним просто удобнее.

Antender писал(а):
Поиск проходит по внешней ветви по вутренним ветвям прицепленным друг к другу по "стволу", основному словарю и оканчивается на NOOP

ТАК УЖЕ БЫЛО - это не очень удобно, хотя работать можно.
Например, без стека контекста было бы значительно неудобнее делать ЦК (в том же СПФе, например).

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


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

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

не обязательно.

chess писал(а):
Это ваше мнение.

тут у всех "свое мнение", напоминать не обязательно ;)

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

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

vocabulary module
also module definitions

Cerate buff ...
: bla
: bla
: bla

previous definitions also module
: интерфейсные слова тут ;

previous

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

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

в маленьких словарях ищется быстрее.
в контексте слишком много словарей не бывает.

А вообще, очень много зависит от вашего стиля написания кода, поэтому то, что для вас применимо, ко мне может не относиться :) и наоборот.

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


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

Зарегистрирован: Вс апр 25, 2010 11:14
Сообщения: 200
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Тогда вопрос в другом, есть ли смысл заводить именованные словари внутри словаря FORTH и затем использовать эти имена в стеке словарей?
То есть мы заводим маркер в начале каждой ветви этого дерева, и поиск работает от маркера до маркера в стеке словарей.

1 Не обязательно делать именованые точки прикрепления ветвей.
2 От того что дерево не будет дробиться на списки от маркера до маркера, а будет восприниматься как один список при поиске работать будет проще и быстрее.
3 Сейчас нельзя прикрепить слова посредине основных слов системы и использовать
не весь основной словарь ( либо всё, либо ничего )


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

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


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

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


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

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