Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 11:59

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 66 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: О компиляции литералов и новом виде слов
СообщениеДобавлено: Пт июн 20, 2014 16:59 
Удалил, т.к. коллеге вожжа под мантию попала.
Hishnik писал(а):
А данный форум является по сути базой данных, содержащей сообщения подписчиков. И принадлежит данная БД тому, кто платит за хостинг.


Последний раз редактировалось gudleifr Вс июн 14, 2015 20:51, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: О компиляции литералов и новом виде слов
СообщениеДобавлено: Вс июн 22, 2014 00:57 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
gudleifr писал(а):
налицо избыточное усложнение интерпретатора: сначала распознай и отчитайся о готовности, а потом анализируй заново (это хорошо, пока литералы простые, а если нужно для их разбора какие-то ресурсы выделять/освобождать?).
Для решения этой проблемы есть еще один путь! :)

Можно разделить интерпретатор и компилятор. Сделать компилятор, который все разбирает и компилирует. И интерпретатор, который разбирает и интерпретирует. Оба используют общие слова для получения следующего токена и т.п. У каждого свой словарик, который просматривается перед общим. Или такой словарик только у компилятора - тогда он получится "интерпретатором компиляции". Переключение между ними - слова [ ] ], , которые находятся в соотв. словаре. Да, переключения получается как сопрограммы - передача управления без возврата.

STATE тогда вообще не нужен. И не нужны проверки, с ним связанные. Получается, что пошли по предложению Броуди - вместо флага ( STATE ) устанавливаем обработчик (интерпретатор или компилятор), который в нужный момент получает управление. Такие обработчики получаются проще.

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

Слово ], компилирует верхнее значение со стека, оставленное словами, которые были в скобках [ ] (т.е были интерпретированы).

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О компиляции литералов и новом виде слов
СообщениеДобавлено: Вс июн 22, 2014 01:35 
in4 писал(а):
Для решения этой проблемы есть еще один путь!
Ваше решение мы уже разбирали: избыточность получается больше - вместо согласования по переменным получаем необходимость согласования по словарям - нужно добавлять слова параллельно в оба словаря. Представьте, что имеется ряд слов, запускающихся в обоих режимах - подобных LITERAL, S", MAKE - и Вам постоянно надо помнить, что они имеют зеркального брата-близнеца.
Кроме того, перепрыг в режиме компиляции из IMMEDIATE словаря в компилирующий тоже нетривиален, а, в случае наследования словарей - и геморройный.

И, кстати, если Вы будете использовать унифицированный NUMBER и там, и там, компилирующая обвязка займет ровно столько же места:
Код:
стандартно:
      NUMBER STATE @ IF НУЖНЫЙ-LTERAL THEN
у Вас:
   исполнение:
      NUMBER
   компиляция:
      NUMBER НУЖНЫЙ-LTERAL

Поиск НУЖНОГО-LITERAL все равно остается...
А если использовать разные NUMBER, то избыточность только увеличится. Как я писал, вершина словаря большую часть времени работы NUMBER занята и, все равно, все придется конвертировать на стеке...

P.S. В моей терминологии: если обычная FORTH-оптимизация - засовывание процедуры ВЫПОЛНИТЬ внутрь процедуры СИМВОЛ, то Ваше предложение - засунуть СИМВОЛ внутрь ВЫПОЛНИТЬ. Что в лоб, что по лбу.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: О компиляции литералов и новом виде слов
СообщениеДобавлено: Вс июн 22, 2014 11:25 
P.S. Чтобы стало понятнее, попробую привести практический пример.
Кто помнит, я люблю говорить о минимальном исполняемом FORTH-ядре (т.к. считаю, что оно должно писаться заново в начале каждой FORTH-разработки).

И, в этом случае NUMBER в своей классической форме оказывается жутко избыточным, т.к. должен понимать все виды литералов, которые могут потребоваться, а могут и не потребоваться в проекте.
Заменить его указателем? Жутко избыточно.

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

Остается эта самая проблема компиляции. Нужно заново проверять тип литерала. Например, в старой версии FOBOS это сводилось, насколько помню, к проверке переменных: DPL - положение десятичной точки (признак длинного) - и FLT - признак вещественного. Т.е. процедура выбора НУЖНОГО-LITERAL должна знать весь список переменных. А я собрался пересобирать NUMBER по потребности...

Отсюда и идея сделать компилятор независимым от NUMBER. Чтобы сам NUMBER управлял действиями, которые могут понадобиться при компиляции...
Решение, же коллеги in4 наоборот, требует усиления зависимости NUMBER - NUMBER-COMPILE.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: О компиляции литералов и новом виде слов
СообщениеДобавлено: Вс июн 22, 2014 12:39 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Словарь, распознающий литеральное значение удобен (в форке так сделано), и, главное, управляем.
Колизии типа:
: 2 4 ;
в таком случае можно блокировать.

Для вновь создаваемого форта проще сделать префиксы:
H: 1AF3 D: 12345 B: 010010101
и тому подобное. Тем более, что для начала обойтись 16 ричными числами можно запросто, а реализаация тривиальна.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О компиляции литералов и новом виде слов
СообщениеДобавлено: Вс июн 22, 2014 12:50 
mOleg писал(а):
Словарь, распознающий литеральное значение удобен
Это всего лишь превращение мелкого частного геморроя в глобальный. Компенсировать избыток формализмов в одном месте формализацией всего FORTH.

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

mOleg писал(а):
Тем более, что для начала обойтись...
А зачем накладывать искусственные ограничения?

ОФФТОП
Я понимаю так: словари могут требоваться в трех случаях: упрощении восприятия программ, техническими требованиями, желанием поупражняться в ООП.
В первом случае мы нарушаем принцип простоты FORTH, т.е. сводим на нет его преимущества. Тем более, что структурировать FORTH-программу можно и его исконными методами: блоками, оверлеями, подбором лексики.
Во втором случае делать что-то заранее бессмысленно. т.к. мы не можем предугадать этих самых технических требований.
В третьем - можно делать что угодно...


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: О компиляции литералов и новом виде слов
СообщениеДобавлено: Вс июн 22, 2014 20:31 
Не в сети
Moderator
Moderator
Аватара пользователя

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

не явялется это упрощением в общем виде.
Т.е. решение все же сложнее, чем лишний if, но плюсы перевешивают.

gudleifr писал(а):
А зачем накладывать искусственные ограничения?

Вы действительно настолько глупы, что неспособны понимать текст? Или опять "баба яга против"?

бб

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О компиляции литералов и новом виде слов
СообщениеДобавлено: Вс июн 22, 2014 20:53 
mOleg писал(а):
не явялется это упрощением в общем виде.
Тут Вы не поняли - VOCABULARIES в целом давали упрощение целевой компиляции, не Ваше предложение.
mOleg писал(а):
Вы действительно настолько глупы, что неспособны понимать текст?
Не надо так бурно реагировать, пожалуйста. Тем более, вылезая в оффтоп. Отказ от нормальной обработки регулярных выражений - это заведомое ограничение, что Вас так покоробило?


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: О компиляции литералов и новом виде слов
СообщениеДобавлено: Пн июн 23, 2014 11:23 
Возвращение к теме после оффтопа:

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

В распознавании литералов я нашел "очевидную" нишу для таких слов:
1. требуется не перегружать избыточными возможностями ядро
2. требуется иметь возможность его практически неограниченного расширения (без переписывания нового кода поверх старого)

Для структурных фортеров: очевидно, что приспособление вместо этой затычки в две команды сложного механизма fork-подобных словарей противоречит и (1), и (2).
И не имеет никакого отношения к словам с отложенным исполнением (в смысле, в них можно такие слова засунуть, но ничуть не хуже, чем в любое другое место).


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: О компиляции литералов и новом виде слов
СообщениеДобавлено: Пн июн 23, 2014 21:06 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
gudleifr писал(а):
рассуждаю о возможном применении слов с отложенным исполнением.
Про backtracking и идеи М.Гасаненко на Форуме уже читали?

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О компиляции литералов и новом виде слов
СообщениеДобавлено: Пн июн 23, 2014 21:17 
in4 писал(а):
backtracking и идеи М.Гасаненко
Там, как бы, берутся вполне проработанные механизмы и реализуются на FORTH. Меня интересует обратное - собственные механизмы FORTH.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: О компиляции литералов и новом виде слов
СообщениеДобавлено: Пн июн 23, 2014 22:02 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
in4 писал(а):
Про backtracking и идеи М.Гасаненко на Форуме уже читали?

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О компиляции литералов и новом виде слов
СообщениеДобавлено: Сб июн 28, 2014 00:36 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
gudleifr писал(а):
Там, как бы, берутся вполне проработанные механизмы и реализуются на FORTH. Меня интересует обратное - собственные механизмы FORTH.
А меня - оба варианта! И, по-моему, подходящий должен предлагаться IDE автоматически. А если не подходит, пользователь д. иметь возможность метапрограммированием сказать, почему.

Хищник писал(а):
Не стоит ожидать, что там что-то такое кроется.
Я и не ожидаю. Просто интересный механизм. И его можно использовать для отложенных вызовов и хитрых переходов.

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О компиляции литералов и новом виде слов
СообщениеДобавлено: Сб июн 28, 2014 00:43 
in4 писал(а):
И, по-моему, подходящий должен предлагаться IDE автоматически.
IDE - всего лишь возможность не делать руками "общепринятые" и "рутинные" куски. Но в FORTH нет общепринятых и рутинных кусков. Это, как предложить графу Толстому воспользоваться для более удобного написания "Войны и Мира" генератором бессмысленных сообщений.

in4 писал(а):
А меня - оба варианта!
А какое отношение это имеет к теме?

in4 писал(а):
Просто интересный механизм.
Самое смешное, что, как и в других подобных случаях, "эти интересные механизмы" неприменимы. Не бывает "просто списков", "просто множеств", "просто рекурсивного перебора"... Это реализации строго "по месту" обычных программистских приемов. Не FORTH должен уметь "делать backtracking", а программист. Причем, 1000 и 1 способом, в зависимости от задачи.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: О компиляции литералов и новом виде слов
СообщениеДобавлено: Вт июл 01, 2014 14:38 
Если кому-то непонятно, о чем идет речь:
[url]http://www.gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\7.NOWOSTI\2014.07.01\RASPOSNAWANIE%20LITERALOW\NUMBER%20I%20KONETNYE%20AWTOMATY[/url].


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

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


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

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


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

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