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

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Nova Дневник разработчика
Автор Сообщение
  Заголовок сообщения:  Re: Nova Дневник разработчика  Ответить с цитатой
Victor__v писал(а):
И как бы переход на реальные адреса упрощает систему.

Немного усложнится только ядро. Но оно обычно не очень большое, и не все слова работают с памятью. Всё, что написано на форте, останется таким-же простым.
Сообщение Добавлено: Ср мар 27, 2024 18:02
  Заголовок сообщения:  Re: Nova Дневник разработчика  Ответить с цитатой
Victor__v писал(а):
(система 64-битная).

Ну 20 бит номер, 44 бита смещение. Лям динамических куч по 16 терабайт. Хватит? :)
Сообщение Добавлено: Ср мар 27, 2024 17:59
  Заголовок сообщения:  Re: Nova Дневник разработчика  Ответить с цитатой
tsdima
Да, точно с ними такая же хрень возможна.
Но если со словарём ещё можно придумать практическое применение, то вот с переменными я затрудняюсь... Ну вот кому придёт в голову сделать что-то вроде
VARIABLE TEST
TEST CONSTANT TEST2

????

Цитата:
Может реальный адрес не обязательно должен быть реальным? Почему бы не сделать его типа "сегмент:смещение" и учесть это в словах (@ ! C@ C! и др.) работающих с памятью? Например 8 бит номер динамического пространства и 24 бит смещение (для 32-битного форта). Итого 256 пространств размером до 16Мб. Или мало?


Это копец как мало, что даже не смешно.

И как бы переход на реальные адреса упрощает систему. Сейчас у меня указатель на словарь как раз и предоставляет собой указатель на связку база+смещение в 16 байт. (система 64-битная).
Сообщение Добавлено: Ср мар 27, 2024 16:45
  Заголовок сообщения:  Re: Nova Дневник разработчика  Ответить с цитатой
Victor__v писал(а):
А ведь устаревшие указатели могут быть дополнительно спрятаны пользователем.

А разве устаревшим указателем может быть только адрес словаря? А как же адреса переменных?

Может реальный адрес не обязательно должен быть реальным? Почему бы не сделать его типа "сегмент:смещение" и учесть это в словах (@ ! C@ C! и др.) работающих с памятью? Например 8 бит номер динамического пространства и 24 бит смещение (для 32-битного форта). Итого 256 пространств размером до 16Мб. Или мало?
Сообщение Добавлено: Ср мар 27, 2024 14:17
  Заголовок сообщения:  Re: Nova Дневник разработчика  Ответить с цитатой
Что ж, придётся признать страшную правду. В моей форт-системе много костылей и несуразностей :o

Сейчас думаю как избавиться от одного слова VOC>REAL

Что слово делает – превращает идентификатор словаря в реальный адрес для последующих манипуляций. Идентификатор не более чем указатель на структуру, которая содержит:
1) Указатель на переменную, где хранится адрес пространства.
2) Смешение в данном пространстве до словаря.

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

В общем, хочется и чтоб реальный адрес был и чтоб динамические пространства были, и чтоб по красоте, и никаких структур на горизонте. Где ТРИЗ когда он так нужен)

Варианты обхода проблемы, какие мне в голову пришли:

1) Храним структуру словаря в реальном пространстве
Преимущества: Простота реализации.
Недостатки: Некрасиво, словарные структуры будут выбиваться из общего ряда с другими словами. Нельзя произвольно изменять размер словарной структуры.

2) Изменяем словарь в динамическом пространстве при соответствующих событиях.
Преимущества: на самом деле сделать это не так уж и сложно
Недостатки: Код вида CURRENT @ CONSTANT test-voc будет багоопасным, что не есть хорошо. При каждом обновлении придётся перетряхивать стек контекста, переменную CURRENT. А ведь устаревшие указатели могут быть дополнительно спрятаны пользователем.
Сообщение Добавлено: Пн мар 25, 2024 15:53
  Заголовок сообщения:  Re: Nova Дневник разработчика  Ответить с цитатой
Просто список значений.
Если код ошибки дошёл до верхнего уровня, то вместо вывода, собственно, кода будет выводиться заданная в THROW-MES: THROW-MES; строка.
Сообщение Добавлено: Чт фев 15, 2024 16:19
  Заголовок сообщения:  Re: Nova Дневник разработчика  Ответить с цитатой
Victor__v писал(а):
Механизм наименования ошибок.

А подробнее?....
:shuffle;
Сообщение Добавлено: Чт фев 15, 2024 12:25
  Заголовок сообщения:  Re: Nova Дневник разработчика  Ответить с цитатой
Выпилил очередную порцию багов у тут пришли идеи в мой мозг.

Механизм наименования ошибок.
Аля:
THROW-MES:
-2003 : WORD NOTFOUND
-2012 : FORTH TRANSLATE ERROR
not_value : IS NOT VALUE
virtual_empty : OOP: VIRTUAL FUNC NOT INIT!!!
THROW-MES;
Сообщение Добавлено: Ср фев 14, 2024 18:06
  Заголовок сообщения:  Re: Nova Дневник разработчика  Ответить с цитатой
В ЦК был обнаружен странный баг.

Уж не знаю почему, но часть компилирующих слов по какой-то причине вообще не реагируют на изменения.

И слово REFILL (возможно не одно) по какой-то причине использует неверное смещение. При том в самом форте всё норм, но новын слова будут ссылаться не на то места.

Буду копаться или переписывать ЦК,
Сообщение Добавлено: Пт дек 22, 2023 18:13
  Заголовок сообщения:  Re: Nova Дневник разработчика  Ответить с цитатой
Все-таки возможность создавать дополнительные точки входа в функцию достаточно полезна.

Например, недавно сия возможность помогла мне расширить функциональность трансляции строк с числа с минимумом усилий.
Как так вышло
Слово STR>NUM разбирает числа со знаком и с префиксом 16-ричности. Совершенно нормально слово схавает строку "-0xAA1234", но на днях потребовалось транслировать просто числа без этих наворотов.

Путь нормального человека: написать отдельное слово для трансляции. А после сделать рефакторинг слова STR>NUM

Путь курильщика: использовать слово с наворотами, но вызывать его без определения наворотов :))
Сообщение Добавлено: Чт авг 24, 2023 17:42
  Заголовок сообщения:  Re: Nova Дневник разработчика  Ответить с цитатой
Когда писал функцию для преобразования строки в число с плав. точкой обнаружил ошибку при трансляции обычных чисел. Не забыть исправить.

Также добавил простейшие функции для работы с хипом.
H.NEW
H.FREE
H.S+
H.N+
H.UN+
H.B+
H.W+
H.DW+
H.CELL+
H.FILE+


В мыслях написать оптимизатор (опять, да) Всё что нужно это ассемблер где-то на 30 мнемоник. такой же дизассемблер и вселенская скука.
Сообщение Добавлено: Вт авг 15, 2023 11:46
  Заголовок сообщения:  Re: Nova Дневник разработчика  Ответить с цитатой
Hishnik писал(а):
Так если программист сам начинает изменять эту словарную структуру, убирая что-то из поиска, то наверное он понимает что делает?

Надеюсь)
Только по логике исключение из поиска словарной структуры не должно влиять на работоспособность кода.
Сообщение Добавлено: Вт июл 25, 2023 12:51
  Заголовок сообщения:  Re: Nova Дневник разработчика  Ответить с цитатой
Так если программист сам начинает изменять эту словарную структуру, убирая что-то из поиска, то наверное он понимает что делает?
Сообщение Добавлено: Пн июл 24, 2023 18:26
  Заголовок сообщения:  Re: Nova Дневник разработчика  Ответить с цитатой
Hishnik писал(а):
Как-то оно немного искусственно выглядит. Язык же достаточно низкоуровневый, может быть, программист сам будет следить, что он удалил, чтобы потом это не вызывать?

С одной стороны верно, но с другой стороны почему работоспособность внешних вызовов должна зависеть от словарной структуры?
Сообщение Добавлено: Пн июл 24, 2023 17:51
  Заголовок сообщения:  Re: Nova Дневник разработчика  Ответить с цитатой
Как-то оно немного искусственно выглядит. Язык же достаточно низкоуровневый, может быть, программист сам будет следить, что он удалил, чтобы потом это не вызывать?
Сообщение Добавлено: Пт июл 21, 2023 18:07

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


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