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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 85 ]  На страницу Пред.  1, 2, 3, 4, 5, 6
Автор Сообщение
 Заголовок сообщения: Re: Nova Дневник разработчика
СообщениеДобавлено: Пн дек 02, 2019 14:00 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 973
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Как же приятно взяться за форт спустя несколько месяцев!
Покопаться в своих либах. Попытаться понять их логику. А поняв, почикать их по самое нехочу, чтоб работало и стало проще.
Видимо, разработка на форте это не только принцип снизу вверх, но и принцип из дуба в берёзу (последняя тоньше, такое вот сравнение).

А теперь по изменениям.
Добавлено слово TEMP-OUT ( temp-voc -- ) убирает из стека контекста временный словарь и освобождает память под него. А то расплодилось в Нове временных словарей и все нужны :)
Описана внутри форта структура используемая для перехвата ошибок. Теперь её можно использовать не боясь обвинений в хаках. Что задокументировано, то не хак (c).

Мысли:
Создание для Новы вторичного форт-транслятора в байткод.
Обоснование зачем надо: форт-системы обычно загружают все определения, даже если они не будут использоваться в конечном коде. Это лишние затраты памяти. Поэтому дух кривого перфекционизма требует как-нибудь это исправить.
Соответственно, при загрузке исходников они изначально компилируются в простейший байткод (хватит нескольких инструкций: вызов форт-слова, вызов слова опр. в байт-коде, число, адрес слова в байт-коде).
Если такой транслятор не смог отработать, то и фиг с ним. Отранслируем стандартным.
Весь байткод будет собираться во временном словаре.
Если нам понадобится этот код, то система найдёт его через NOTFOUND (ибо влом усложнять механизм стандартного поиска), преобразует байткод в натив и скомпилирует в текущий словарь.

Понятно изложил мысль?

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Nova Дневник разработчика
СообщениеДобавлено: Пн дек 02, 2019 17:10 
Не в сети

Зарегистрирован: Пт июн 06, 2008 14:21
Сообщения: 109
Откуда: Карелия
Благодарил (а): 1 раз.
Поблагодарили: 3 раз.
Victor__v писал(а):
Как же приятно взяться за форт спустя несколько месяцев!
Покопаться в своих либах. Попытаться понять их логику. А поняв, почикать их по самое нехочу, чтоб работало и стало проще.
Видимо, разработка на форте это не только принцип снизу вверх, но и принцип из дуба в берёзу (последняя тоньше, такое вот сравнение).

А теперь по изменениям.
Добавлено слово TEMP-OUT ( temp-voc -- ) убирает из стека контекста временный словарь и освобождает память под него. А то расплодилось в Нове временных словарей и все нужны :)
Описана внутри форта структура используемая для перехвата ошибок. Теперь её можно использовать не боясь обвинений в хаках. Что задокументировано, то не хак (c).

Мысли:
Создание для Новы вторичного форт-транслятора в байткод.
Обоснование зачем надо: форт-системы обычно загружают все определения, даже если они не будут использоваться в конечном коде. Это лишние затраты памяти. Поэтому дух кривого перфекционизма требует как-нибудь это исправить.
Соответственно, при загрузке исходников они изначально компилируются в простейший байткод (хватит нескольких инструкций: вызов форт-слова, вызов слова опр. в байт-коде, число, адрес слова в байт-коде).
Если такой транслятор не смог отработать, то и фиг с ним. Отранслируем стандартным.
Весь байткод будет собираться во временном словаре.
Если нам понадобится этот код, то система найдёт его через NOTFOUND (ибо влом усложнять механизм стандартного поиска), преобразует байткод в натив и скомпилирует в текущий словарь.

Понятно изложил мысль?

NOTFOUND так много забирает времени при сборке... 5-ть 10-ть кило лишнего, сейчас никого не напугают..


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Nova Дневник разработчика
СообщениеДобавлено: Пн дек 02, 2019 17:21 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 973
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
F-MAP писал(а):
NOTFOUND так много забирает времени при сборке... 5-ть 10-ть кило лишнего, сейчас никого не напугают..


Чё ито он много времени забирает? Я несколько не понял, проясните, будьте любезны

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Nova Дневник разработчика
СообщениеДобавлено: Вс дек 22, 2019 23:15 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 973
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Думаю, сделаю в Нове функцию печати (TYPE) пользовательским вектором для расширяемости.

А то решил повозиться тут с трансляцией JSON и обратил внимание, что скопировать тот или иной объект трудная задача, особенно если он вложенный.
Поэтому пришла в голову мысль:
Поскольку в ООП для JSON зашита функция печати, то механизм такой:
Перенаправить весь TYPE-вывод в строку (у нас получится классический json) и результат снова отранслировать!
Дело осталось за малым - научиться перенаправлять вывод вместо файла в строку и желательно не квадратно-гнездовым способом :shuffle;
Впрочем, это не сложно

_________________
Цель: сделать 64-битную Нову под Винду


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6917
Благодарил (а): 17 раз.
Поблагодарили: 112 раз.
Victor__v писал(а):
Дело осталось за малым - научиться перенаправлять вывод вместо файла в строку и желательно не квадратно-гнездовым способом
Впрочем, это не сложно

Сделать >STR бывает полезно. Потом с этой строкой можно делать все, что обычно делают со строками.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Nova Дневник разработчика
СообщениеДобавлено: Пн дек 23, 2019 18:36 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 973
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Сейчас в Нове используются 4 пространства:
Пр. кода (изначальное)
Пр. данных (строки и переменные)
Пр. словарных статей (хранение заголовков слов идоп. информации)

И особняком стоит
Пр. пользовательских переменных, поскольку ни с одним из пр. выше оно не пересекается.

Мне тут подумалось, что должен быть механизм создания пространств.
Ведь по факту можно выделить ещё 2 пространства
Отдельное под переменные
Отдельное под лямбды и безымянные участки кода.

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

Что для этого нужно?
Пока опускаем насколько это вообще востребовано.

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

Зададим каждое пространство так:

STRUCT: space
CELL -- S>hash \ хешированое обозначение пространства
CELL -- S>start \ начало старта пространства
CELL -- S>end \ конец пространства
CELL -- S>xt \ код для корректности контроля пространств.
STRUCT;

Тогда пространства служебная информация будет распределена так:
Код (основное пр-во), Строки, Словарные статьи, Переменные, Лямбды

Соот-но у структуры словаря должны быть такие поля:
...
4 CELLS -- L>LLFA
CELL -- L>MFA \ смещение до указателя, по которому хранится указатель до пространства механизма пространств. А что вы хотели? Так проще организовать наследование.
CELL -- L>compFA
CELL -- L>notfoundFA

Сейчас в Нове с доп. полями сложнее.

Как выразить тогда слова

: DP \ должен возвращать указатель, где хранится HERE соотв. пространства. только для стандартных
0
BEGIN BEGIN
space *
CURRENT @ L>MFA @ @ + S>start EXIT
ALTERNATIVE: 1 AGAIN \ на данные
ALTERNATIVE: 2 AGAIN \ на слов. статьи

;


: HERE
0
BEGIN BEGIN
space *
DP + @ EXIT
ALTERNATIVE: 1 AGAIN \ на данные
ALTERNATIVE: 2 AGAIN \ на слов. статьи

а с остальными словами для управления пространствами придётся поизголяться :)


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

Из недостатков: придётся повозиться со словами для работы с кодофайлом :)

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Nova Дневник разработчика
СообщениеДобавлено: Вт дек 24, 2019 18:42 
Не в сети
Moderator
Moderator
Аватара пользователя

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

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


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 973
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Где код этих хранилищ можно посмотреть в форке?
Желательно дайте путь до файлов)

И тогда уж скажите, что ещё интересного есть в форке)
А то мне вспоминается только настраеваемый поиск в словарях

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Nova Дневник разработчика
СообщениеДобавлено: Чт дек 26, 2019 20:50 
Не в сети

Зарегистрирован: Пн июл 01, 2019 14:01
Сообщения: 69
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Victor__v писал(а):
F-MAP писал(а):
NOTFOUND так много забирает времени при сборке... 5-ть 10-ть кило лишнего, сейчас никого не напугают..


Чё ито он много времени забирает? Я несколько не понял, проясните, будьте любезны

Мне вообще не нравится такой механизм обработки ненайденных слов поиском NOTFOUND в словаре. Чем он лучше простого векторизированноно определения, которое можно в любой момент изменить/восстановить без проблем, + нет лишних заголовков, + не тратится время на поиск одного и того же слова по несколько раз?


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 973
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
f02732 писал(а):
Мне вообще не нравится такой механизм обработки ненайденных слов поиском NOTFOUND в словаре. Чем он лучше простого векторизированноно определения, которое можно в любой момент изменить/восстановить без проблем, + нет лишних заголовков, + не тратится время на поиск одного и того же слова по несколько раз?


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

Цитата:
+ не тратится время на поиск одного и того же слова по несколько раз?

Это в СПФ NOTFOUND каждый раз искался в словаре, в Nova просто прописано в поле, откуда обработчик берётся.

_________________
Цель: сделать 64-битную Нову под Винду


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

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


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

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


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

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