Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 02:31

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 80 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: Вторичная Forth-машина
СообщениеДобавлено: Ср июн 26, 2013 12:12 
<Удалено по причине большого количества флуда в теме>


Последний раз редактировалось gudleifr Ср янв 17, 2018 12:38, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Вторичная Forth-машина
СообщениеДобавлено: Вс июн 30, 2013 17:56 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Хгм...
У меня есть реализация диалекта Форта, где вместо STATE используются 2 разных цикла - цикл интерпретации и цикл компиляции. Переход осуществляется вызовом слов [ ] ], Это оно?
Но в этой системе используются общие словари и стеки.

Для вторичной машины хотелось бы некоторую автономность и защиту, чтобы отказы и ошибки в ней не влияли на основную. Т.е. чтоб всегда была возможность продолжать работу первичной (например, основного интерфейса с пользователем - Линукс так простыми средствами НЕ МОЖЕТ! :( ) и восстановить проблемную программу на вторичной машине. Но это уже приближается к уровню операционной системы. ;)

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вторичная Forth-машина
СообщениеДобавлено: Вс июн 30, 2013 18:10 
<Удалено по причине большого количества флуда в теме>


Последний раз редактировалось gudleifr Ср янв 17, 2018 12:39, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Вторичная Forth-машина
СообщениеДобавлено: Вс июн 30, 2013 18:34 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
gudleifr писал(а):
in4 писал(а):
Это оно?
Нет, речь не об усложнении цикла интерпретации, а его упрощении - несколько простых Forth-иков вместо одного большого (возможно, с общими областями).
Ну я и говорю - 2 простых специализированных интерпретатора вместо одного сложного... По-моему та же идея, но перенесенная на уровень выше. Можно посмотреть, что это дает. Дает упрощение интерпретатора путем убирания лишних проверок! Это как раз то, о чем я говорил - требуется другой стиль программирования! :( Который не получается полноценно использовать в стандартных системах :( . Ваша идея тоже столкнется с этой трудностью... ;) Рассмотрите это решение как пример применения вашей идеи. ;)
gudleifr писал(а):
in4 писал(а):
Линукс так простыми средствами НЕ МОЖЕТ!
А консоли?
То же. Если система загружена одной из задач на 100% - интерфейс тормозит. А не должен! Возможно, игра с приоритетами может помочь. Но говорил о простых средствах, а заранее узнать, что понадобится игра приоритетами - не знаю, как... :(

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вторичная Forth-машина
СообщениеДобавлено: Вс июн 30, 2013 18:51 
<Удалено по причине большого количества флуда в теме>


Последний раз редактировалось gudleifr Ср янв 17, 2018 12:39, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Вторичная Forth-машина
СообщениеДобавлено: Вс июн 30, 2013 19:09 
Не в сети

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

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

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

А если посмотреть описание применения машин в другой ветке, где Р-машина работает с F-машиной в одной системе, то получится, что машины поменяются местами относительно моего взгляда (==вторичная для отладки). Высокоуровневая программа (Р-машина) будет основной, а F-машина как раз и будет требовать бОльшую защищенность, ведь в ней возможен низкоуровневый доступ к системе и ошибки/опечатки(человек не идеален :( ) при обращении к таким средствам могут повредить систему.

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вторичная Forth-машина
СообщениеДобавлено: Вс июн 30, 2013 19:22 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
gudleifr писал(а):
"Раздвоять" ее ради уборки одного IF (двух, с учетом NUMBER)..? Стрельба из пушки по воробьям.
А тут уже методологические исследования... ;)

Длительные дискуссии о нужности STATE , нескольких состояний STATE и усложнения слов, их использующих, а также чтение литературы об этом - привели меня к мысли избавиться от STATE . И, т.к. все равно делал новый диалект, решил заодно и от SATATE избавиться. Слова получились проще, разделение словарей тоже легло в эту методику (использовал идеи colorForth-а Мура).

Вот теперь и смотрю, как с этим всем работать... ;) Удобно ли? Есть ли преимущества? :)

Кстати, слов, использующих STATE , довольно много. И добавление специфических расширений может значительно усложняться разными там "особенностями" использования... ;) Некоторые неочевидные вещи неожиданно всплывают, даже у Броуди описаны... А тут заодно от этой сложности избавился! :)

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вторичная Forth-машина
СообщениеДобавлено: Вс июн 30, 2013 21:07 
<Удалено по причине большого количества флуда в теме>


Последний раз редактировалось gudleifr Ср янв 17, 2018 12:39, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Вторичная Forth-машина
СообщениеДобавлено: Вс июн 30, 2013 22:35 
<Удалено по причине большого количества флуда в теме>


Последний раз редактировалось gudleifr Ср янв 17, 2018 12:39, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Вторичная Forth-машина
СообщениеДобавлено: Ср июл 03, 2013 20:50 
Не в сети

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

Что выбираем? ;)
А если рушится система и не сохранены промежуточные результаты?

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

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вторичная Forth-машина
СообщениеДобавлено: Ср июл 03, 2013 20:59 
<Удалено по причине большого количества флуда в теме>


Последний раз редактировалось gudleifr Ср янв 17, 2018 12:40, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Вторичная Forth-машина
СообщениеДобавлено: Ср июл 03, 2013 21:07 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
gudleifr писал(а):
Без STATE...
Доводы против:
1. Есть много слов , использующих STATE, - значит придется каждый лексикон делить на три части: 0-STATE, 1-STATE И ПОФИГУ-STATE. Т.е. держать лишние переменные и связи в системе словарей.
2. Компиляция состоит не только из честных вызовов ":" и ";", но из ИСПОЛНЕНИЯ кучи компилирующих слов и макросов. Уберешь проверку STATE из основного цикла - добавишь лишние проверки IMMEDIATE в цикл компиляции.
3. В общем случае, значений STATE может быть любое потребное число. Причем, это число будет зависеть от типа машины. Применяя машины без STATE, придется размножать однотипные машины.
4. Forth-машина "сама себя пишет". Разделив ее на две, получим машину, которая "не пишет" и машину, которая пишет "и себя, и подругу". Т.е. новые проверки типа "куда пишем?" Тогда уж - три машины: "не пишет", "пишет себя", "пишет другую"... Но, пардон, кто будет "писать третью"?
1. Да, но каждое слово получится проще и возможно повторное использование некоторых.
2. IMMEDIATE , как и проверка не нужна, т.к. состояние STATE (проверка состояния) заменяется соответствующим кодом. Вместо if(STATE)A else B будет выполняться A или B, причем какое из них, определяется заранее соответствующим интерпретатором (устанавливающим порядок просмотра словарей). Т.е. проверки не в каждой точке, а заранее на все слова ;)
3. Да. Да. Это плохо? ;) Они же будут проще и возможно повторное использование кода.
4. Не обязательно. Могут "писАть" друг в дружку. Это как раз больше похоже на вашу идею вторичных машин. В моей реализации со словарем работают обе машины, я специально не выискивал, кто пишет, а кто нет. Обе могут. И третья, если будет, тоже может. Хотя, есть примерчик, где 5 машин - одна запускающая и 2 пары Форт-системы с разнесенным циклом компиляция-интерпретация. Только памяти не хватило, чтоб словари разнести, пришлось накладывать, что и вызвало трудности. Когда в 64Кб размещены почти 3 Форт-системы с кодом x86 - места маловато... :( Поэтому и захотелось вторую систему... ;)

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вторичная Forth-машина
СообщениеДобавлено: Ср июл 03, 2013 21:27 
<Удалено по причине большого количества флуда в теме>


Последний раз редактировалось gudleifr Ср янв 17, 2018 12:40, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Вторичная Forth-машина
СообщениеДобавлено: Чт июл 04, 2013 16:23 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
gudleifr писал(а):
in4 писал(а):
1. Да, но каждое слово получится проще и возможно повторное использование некоторых.
В том-то и дело, это сильно усложнит работу со словарями.
in4 писал(а):
IMMEDIATE , как и проверка не нужна
Т.е. в словаре компиляции исполнение каждого не-IMMEDIATE слова должно выражаться в компиляции соответствующего слова из словаря исполнения? И что это упрощает?
Интерпретатор компиляции меняет порядок просмотра словарей. Поэтому те слова, которые раньше были IMMEDIATE , находятся в другом словаре, с которого и начинается поиск. Вроде все прозрачно. Разница становится заметна, если хочется реализовать что-то "эдакое". Тогда, возможно, надо будет создавать 2 слова, в словаре компиляции (macro) и в словаре интерпретации (forth). Причем одно может использовать другое.
gudleifr писал(а):
in4 писал(а):
Обе могут. И третья, если будет, тоже может.
Сами же говорили, одна читает, вторая пишет. А тут получается, фиг поймешь, кто куда пишет. В чем упрощение-то?

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

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вторичная Forth-машина
СообщениеДобавлено: Чт июл 04, 2013 16:57 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
in4 писал(а):
Интерпретатор компиляции меняет порядок просмотра словарей. Поэтому те слова, которые раньше были IMMEDIATE , находятся в другом словаре, с которого и начинается поиск. Вроде все прозрачно. Разница становится заметна, если хочется реализовать что-то "эдакое". Тогда, возможно, надо будет создавать 2 слова, в словаре компиляции (macro) и в словаре интерпретации (forth). Причем одно может использовать другое.

Следуя этой точки зрения - порождающее слово с использованием конструкция CREATE ... DOES> должно попасть, в общем случае, в два словарика.

P.S. Решение, как предполагается, наверное строится из "необременительного" посыла использования словариков для кросс компиляции


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

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


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

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


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

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