Forth
http://www.fforum.winglion.ru/

Особенности системы
http://www.fforum.winglion.ru/viewtopic.php?f=58&t=3184
Страница 1 из 2

Автор:  Victor__v [ Пн июл 23, 2018 23:42 ]
Заголовок сообщения:  Особенности системы

Поправлено от 12.06.2020

Разрядность: 32 бита
ОС: Windows 7, 8 (остальные не тестировал)
Код: нативный
Память: отдельное хранение кода, данных и словарных статей
ЦК форт-системы: Nova
Поиск слов в системе: по 4-байтному хешу определяется нить и по ней осуществляется поиск в контексте.

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

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

Файлы транслируются частями и при этом стек возвратов не пляшет. Что позволяет задать вначале файла требуемые значения переменных и откатить их при конце трансляции, а также выполнить код на обратном ходу.
К примеру, 0x10 BASE KEEP! ALSO ' PREVIOUS >R

Можно задать свои собственные инлайн-примитивы, пометив созданное слово флагом INLINE
Константы и переменные (VARIABLE) это инлайн-слова.

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

Обработчик слов словаря FORTH умеет:

  • транслировать числа: 123 -123 0x123 -0x123
  • транслировать символы: 'a' 'b' 'C'
  • загружать файлы
  • адресовать файлы от ранее использованной (последней) директории.
  • загружать файлы без обработки, указав в конце пути к файлу :BIN .К примеру, DOCS/HELP.TXT:BIN
  • вызывать слова из других словарей: VOC1::VOC2::WORD

Связь с внешним миром:
стандартные вызовы Stdcall: и WINAPI:
си-вызовы Cdecl: N-Cdecl:
обратные вызовы CALLBACK:
создание потока TASK> START

Автор:  mOleg [ Вс мар 03, 2019 20:43 ]
Заголовок сообщения:  Re: Особенности системы

У меня вопросы:
сколько систем вы сколько-нибудь изучили до написания проекта?
для какой цели служит проект?
собираетесь ли вы писать документацию к системе?

Автор:  Victor__v [ Вс мар 03, 2019 21:45 ]
Заголовок сообщения:  Re: Особенности системы

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

Одну, СПФ. Форк не осилил.
just for fun
Собираюсь потихоньку.

Автор:  mOleg [ Пн мар 04, 2019 18:03 ]
Заголовок сообщения:  Re: Особенности системы

Victor__v писал(а):
Одну, СПФ. Форк не осилил.

Жалко, т.к. СПФ не самая интересная система.
(а форк, таки форк СПФа, и, как бы не совсем другая, хотя и во многом отличная система)

Victor__v писал(а):
just for fun

спасибо, все остальные вопросы отпали

Автор:  Victor__v [ Пн мар 04, 2019 19:20 ]
Заголовок сообщения:  Re: Особенности системы

mOleg писал(а):
Жалко, т.к. СПФ не самая интересная система.

Не надо расстраиваться :D В конечном итоге получилось что-то среднее между Форком и СПФ :))

mOleg писал(а):
(а форк, таки форк СПФа, и, как бы не совсем другая, хотя и во многом отличная система)

Знаем, видели, пытались понять исходники. Однако из либ ничего не приглянулось :weep;

mOleg писал(а):
Victor__v писал(а):
just for fun

спасибо, все остальные вопросы отпали

А что? Таки-есть, что предложить?

Автор:  mOleg [ Пн мар 04, 2019 20:23 ]
Заголовок сообщения:  Re: Особенности системы

Victor__v писал(а):
Не надо расстраиваться :D В конечном итоге получилось что-то среднее между Форком и СПФ :))

Я рассматривал практически все системы, к исходникам которых можно дотянуться в поисках интересного для форка.

Victor__v писал(а):
Знаем, видели, пытались понять исходники. Однако из либ ничего не приглянулось :weep;

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

Victor__v писал(а):
спасибо, все остальные вопросы отпали
А что? Таки-есть, что предложить?

подход just for fun не предполагает методичной продолжительной работы, исправления ошибок, создания интересных целостных концепций, чего Форту таки не хватает. Одна из проблем Форта- внесение инородных приглянувшихся механизмов без попыток адаптации их(или с минимальными попытками адаптации) к стилю(духу\методики) языка, в результате чего появляется перетяжеленная часто конфликтующая с другими механизмами "куча мала". И еще есть вопрос(важный для меня), где усложнять систему? Ну, к примеру, ускорение поиска в словарях может производиться налету, а не за счет компиляции структуры в хранилище кода\данных.

Автор:  Victor__v [ Пн мар 04, 2019 21:23 ]
Заголовок сообщения:  Re: Особенности системы

mOleg писал(а):
Я так понимаю, вы пытаетесь идти по тому же пути.

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

mOleg писал(а):
подход just for fun не предполагает методичной продолжительной работы, исправления ошибок, создания интересных целостных концепций, чего Форту таки не хватает.

Хм, ну не знаю. В ядре вроде бы ошибок нет. Последний баг был аж в конце 2018-го. Дальше странностей всплывало.

mOleg писал(а):
И еще есть вопрос(важный для меня), где усложнять систему? Ну, к примеру, ускорение поиска в словарях может производиться налету, а не за счет компиляции структуры в хранилище кода\данных.


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

Автор:  mOleg [ Пн мар 04, 2019 21:38 ]
Заголовок сообщения:  Re: Особенности системы

Victor__v писал(а):
Просто убираю из ядра рудименты.

Интересно, а что по-вашему в ядре СПФа является рудиментом (можно примеры?)

Victor__v писал(а):
Хм, ну не знаю. В ядре вроде бы ошибок нет. Последний баг был аж в конце 2018-го. Дальше странностей всплывало.

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

Victor__v писал(а):
Возможность того, чтобы каждый словарь мог влиять на процесс компиляции кода.
Сразу вытекают такие плюшки, как возможность простой оптимизации, поддержка корректности лок. переменных, возможность пост. определения слов. И всё это без переопределения уже существующих слов.

Я вообще взял отпотолочный пример для иллюстрации :D

Автор:  Victor__v [ Пн мар 04, 2019 21:56 ]
Заголовок сообщения:  Re: Особенности системы

mOleg писал(а):
Интересно, а что по-вашему в ядре СПФа является рудиментом (можно примеры?)

PAD и всё, что с этим связано.
Трансляция чисел двойной длины через точку
SOURCE и всё, что с этим связано.
Всё остальное может быть или не быть. по вкусу так сказать.
Только причём Нова и ядро СПФ?
Когда писал форт, на СПФ сильно не заглядывался.

mOleg писал(а):
Т.е. вопрос в том, когда вам надоест.

Наверно, никогда. Совершенство, оно знаете ли, требует вечности :)

mOleg писал(а):
Я вообще взял отпотолочный пример для иллюстрации :D

В Нове уже есть и юзается некоторыми либами :)
P. S. сделал об этом пометку в первом сообщении

Автор:  ath [ Пн мар 04, 2019 22:38 ]
Заголовок сообщения:  Re: Особенности системы

Victor__v писал(а):
mOleg писал(а):
Интересно, а что по-вашему в ядре СПФа является рудиментом (можно примеры?)

PAD и всё, что с этим связано.
Трансляция чисел двойной длины через точку
SOURCE и всё, что с этим связано.

Про PAD мы, наверное, никогда не сойдёмся. Влюблён в него. :shuffle;

А вот про SOURCE очень интересно. Какие альтернативы вы считаете лучше?

Автор:  Victor__v [ Пн мар 04, 2019 22:50 ]
Заголовок сообщения:  Re: Особенности системы

ath писал(а):
А вот про SOURCE очень интересно. Какие альтернативы вы считаете лучше?

Никакие.
SOURCE SOURCE-ID и пр. совершенно лишние.
Достаточно трёх переменных (указатель на буфер, тек. позиция, кол-во символов в буфере) и функцию обновлению источника (REFILL).
Набор исчерпывающий. Зачем было в СПФ городить дополнительный огород вокруг этого мне непонятно.

Автор:  ath [ Пн мар 04, 2019 23:17 ]
Заголовок сообщения:  Re: Особенности системы

Спасибо. А в СПФ это из ANS:
http://forth.sourceforge.net/standard/d ... 1.6.1.2218

Видимо, для переносимой реализации INCLUDE-FILE

Автор:  mOleg [ Пн мар 04, 2019 23:17 ]
Заголовок сообщения:  Re: Особенности системы

мне очень интересен этот вопрос, т.к. в ряде случаев заявляющий о рудиментах не понимает почему механизмы появились, почему сделаны именно так, а не иначе, и, возможно, просто не умеют пользоваться ими. Форматное преобразование строк в Форте сделано шикарно 8)
Victor__v писал(а):
PAD и всё, что с этим связано.

тут я с вами не соглашусь никак.

Victor__v писал(а):
Трансляция чисел двойной длины через точку

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

Victor__v писал(а):
Всё остальное может быть или не быть. по вкусу так сказать.

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

?Почему я об этом пишу: написание нового Форта интересно и полезно для других в ряде случаев:
- когда опробуется новая концепция (поиск развития языка);
- когда происходит вдумчивое изучения языка;
- когда пишется обучающий материал (ну, например, как можно реализовать Форт на другом языке);
- когда пишется реализация под конкретную задачу(Тот же СПФ).
В общем, что-то сколько-нибудь амбициозное 8)
Может и еще что-то, но не, just for fun, потому что это польза только для вас 8) (так вижу я)

Victor__v писал(а):
Только причём Нова и ядро СПФ?
Когда писал форт, на СПФ сильно не заглядывался.

просто интересно чего вы хотите добиться в итоге. 8)))

Victor__v писал(а):
А вот про SOURCE очень интересно. Какие альтернативы вы считаете лучше?

Никакие.
SOURCE SOURCE-ID и пр. совершенно лишние.

о ужас, ведь у меня все еще сложнее реализовано 8) аж 3 с лишним кБ(правда с комментариями)
8)

Автор:  Victor__v [ Пн мар 04, 2019 23:33 ]
Заголовок сообщения:  Re: Особенности системы

mOleg писал(а):
про PAD

прокладку нафиг. Очередная флеймогонная тема, замнём для ясности


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

"Вкус" в переносном смысле. И хватит обсуждать ядро СПФ, тема не про него.


mOleg писал(а):
просто интересно чего вы хотите добиться в итоге. 8)))

Захватить весь мир и вести его к процветанию, естественно, через форт :))
Я вообще хотел изначально сделать более простую и логичную систему по сравнению с СПФ, сохранив и приумножив все его понравившиеся мне плюшки и добавить свои.
Полученным результатом я доволен.

Автор:  ath [ Вт мар 05, 2019 00:29 ]
Заголовок сообщения:  Re: Особенности системы

Victor__v писал(а):
SOURCE SOURCE-ID и пр. совершенно лишние.
Достаточно трёх переменных (указатель на буфер, тек. позиция, кол-во символов в буфере) и функцию обновлению источника (REFILL).
Набор исчерпывающий. Зачем было в СПФ городить дополнительный огород вокруг этого мне непонятно.

Погуглил немножко.

Похоже, что в стандарте SOURCE буферизует файл построчно. Также SOURCE используется в автоматических тестах транслятора, очень полезная вещь:
http://www.forth200x.org/documents/html/testsuite.html

Конечно, там можно SOURCE заменить на что-то вроде TIB #TIB — если интерпретация файлов реализована построчно, через TIB

Не знаю, как сейчас в Нове. Если вы сделали интерпретацию файлов через проекцию в память, Test Suite придётся переписывать. По меньшей мере определение ERROR1

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