Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт сен 08, 2026 17:23

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 179 ]  На страницу Пред.  1 ... 8, 9, 10, 11, 12
Автор Сообщение
 Заголовок сообщения: Re: Как европейские колхозники превращают Forth в труп
СообщениеДобавлено: Чт авг 27, 2026 21:41 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1381
Благодарил (а): 4 раз.
Поблагодарили: 20 раз.
Hishnik писал(а):
В целом выглядит или как галлюцинация нейросети или как совершенно непрактичная игра с машинным кодом, воображая, что это какая-то "глубокая и тонкая оптимизация". Описание эффекта, честно говоря, выглядит жутковато. Если при работе будут вот такие сюрпризы, проще выкинуть эту псевдооптимизацию... или весь транслятор, если там автор упрется.

Тут надёжнее будет залезть в документацию к г-форт (джи-форт?), но кому из нас оно надо...

С учётом того, что нейросети могут писать лютый бред

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как европейские колхозники превращают Forth в труп
СообщениеДобавлено: Чт авг 27, 2026 22:00 
Не в сети

Зарегистрирован: Сб май 19, 2007 18:05
Сообщения: 91
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Victor__v писал(а):
Цитата:
составляет ровно 2–3 элемента.

Как наврать в одном предложении)

Где ты увидел враньё?

Victor__v писал(а):
Вообще тема интересная, если это именно оптимизация уже существующего кода. Но тогда про глубину непонятно.

Тебе непонятен термин "глубина стека"?

Victor__v писал(а):
Чё бы не все допустимые регистры забить при необходимости.

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

Victor__v писал(а):
Если же это именно на лету а-ля "скомпилировал слово и пошёл дальше", то такое выделение регистров выглядит ну очень сомнительным.

Поясни.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как европейские колхозники превращают Forth в труп
СообщениеДобавлено: Чт авг 27, 2026 22:09 
Не в сети

Зарегистрирован: Сб май 19, 2007 18:05
Сообщения: 91
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Вот ещё от ИИ

"Краткая анатомия JIT-оптимизатора Gforth

Традиционный Форт работает медленно, потому что он постоянно гоняет данные через оперативную память: берёт число из ОЗУ, кладёт на стек, берет второе, складывает, возвращает в ОЗУ.

JIT-компилятор в Gforth 0.7.9 выполняет динамическую трансляцию Форт-слов в нативные машинные инструкции процессора. При этом он применяет несколько агрессивных стратегий:

1. Регистровое кэширование стека (Везде, не только в циклах)

Процессор работает с регистрами (RAX, RBX) в сотни раз быстрее, чем с ОЗУ. Оптимизатор Gforth переносит вершину стека данных Форта прямо в регистры процессора:
• TOS (Top of Stack — верхний элемент): Почти всегда сидит в регистре RBX].
• NOS (Next on Stack — второй элемент): Садится в регистр R12.

Если вы пишете простое слово : 2+ 2 + ;, оптимизатор не трогает стек в ОЗУ. Он генерирует для CPU одну нативную команду: add rbx, 2 . Это работает со скоростью света!

2. Оптимизация вызовов (Inlining / Подстановка)

Если Форт-слово короткое, оптимизатор полностью стирает сам факт вызова этого слова. Он берет его машинный код и вшивает прямо в место вызова. Это убирает накладные расходы на прыжки по памяти (call / ret).

3. Оптимизация ветвлений (if ... else ... then)
Компилятор анализирует условия и превращает их в инструкции аппаратного предсказания переходов CPU (Conditional Moves, такие как cmov), чтобы процессор не терял такты на пустых остановках конвейера вычислений.
"


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как европейские колхозники превращают Forth в труп
СообщениеДобавлено: Чт авг 27, 2026 22:17 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1381
Благодарил (а): 4 раз.
Поблагодарили: 20 раз.
marc_2006 писал(а):
Victor__v писал(а):
Цитата:
составляет ровно 2–3 элемента.

Как наврать в одном предложении)

Где ты увидел враньё?


Там глубина ровно какая? 2 элемента или 3 элемента? :))

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как европейские колхозники превращают Forth в труп
СообщениеДобавлено: Чт авг 27, 2026 22:19 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 8208
Благодарил (а): 30 раз.
Поблагодарили: 148 раз.
Victor__v писал(а):
Тут надёжнее будет залезть в документацию к г-форт (джи-форт?), но кому из нас оно надо..

В принципе, название g<что-то> сразу наводит на ассоциации, что это для Линукса. То есть "как бы стандартный Форт, если у вас Gnome". Уж если за такое взялись, можно было ожидать, что будет проведена какая-то работа для его адаптации под типичные задачи Линукса. За десятки лет. Если этого за такое время не произошло, то вряд ли уже произойдет - тут работает "ловушка потраченных усилий". Что интересно, Эртл уже когда-то выступал на Еврофорте с докладом "тут в Си очень много неоднозначностей, поэтому надо gforth переписать на ассемблере". То есть вроде бы коррекция... вот только 1) сам тезис про уход от Си - как минимум предмет дискуссии 2) бессистемная игра с терминами "производительность, размер, надежность" ни к чему хорошему не приводит. Надо было идти к пользователям (а скорее интеграторам) Линукса и спрашивать, что они хотят видеть в продукте.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как европейские колхозники превращают Forth в труп
СообщениеДобавлено: Чт авг 27, 2026 22:23 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1381
Благодарил (а): 4 раз.
Поблагодарили: 20 раз.
marc_2006 писал(а):
Victor__v писал(а):
Вообще тема интересная, если это именно оптимизация уже существующего кода. Но тогда про глубину непонятно.

Тебе непонятен термин "глубина стека"?


Вопрос в контексте.
Если у нас есть некий условный код слова на форте и оптимизатор г-форта всё слово перехреначивает по регистрам, то вопросов нет. Хоть 3 элемента стека кэшируй, хоть 10.

Если же это г-форт по дефолту в режиме исполнения/компиляции кэширует 3 верхних элемента стека... Что могу сказать, месье знает толк в извращениях)

Опять жеж из текста ии не совсем понятно, что она имела ввиду

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как европейские колхозники превращают Forth в труп
СообщениеДобавлено: Чт авг 27, 2026 22:28 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1381
Благодарил (а): 4 раз.
Поблагодарили: 20 раз.
marc_2006 писал(а):
Если вы пишете простое слово : 2+ 2 + ;, оптимизатор не трогает стек в ОЗУ. Он генерирует для CPU одну нативную команду: add rbx, 2 . Это работает со скоростью света!
"


Идиёт ваш ИИ! :lol:
Надо было LEA RBX, [RBX+2]. Памяти занимает столько же, но LEA не трогает регистр флагов!

И да, что-то мне подсказывает, что в компухтере скорость передачи данных чуточку ниже скорости света...

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как европейские колхозники превращают Forth в труп
СообщениеДобавлено: Чт авг 27, 2026 22:42 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1381
Благодарил (а): 4 раз.
Поблагодарили: 20 раз.
marc_2006 писал(а):

Victor__v писал(а):
Если же это именно на лету а-ля "скомпилировал слово и пошёл дальше", то такое выделение регистров выглядит ну очень сомнительным.

Поясни.


Допустим у нас по коду чистый стек в форт-системе, без кэширования в регистрах.

Код DUP

MOV RDX, [RBP] ; копируем значение из стека в регистр для последующей вставки
LEA RBP, [RBP+CELL] ; увеличиваем глубину стека
MOV [RBP], RDX ; копируем значение на верхушку стека
RET

Код DUP, если вершина стека кэшируется в регистре RAX (например)
LEA RBP, [RBP+CELL]
MOV [RBP], RAX
RET


Код DUP, если 2 верхних элемента стека кэшируются в регистре RAX и RCX (например)
LEA RBP, [RBP+CELL]
MOV [RBP], RCX
MOV RCX, RAX
RET

Как это будет при кэшировании 3 элементов даже не хочу писать, это страшно)

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как европейские колхозники превращают Forth в труп
СообщениеДобавлено: Чт авг 27, 2026 23:36 
Не в сети

Зарегистрирован: Сб май 19, 2007 18:05
Сообщения: 91
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Victor__v писал(а):
marc_2006 писал(а):
Если вы пишете простое слово : 2+ 2 + ;, оптимизатор не трогает стек в ОЗУ. Он генерирует для CPU одну нативную команду: add rbx, 2 . Это работает со скоростью света!
"


Идиёт ваш ИИ! :lol:

Он не мой, а гугловский ;)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как европейские колхозники превращают Forth в труп
СообщениеДобавлено: Чт авг 27, 2026 23:39 
Не в сети

Зарегистрирован: Сб май 19, 2007 18:05
Сообщения: 91
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
"ФИНАЛЬНЫЙ ТРИУМФ НАД QT", "Безошибочный и Окончательный код", "Ультимативный запуск через экспорт переменных Linux", "Безошибочный и Абсолютно Автономный код", "Безошибочный и Идеальный Форт-код", "Железобетонный запуск через системные флаги CPATH и LIBRARY_PATH", "Кристально чистый и независимый код", "Запуск ультимативного JIT-моста", "Кристально чистый Форт-код на чистом Ассемблере", "Триумфальная проверка восстановленного файла", "Великий триумф нативного ассемблера!", "Великий триумф нативного ассемблера!", " Финальный триумфальный запуск!", "ВЕЛИКАЯ ФИНАЛЬНАЯ ПОБЕДА", - вот такие описания программ этот ИИ давал. Он видимо был ориентирован на подержание интереса пользователя.

Но не смотря на это, благодаря этому ИИ оказалось возможным написать на форте программки работающие с QT и GTK, программу компилирующую форт-программы в автономный исполняемый файл (elf), программу "Множество Мандельброта", "Жизнь" Конвея и утилитку для линукса. ;).


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как европейские колхозники превращают Forth в труп
СообщениеДобавлено: Пт авг 28, 2026 09:52 
Не в сети

Зарегистрирован: Вс авг 21, 2022 14:56
Сообщения: 62
Благодарил (а): 2 раз.
Поблагодарили: 6 раз.
Hishnik писал(а):
В принципе, название g<что-то> сразу наводит на ассоциации, что это для Линукса. То есть "как бы стандартный Форт, если у вас Gnome".

g не всегда равно Gnome, иногда это GNU. А GNU = "GNU's Not Unix!"


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как европейские колхозники превращают Forth в труп
СообщениеДобавлено: Пт авг 28, 2026 18:14 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2226
Благодарил (а): 9 раз.
Поблагодарили: 76 раз.
marc_2006 писал(а):
Но не смотря а это, благодаря этому ИИ оказалось возможным написать на форте программки работающие с QT и GTK, программу компилирующую форт-программы в автономный исполняемый файл (elf), программу "Множество Мандельброта", "Жизнь" Конвея и утилитку для линукса. ;).

А, почему бы и нет?
Если Форт хоророшо воспринимается человеческим мозгом (или напрочь отвергается не понятными умами), то с ИИ здесь тоже так же.
У меня тоже есть интересные наброски в общении с Gemini по Форт идеям, но уровень решаемых задач с /на Форт ему ещё не поднимал. :)

P.S. Предполагается ли какая то, к примеру, публикация по такому полученному опыту?
Гугл и возможно его "индусы" прокачивают Форт в его моделях.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как европейские колхозники превращают Forth в труп
СообщениеДобавлено: Пт авг 28, 2026 19:33 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 8208
Благодарил (а): 30 раз.
Поблагодарили: 148 раз.
tsdima писал(а):
g не всегда равно Gnome, иногда это GNU. А GNU = "GNU's Not Unix!"

Да, GNU тоже. Тут не угадать, на что акцент делался. Но если на GNU, то замах еще больше. Nncron хотя бы был интересен чтобы им пользоваться, а gforth - только специфичный бренд и приглашение войти в секту.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как европейские колхозники превращают Forth в труп
СообщениеДобавлено: Пн сен 07, 2026 02:41 
Не в сети

Зарегистрирован: Сб май 19, 2007 18:05
Сообщения: 91
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Если кому будет интересно, то в JIT-компилятре gforth'а локальные переменные, которые объявлены { и }, можно применять только внутри циклов, поскольку будучи использованными вне циклов они корежат стек возвратов.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 179 ]  На страницу Пред.  1 ... 8, 9, 10, 11, 12

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


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

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


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

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