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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Re: структура словарей и поле флагов
СообщениеДобавлено: Пт фев 24, 2017 05:32 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4820
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 52 раз.
Victor__v писал(а):
Смотрел исходники словаря number
Это не следствие, это скорее заглушка, дабы была однородность

О том и речь.

Victor__v писал(а):
Да и кому нужно брать xt от числа?

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

Victor__v писал(а):
К тому же вариант не масштабируется. А то мало ли в обиход войдёт данная фича с лагом?
т.е. код ' 1 ' 2 ' 3 execute . execute . execute . выведет 3 3 3

да, этот вариант не работает, точнее, работает не так, как ожидается, причем, исправить можно, если числа выкладывать на вершину стека, а не в переменную, но нужно ли оно на самом деле?

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


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 240
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Подведём итоги.
Против всех флагов высказался chess
за флаг "я словарь" высказался положительно хищник
я отрицательно.
mOleg воздержался от его обсуждения
флаги "временное слово", immediate, инлайн не обсуждались

по структуре словаря претензий, как я понял, почти нет.

_________________
Цель: написать форт-систему
Подцель: написать оптимизирующий компилятор
текущая задача: переписать if-else-then


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 240
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Как вариант, можно добавить флаги доверия-регистр
Позволит оптимизировать код.
Т.е если слово имеет флаг, к примеру ECX-dov , то перед и после работы слова значение регистра сохраняется.

_________________
Цель: написать форт-систему
Подцель: написать оптимизирующий компилятор
текущая задача: переписать if-else-then


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

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

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

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


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

Зарегистрирован: Вс мар 26, 2017 00:23
Сообщения: 40
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
По-моему, флаги в поле имени совершенно лишняя сущность. Есть система, построенная без флагов вообще.


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 5996
Благодарил (а): 11 раз.
Поблагодарили: 95 раз.
Речь о флагах как таковых, или об их размещении в поле имени, как написано в некоторых источниках? Вполне можно под флаги выделить отдельное поле, это не проблема.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: структура словарей и поле флагов
СообщениеДобавлено: Чт апр 06, 2017 13:37 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 240
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Цитата:
построенная без флагов вообще

А смысл?
К тому же некоторые приёмы в форте также можно считать флагами.
Как "я юзверь" - USER-CODE, "я строка" - SLITERAL-CODE , "я переопределяемое слово" - VECT-CODE и пр.

Их тоже решили выкинуть?
Не флаги, но вызов данных слов может трактоваться так.

_________________
Цель: написать форт-систему
Подцель: написать оптимизирующий компилятор
текущая задача: переписать if-else-then


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: структура словарей и поле флагов
СообщениеДобавлено: Чт апр 06, 2017 17:20 
Не в сети

Зарегистрирован: Вс мар 26, 2017 00:23
Сообщения: 40
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Victor__v писал(а):
Цитата:
построенная без флагов вообще

А смысл?
К тому же некоторые приёмы в форте также можно считать флагами.
Как "я юзверь" - USER-CODE, "я строка" - SLITERAL-CODE , "я переопределяемое слово" - VECT-CODE и пр.

Их тоже решили выкинуть?
Не флаги, но вызов данных слов может трактоваться так.

Это скользкий момент. Считать ли xt слова флагом? В конце-концов можно придумать концепцию, в которой входной поток интерпретировать как поток флагов.
Сформулирую - флаг, это то, что требует следом условного перехода.
Поясню - я не против условных переходов вообще, но по возможности стараюсь от них избавляться.
Если можно не проверять слово на IMMEDIATE или, к примеру, FIND сможет класть на стек только xt, почему бы не сделать так. Пусть все происходит как бы само.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: структура словарей и поле флагов
СообщениеДобавлено: Сб апр 08, 2017 20:59 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 240
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Цитата:
к примеру, FIND сможет класть на стек только xt, почему бы не сделать так. Пусть все происходит как бы само.

Но для доп данных нужны флаги. Они-то и облегчают
Если find возвращает только xt , то как определить, что это за слово?
Можно создать с десяток специализированных словарей, для инлайн-слов, immediate-ов, и пр. И как результат увеличение времени компиляции.
Данный подход потребует, по моим представлениям, наличие отдельного sfind для каждого спец.словаря.
Зачем, ежели влаги облегчают это дело.

Кое-кто, всем известный шахматист, к примеру, приводит довод, что по происшествии н-го времени нельзя вспомнить какое слово как работает.
Не лучше ли механизм проверки ввести и вспоминать не надо будет?
К примеру, immediate-flag ' forth xt-wordlist-type

_________________
Цель: написать форт-систему
Подцель: написать оптимизирующий компилятор
текущая задача: переписать if-else-then


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: структура словарей и поле флагов
СообщениеДобавлено: Сб апр 08, 2017 22:43 
Не в сети

Зарегистрирован: Вс мар 26, 2017 00:23
Сообщения: 40
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Victor__v писал(а):
Цитата:
к примеру, FIND сможет класть на стек только xt, почему бы не сделать так. Пусть все происходит как бы само.

Но для доп данных нужны флаги. Они-то и облегчают
Если find возвращает только xt , то как определить, что это за слово?

А зачем определять? Пусть оно делает свое дело. Кроме того, xt однозначно определяет тип слова. Для слов, определённых через двоеточие - это ссылка на адресный интерпретатор, для слов, созданных определяющими словами - на точку DOES> определяющего слова. К чему дублировать существующий механизм?
Victor__v писал(а):
Можно создать с десяток специализированных словарей, для инлайн-слов, immediate-ов, и пр. И как результат увеличение времени компиляции.
Данный подход потребует, по моим представлениям, наличие отдельного sfind для каждого спец.словаря.
Зачем, ежели влаги облегчают это дело.

Чем короче список, тем раньше закончится поиск по нему. Специализированный список явно будет короче общего списка. И время компиляции уменьшится.
sfind всего один. Просто он ищет в заданном контексте. Либо явно vocname sfind, либо неявно CONTEXT @ sfind. Я уверенно говорю об этом, потому что есть рабочая система, построенная по этому принципу.
Victor__v писал(а):
Кое-кто, всем известный шахматист, к примеру, приводит довод, что по происшествии н-го времени нельзя вспомнить какое слово как работает.
Не лучше ли механизм проверки ввести и вспоминать не надо будет?
К примеру, immediate-flag ' forth xt-wordlist-type

Не лучше. По заветам Мура-Броуди слово должно называться так, что сразу будет понятно ЧТО оно делает. Этому помогает правило: одно слово - одна функция. Правда тут кроется кажущееся противоречие. Неизбежно будут появляться слова, функция которых зависит от контекста. Но это только кажется. Потому что ситуация обратная. Контексты позволяют иметь слова с одинаковым именем, но разные функционально. Что дает возможность приближать форт-текст к тексту на пусть упрощенном, но человеческом, английском языке. Неизвестно, но вероятно, что иегролифические языки еще легче ложатся в эту концепцию.
А что дает механизм проверки? Как он действует? Как им пользоваться? Он потребует разработки специальной среды разработки?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: структура словарей и поле флагов
СообщениеДобавлено: Вс апр 09, 2017 10:13 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 240
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Код:
Для слов, определённых через двоеточие - это ссылка на адресный интерпретатор, для слов, созданных определяющими словами - на точку DOES> определяющего слова

Ну если так, то возможно, когда писал, представлял себе натив без адресного интерпретатора :)

Цитата:
Чем короче список, тем раньше закончится поиск по нему. Специализированный список явно будет короче общего списка. И время компиляции уменьшится.

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

Цитата:
Просто он ищет в заданном контексте.

А это уже интересненько. Это как?
Взял интерпретатор слово из входного потока, запускает sfind . Где здесь надо подставить "заданный контекст"?
Первое что на ум приходит - префиксы. А что второе?

Цитата:
А что дает механизм проверки? Как он действует? Как им пользоваться? Он потребует разработки специальной среды разработки?

1)
а. вспомнить, что есть что по прошествии энного времени
б. сделать энное действие над выборкой из списка

2) Есть список слов, есть слово которое может пройтись по элементам списка, к примеру WORDS.
WORDS можно выразить как ['] TYPE WORD-NAME-in-context , примерно всё от реализации зависит.
Дам стек.диаграмму.
WORD-LIST-XT ( xt voc \\ xt: LFA -- ?? )

слово для проверки на флаг immediate
: IMMEDIATE-FLAG >R R@ LFA>FFA @ 0x2 MOD IF R@ LFA>NAME TYPE CR THEN RDROP ;

Итого:
' IMMEDIATE-FLAG ' FORTH WORD-LIST-XT

3) см пункт 2)
4) нет

Цитата:
сразу будет понятно ЧТО оно делает

Это не всегда возможно. Не то что на русском, на английском непонятно как сформировать.
К примеру, как назвать слово берущее со стека число, систему исчисления, и адрес слова, и выдающее число в виде строки, с которой будут произведены некие манипуляции, зависящие от адреса слова.
т.е n base xt // xt: addr u -- ??
Вот как его назвать?
Я пока называю NUM>??
как назвать получше без потери смысла и записи имени в виде предложения?
Вариант num>str>непонятная_ересь не предлагать

_________________
Цель: написать форт-систему
Подцель: написать оптимизирующий компилятор
текущая задача: переписать if-else-then


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

Зарегистрирован: Вс мар 26, 2017 00:23
Сообщения: 40
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Victor__v писал(а):
Так-то оно так, а как же поиск по контекстам? Ему же надо перебрать некоторое кол-во контекстов, дабы найти слово с нужным признаком. У вас какая-то эвристика что ли? Дабы облегчить нахождение?

Цитата:
Просто он ищет в заданном контексте.

А это уже интересненько. Это как?
Взял интерпретатор слово из входного потока, запускает sfind . Где здесь надо подставить "заданный контекст"?
Первое что на ум приходит - префиксы. А что второе?

Намного проще. Слово sfind берет контекст из переменной CONTEXT. Обычно в системе присутствует слово аналогичное (SFIND), которое словарь для поиска ака контекст берет со стека. ( В SPF это SEARCH-WORDLIST).
В каком-то смысле это можно назвать префиксами. Только эти префиксы действуют не на одно следующее слово, а до следующего префикса.


Цитата:
1)
а. вспомнить, что есть что по прошествии энного времени
б. сделать энное действие над выборкой из списка

А заглянуть в исходный текст или справочник разве нельзя?
Цитата:
2) Есть список слов, есть слово которое может пройтись по элементам списка, к примеру WORDS.
WORDS можно выразить как ['] TYPE WORD-NAME-in-context , примерно всё от реализации зависит.
....

Понял в чем у нас основное расхождение. Вы видите систему откомпилированной, я же в виде исходников.
Тот же SPF намного легче изучать, заглядывая в исходные тексты.

Цитата:
Это не всегда возможно. Не то что на русском, на английском непонятно как сформировать.
К примеру, как назвать слово берущее со стека число, систему исчисления, и адрес слова, и выдающее число в виде строки, с которой будут произведены некие манипуляции, зависящие от адреса слова.
т.е n base xt // xt: addr u -- ??
Вот как его назвать?
Я пока называю NUM>??
как назвать получше без потери смысла и записи имени в виде предложения?
Вариант num>str>непонятная_ересь не предлагать

Здесь мне сложно сказать что-то конкретное. Возможно, это слово нужно разбить на два-три, возможно нельзя. Но опять я вижу ответ на вопрос КАК, а не ЧТО? Вы мне описываете как оно работает и то не полностью. Собственно num>str было бы нормальным именем, если бы не непоятная ересь с некими манипуляциями. Может их как раз вынести в отдельное слово? И писать в два слова num>str> manipulations ?
Все равно ведь эти манипуляции определены отдельно.


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 240
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Цитата:
В каком-то смысле это можно назвать префиксами. Только эти префиксы действуют не на одно следующее слово, а до следующего префикса.

А-а, что-то вроде [ IMMEDIATE-VOCS ] КОД1 КОД2 [ FORTH-VOCS ]

Цитата:
А заглянуть в исходный текст или справочник разве нельзя?

Можно, но мы же не знаем что мы наворотили пару лет назад :) Что из какого контекста было содрано.
А так это гибкий механизм упрощающий отладку и не только.

Цитата:
Тот же SPF намного легче изучать, заглядывая в исходные тексты.

Ага. Особенно когда простые вещи выражаются через сложные, по исходникам это сразу не просечёшь. Но дизассемблер наше всё 8)
Советую посмотреть дизассемблером слово ALSO для разогрева.
А так, хорошая система. Как и все остальные со своими закидонами.

_________________
Цель: написать форт-систему
Подцель: написать оптимизирующий компилятор
текущая задача: переписать if-else-then


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

Зарегистрирован: Вс мар 26, 2017 00:23
Сообщения: 40
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Victor__v писал(а):
Советую посмотреть дизассемблером слово ALSO для разогрева.
А так, хорошая система. Как и все остальные со своими закидонами.

Мммм.. Зачем дизассемблером? Во-первых, я знаю что ALSO делает. Во-вторых, в SPF есть какой-то оптимизирующий компилятор, так что дизассемблировать явно очень тяжко.
По-моему, чем реверсить чужую форт-систему, проще написать свою. :)


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 5996
Благодарил (а): 11 раз.
Поблагодарили: 95 раз.
vpn289 писал(а):
По-моему, чем реверсить чужую форт-систему, проще написать свою.

Вооооот! :wink:


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

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


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

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


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

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