Forth http://fforum.winglion.ru/ |
|
Наработки от victor__v для СПФ http://fforum.winglion.ru/viewtopic.php?f=23&t=3105 |
Страница 2 из 6 |
Автор: | Hishnik [ Вс мар 12, 2017 16:23 ] |
Заголовок сообщения: | Re: Наработки от victor__v для СПФ |
Victor__v писал(а): Хватит ли двух кб под юзверей для функционирования многопоточного форта, если учесть что чуть более 1 кб уже занято? "640 кбайт хватит всем" |
Автор: | Victor__v [ Вс мар 12, 2017 17:39 ] |
Заголовок сообщения: | Re: Наработки от victor__v для СПФ |
Цитата: 640 кбайт хватит всем Ага, когда писался СПФ наверняка думали также Но можно и разширить при надобности, в разумных пределах ест-но |
Автор: | Hishnik [ Вс мар 12, 2017 19:18 ] |
Заголовок сообщения: | Re: Наработки от victor__v для СПФ |
Victor__v писал(а): Но можно и разширить при надобности, в разумных пределах ест-но Боюсь, что разумные пределы окажутся "от и до". Чем больше в Форте ограничений, даже указанных в документации, тем сложнее все удерживать в голове. То тут, то там вылезают разнообразные "нельзя", и можно запутаться. В целом программисту комфортнее, когда он считает, что ограничений нет вообще - памяти хватает, причем и на программу, и на данные, и на стек. Если чего-то не хватает, тогда надо думать. Но по возможности для словаря стоит дать не просто максимум, а на порядок больше, для данных - 1-2-4 Гбайт (все равно ОС просто фиксирует запрос, а физически страницы выделяет в момент обращения к ним), для стеков столько, чтобы типичные алгоритмы заведомо не приближались к пределу даже близко. В этом плане заводить еще одну структуру с фиксированным размером - еще одна константа для удержания в голове. Даже если "можно зайти в исходные тексты, поправить и перекомпилировать". Я пока не вижу существенных недостатков у идеи слепых ответвлений у словаря с локальными определениями внутри слов. Фактически это объявления с привязкой к глобальным адресам, но имена локальных объявлений видятся только пока создается слово. В этом плане можно хоть все слова иметь локальными, вложенными в общий MAIN, никаких дополнительных ограничений тут нет. |
Автор: | chess [ Вс мар 12, 2017 20:57 ] |
Заголовок сообщения: | Re: Наработки от victor__v для СПФ |
Hishnik писал(а): Я пока не вижу существенных недостатков у идеи слепых ответвлений у словаря с локальными определениями внутри слов. Фактически это объявления с привязкой к глобальным адресам, но имена локальных объявлений видятся только пока создается слово. В этом плане можно хоть все слова иметь локальными, вложенными в общий MAIN, никаких дополнительных ограничений тут нет. Это точно. Это не локальные объекты, а глобальные с локальными именами. Отсутствие ограничений в отличие от именно локальных объектов - их огромное преимущество. Можно создавать такие слова в любом месте внутри тела определений по ходу создания определений. В случае использования локально-именованных глобальных переменных не надо править всю программу как если бы это было в случае использования глобальных переменных с глобальными именами. При этом издержки на память под локальный словарь, который на порядки компактнее основного словаря, крайне малы. Для ПК, с его огромным объемом ОЗУ, так вообще незаметны. |
Автор: | loztcatz [ Вс мар 12, 2017 21:45 ] |
Заголовок сообщения: | Re: Наработки от victor__v для СПФ |
Вот не пойму, зачем создатели новых форт-систем умышленно ограничивают пользователя? Я считаю, что форт-система должна самостоятельно контролировать размеры системных объектов (стеков, user-space, и др.). Так же необходим отдельный стек для хранения динамических объектов контролируемых сборщиком мусора. |
Автор: | chess [ Вс мар 12, 2017 23:18 ] |
Заголовок сообщения: | Re: Наработки от victor__v для СПФ |
Проще зафиксировать. Кроме того выч. модель не предполагает интенствное использование дин. памяти. |
Автор: | Hishnik [ Вс мар 12, 2017 23:31 ] |
Заголовок сообщения: | Re: Наработки от victor__v для СПФ |
loztcatz писал(а): Вот не пойму, зачем создатели новых форт-систем умышленно ограничивают пользователя? Я считаю, что форт-система должна самостоятельно контролировать размеры системных объектов (стеков, user-space, и др.). Так же необходим отдельный стек для хранения динамических объектов контролируемых сборщиком мусора. Причин много. Самая простая - если стек будет разрастаться, подстраиваясь под запросы, ошибки в программе будут вызывать его бесконтрольное разрастание, вплоть до падения программы из-за нехватки места на диске. И это вместо сообщения "программа обратилась по неверному адресу памяти", которое появится довольно быстро. Чем больше таких мелких сущностей вида "кэш хэша юзер-спейса непривилегированного потока размером 4 кб, но вы можете изменить, потому что вам доступны исходные тексты", тем больше у программиста голова пойдет кругом. |
Автор: | Victor__v [ Пн мар 13, 2017 20:56 ] |
Заголовок сообщения: | Re: Наработки от victor__v для СПФ |
Цитата: Я считаю, что форт-система должна самостоятельно контролировать размеры системных объектов Это можно устроить. Надо будет всего лишь перелопатить весь стек возвратов. Но лучше см ответ хищника выше |
Автор: | loztcatz [ Пн мар 13, 2017 21:20 ] |
Заголовок сообщения: | Re: Наработки от victor__v для СПФ |
Хищник не убедителен. Я привык к динамическому стеку. |
Автор: | chess [ Пн мар 13, 2017 22:04 ] |
Заголовок сообщения: | Re: Наработки от victor__v для СПФ |
loztcatz писал(а): Хищник не убедителен. Я привык к динамическому стеку. Стек это лишь место для передачи параметров между процедурами. Сколько там может передано параметров? Единственно когда нужен большой стек, так это в случае рекурсивных вызовов процедур. Но вместо рекурсии может быть использован цикл, и нужда в динамическом стеке отпадет. |
Автор: | loztcatz [ Пн мар 13, 2017 22:52 ] |
Заголовок сообщения: | Re: Наработки от victor__v для СПФ |
chess писал(а): Стек это лишь место для передачи параметров между процедурами. Сколько там может передано параметров? Без ограничений.chess писал(а): Единственно когда нужен большой стек, так это в случае рекурсивных вызовов процедур. Но вместо рекурсии может быть использован цикл, и нужда в динамическом стеке отпадет. Походу у вас уйма времени, которое вы с удовольствием потратите на правку чужих библиотек и оптимизацию существующих рекурсивных алгоритмов. А когда возникнет реальная потребность в большом стеке создадите собственный, не так ли? Хотя нет, вы угадаете размер стека с трех попыток.
|
Автор: | chess [ Пн мар 13, 2017 23:15 ] |
Заголовок сообщения: | Re: Наработки от victor__v для СПФ |
Фортеры - одиночки. Ничего перелопачивать чужого не будут. А придумывать прцедуры с числом параметров больше 100 это увольте. Рекурсия в реально производительных программах не используется поскольку тормозит программу. А игры в функц. программирование меня не интересуют. |
Автор: | mOleg [ Вт мар 14, 2017 04:33 ] |
Заголовок сообщения: | Re: Наработки от victor__v для СПФ |
Цитата: Стек это лишь место для передачи параметров между процедурами. Сколько там может передано параметров? сам Форт использует стек достаточно экономично, однако, это не касается вызываемых им функций. Я с этим столкнулся в форке, когда расположил стек данных под стеком возвратов, и ста с лишним килобайт не хватало на элементарные функции (стек возвратов затирался) - пришлось поменять стеки местами. |
Автор: | Hishnik [ Вт мар 14, 2017 15:35 ] |
Заголовок сообщения: | Re: Наработки от victor__v для СПФ |
loztcatz писал(а): Походу у вас уйма времени, которое вы с удовольствием потратите на правку чужих библиотек и оптимизацию существующих рекурсивных алгоритмов. А когда возникнет реальная потребность в большом стеке создадите собственный, не так ли? Хотя нет, вы угадаете размер стека с трех попыток. Да где там чужие библиотеки-то? Тем более с интенсивным использованием рекурсии. У динамического стека есть большой недостаток, о котором я уже писал - он маскирует мелкие проблемы при отладке. Лучше, если программа упадет из-за переполнения стека, поскольку ошибка с балансом стека - это существенно более вероятный сценарий. А какие-то мифические тысячи библиотек от сотен разработчиков - это только повод придумать для Форта еще один пункт для реализации. Динамические стеки, хэши в словаре, тэгированные данные, собственная файловая система, IDE... что еще? В итоге такого навороченного Форта не будет по объективным причинам (кто-то не сможет, а кто сможет - тому не нужно), и пойдет очередной виток "у нас нет подходящего Форта". |
Автор: | Victor__v [ Вт мар 14, 2017 20:01 ] |
Заголовок сообщения: | Re: Наработки от victor__v для СПФ |
Цитата: А когда возникнет реальная потребность в большом стеке создадите собственный, не так ли? Создаём. И? Не так уж трудно создать массив и указатель А касательно регистров тут уж надо думать сколькими стеками можно обойтись. Мой вариант edi - стек исключений и указатель на юзверей ebp - данные esp - адреса возвратов. Можно ещё один стек выделить, как в форке под адреса регистр esi . Цитата: Фортеры - одиночки. Ничего перелопачивать чужого не будут. А если взять идейно и сохранить внешнее сходство, перелопатив внутренности? Простой пример библиотека динамических строк от Черезова и библиотека статических строк на стеке возвратов от меня. Внешнее сходство присутствует и там и там. Но внутренности отличаются значительно. Цитата: Я с этим столкнулся в форке, когда расположил стек данных под стеком возвратов, и ста с лишним килобайт не хватало на элементарные функции (стек возвратов затирался) - пришлось поменять стеки местами. Можно поподробнее? Я что-то не очень понял. |
Страница 2 из 6 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |