Forth
http://fforum.winglion.ru/

Статья от Jeff Fox 1999 года
http://fforum.winglion.ru/viewtopic.php?f=8&t=3274
Страница 6 из 7

Автор:  Ilya [ Сб авг 08, 2020 12:43 ]
Заголовок сообщения:  Re: Статья от Jeff Fox 1999 года

Hishnik писал(а):
Ну... создается понемногу :)

Ilya писал(а):
который наконец сможет в dlopen и в CALLBACK: !?

"Сможет в dlopen" - писать в dlopen? Помещать аргументы в dlopen? :) Текущий сленг через некоторое время уйдет и будет выглядеть не столько смешным, сколько идентифицировать автора как сторонника субкультуры.

И вопрос по существу - а зачем именно так? Callback я попробовал с Qt и пришел к мнению, что это сложная работа с точки зрения компилятора. Обращаться к динамически создаваемым объектам таким образом - очень и очень нетривиальная задача. Есть вариант с отдельным потоком форт-машины и очередью сообщений. Пока нравится.


Создаётся - это есть гуд! :D

dlopen, dlsym, .... может и уйдут в прошлое, но пока этот механизм весьма востребован.

callback - может я не до конца всё понял, но как я смогу полноценно взаимодействовать с GTK, mosquitto, ... :wink:

Автор:  Hishnik [ Сб авг 08, 2020 14:22 ]
Заголовок сообщения:  Re: Статья от Jeff Fox 1999 года

KPG писал(а):
Интересно, а у QT как с 3D в этом плане?

У Qt есть OpenGL. Примеры есть, но я пока не пробовал совместить это с Фортом.

В целом wrapper может быть написан для любой библиотеки, тут вопрос скорее в плоскости дальнейшего использования. Если просто дублировать вызовы функций, постоянно переписывая их на Форте, то работы много, а для программиста ничего не изменится - ему будет нужно писать то же самое, но на Форте. Нужен другой формат описания, тогда подобный фреймворк будет иметь смысл.

Автор:  Hishnik [ Сб авг 08, 2020 14:25 ]
Заголовок сообщения:  Re: Статья от Jeff Fox 1999 года

Ilya писал(а):
callback - может я не до конца всё понял, но как я смогу полноценно взаимодействовать с GTK, mosquitto

Имитируется очередь, в нее помещаются сообщения, они разбираются в C++ и передаются движку Qt.

http://fforum.winglion.ru/viewtopic.php?f=23&t=3165&start=57

Автор:  Ilya [ Сб авг 08, 2020 22:03 ]
Заголовок сообщения:  Re: Статья от Jeff Fox 1999 года

Hishnik писал(а):
Ilya писал(а):
callback - может я не до конца всё понял, но как я смогу полноценно взаимодействовать с GTK, mosquitto

Имитируется очередь, в нее помещаются сообщения, они разбираются в C++ и передаются движку Qt.

http://fforum.winglion.ru/viewtopic.php?f=23&t=3165&start=57

Не очень понял, для чего усложнять себе жизнь с очередью!?
Например, есть такая штука "mosquitto_message_callback_set" и для чего мне нужен посредник в виде прослойки на C++, если mosquitto, GTK? ... могут дёрнуть нативно моё Форт слово и без посредников? :wink:

Автор:  Hishnik [ Вс авг 09, 2020 01:14 ]
Заголовок сообщения:  Re: Статья от Jeff Fox 1999 года

Ilya писал(а):
могут дёрнуть нативно моё Форт слово и без посредников?

Они-то могут, а как слову Форта что-то сделать с виджетом? Например, динамически создается объект "кнопка", а у него есть координаты. Понятно, что можно вызвать нечто вроде SetCoord (в зависимости от фреймворка), но Форту нужно теперь как-то сообщить вот этот адрес, который он должен вызвать. Qt на такие попытки сильно ругается.

Автор:  Total Vacuum [ Вт авг 11, 2020 12:08 ]
Заголовок сообщения:  Re: Статья от Jeff Fox 1999 года

Ilya писал(а):
Никоим образом образом не хочу вам дать по рукам и отговорить от создания "вашегофорта", но посмею заметить, что Mecrisp:
Отговорить меня не получится... :D

Ilya писал(а):
1) изначально подгружает входящий поток в ОЗУ и от туда тот "код" и запускается!
Это очень удобно! Отработал в ОЗУ, а уж потом ввёл compiletoflash и сохраняй уже в ПЗУ
Примерно такую же штуку задумал. Интересно, а как это реализовано в Mecrisp? По команде compiletoflash весь словарик из RAM сливается во Flash? Или же после этой команды включается режим "компиляция любых действий во Flash"? Если второй вариант, то не очень удобно, т.к. права на ошибку не имеем.

Ilya писал(а):
2) "жирность" в 16 Кб - так самый "чахлый" и очень распространенный МК который я использовал, stm32f103rb - это 128 Кб ПЗУ и 20 Кб ОЗУ!
Мягко говоря - хватает и с избытком!
Тоже приходилось иметь дело с F103, а позже и с F205/F407/F446. В перспективе планируем что-нибудь из 7-й серии пощупать. Эти МК используем там, где нужна производительность и/или богатый набор периферии. Для таких вещей Mecrisp подходит прекрасно, хотя здесь уже впору о каких-то зачатках ОС думать.

Но есть и другая ветка: F301/F031/F042/L011. Эти камешки используем там, где нужно компактное решение (у них бывают корпуса 5x5, 4x4 и даже 3x3 мм). И вот тут-то объем Flash уже может быть 16K или даже 8K. И если в 16K Mecrisp с горем пополам влезет, то в 8K, увы, никак. Да и в тех МК, где 16K на борту, от Mecrisp будет толку 0, т.к. Форт сжирает всю Flash, а на саму задачу места практически не остается. А хочется так: заливаем в МК компактное ядро и при необходимости дополняем нужными под каждую конкретную задачи библиотеками, например (возьмем примеры с потолка), АЦП и floating-point в одном случае и, допустим, графика и работа со строками в другом. Т.е. хочется предельно компактное и масштабируемое в нужную сторону решение.

Повторюсь, я ни в коем случае не критикую Mecrisp, просто она мне не подходит по ряду причин, кроме того, нет готового решения для всех перечисленных выше МК, например, нет для L011 и F446.

Ilya писал(а):
ЗЫ а разве на ZX Spectrum, Форт весил меньше?
Насчет ZX Spectrum точно не знаю. А вот в первом и единственном Форт-компьютере Jupiter Ace, где тоже процессор Z80, образ ROM весит 8K, но там не только Форт, но вроде еще и картинки для знакогенератора, какое-то подобие ОС и т.д... Предполагаю, что и для ZX Spectrum примерно того же порядка будет цифра.


Кстати, все-таки очень интересно, какая реализация Форт (не обязательно "стандартная", но и не слишком экзотическая) является самой компактной? Можно отдельно по категориям: для ПК/МК... :D

Автор:  KPG [ Вт авг 11, 2020 13:36 ]
Заголовок сообщения:  Re: Статья от Jeff Fox 1999 года

Total Vacuum писал(а):
Кстати, все-таки очень интересно, какая реализация Форт (не обязательно "стандартная", но и не слишком экзотическая) является самой компактной? Можно отдельно по категориям: для ПК/МК... :D

Кто ж знает? :)
Пробовал вариант amForth 5.0 сначала уместить в AtMega8515, но места почти не оставалось для дальнейшей работы с железом, а вот в AtMega162 уже где то половина Флеш занимало ядро (по словам можно посмотреть и запускалось в Proteus,
но правда вывод в терминал WORDS был одной строкой ввиду какого то глюка в Proteus и сам эмулятор не поддерживает самопрограммирование).
На местном форуме OCO пользователь делал свои Форт под AVR и LPC - вроде достаточно компактные.

P.S. Вероятно и eForth наиболее компактные системы http://forth.org/OffeteStore/OffeteStore.html
Camel возможно, навскидку.

для PDP-11 под ff303 вроде достаточно много занимало "полнофункциональное" ядро, но там код был не шитый и как то ещё оптимизировался, но думаю, при равных условиях в их построении, многие Форт для МК будут примерно в одних цифрах,
для тех же PIC, MSP430, STM8 ...

могу на форум загрузить свой вариант для PDP-11 для ff303 с инструментом Win32Forth 6 его сборки и эмулятором и amForth 5.0 но в топиках не работает прикрепление файлов (наверное опять что то "поломалось" в движке форума)
У Михаила есть интересные Форт разработки, но он "игнорирует" местный форум.

Автор:  Hishnik [ Вт авг 11, 2020 14:15 ]
Заголовок сообщения:  Re: Статья от Jeff Fox 1999 года

Total Vacuum писал(а):
Форт сжирает всю Flash, а на саму задачу места практически не остается. А хочется так: заливаем в МК компактное ядро и при необходимости дополняем нужными под каждую конкретную задачи библиотеками, например (возьмем примеры с потолка), АЦП и floating-point в одном случае и, допустим, графика и работа со строками в другом. Т.е. хочется предельно компактное и масштабируемое в нужную сторону решение.

А если тут пользоваться кросс-компиляцией? Форта в МК нет, есть только адресный интерпретатор, или же скомпилированный на PC код (но это потребует компилятора для ARM на Форте). Соответственно, в памяти МК лежит набор нужных функций, от Форта - функция "движка" на 10 строк, которая берет из массива очередной адрес и вызывает соответствующее слово, и массив, образованный программой на Форте, скомпилированной на PC.

Total Vacuum писал(а):
Кстати, все-таки очень интересно, какая реализация Форт (не обязательно "стандартная", но и не слишком экзотическая) является самой компактной? Можно отдельно по категориям: для ПК/МК...

Явно варианты свернутого ШК.

Автор:  KPG [ Вт авг 11, 2020 14:27 ]
Заголовок сообщения:  Re: Статья от Jeff Fox 1999 года

Hishnik писал(а):
[А если тут пользоваться кросс-компиляцией? Форта в МК нет, есть только адресный интерпретатор, или же скомпилированный на PC код (но это потребует компилятора для ARM на Форте).

Да, оно во многих системах такое и делается. (OCO для AVR, ARM так и делал, как, впрочем и в ff303 есть, но не проверял,
VFX Forth тоже разные варианты реализует, да и для, например 8051 ... также).
Всё в руках Фортёра и его пристрастиях :)

Автор:  Victor__v [ Вт авг 11, 2020 15:45 ]
Заголовок сообщения:  Re: Статья от Jeff Fox 1999 года

Total Vacuum писал(а):
Кстати, все-таки очень интересно, какая реализация Форт (не обязательно "стандартная", но и не слишком экзотическая) является самой компактной? Можно отдельно по категориям: для ПК/МК... :D


На правах саморекламы :)
Nova-forth весит 23 кб (именно код, в расчет не берется память изначально выделенная для пространства данных и словарных статей) для ОС Windows/
При этом на борту много всяких фич.
Если убрать примерно половину, то и в 15 кб может уместиться :)

Автор:  Hishnik [ Вт авг 11, 2020 16:38 ]
Заголовок сообщения:  Re: Статья от Jeff Fox 1999 года

Да, вот только у МК нет Windows, и вообще нет кода, кроме того, который будет явно скомпилирован.

Автор:  Victor__v [ Вт авг 11, 2020 16:46 ]
Заголовок сообщения:  Re: Статья от Jeff Fox 1999 года

Hishnik писал(а):
Да, вот только у МК нет Windows, и вообще нет кода, кроме того, который будет явно скомпилирован.

Ну так просили и в номинации для ПК :)

Автор:  Ilya [ Вт авг 11, 2020 22:31 ]
Заголовок сообщения:  Re: Статья от Jeff Fox 1999 года

Total Vacuum писал(а):
Или же после этой команды включается режим "компиляция любых действий во Flash"? Если второй вариант, то не очень удобно, т.к. права на ошибку не имеем.

На самом деле много удобнее работать, чем с amForth + есть слово cornerstone (что-то на вроде
forget) стираем из флэш до нужного слова.

Автор:  KPG [ Чт авг 13, 2020 16:27 ]
Заголовок сообщения:  Re: Статья от Jeff Fox 1999 года

Обсуждение разрабатываемого языка MPL использующего постфикс и стэк.
MPL (Programmiersprache) #self-hosting, #C++killer

Автор:  Hishnik [ Чт авг 13, 2020 17:13 ]
Заголовок сообщения:  Re: Статья от Jeff Fox 1999 года

KPG писал(а):
Обсуждение разрабатываемого языка MPL использующего постфикс и стэк.

Ужас какой-то. Даже не в плане языка, а в плане созданной атмосферы. Это что? Это для кого? Чем и кому это поможет? Это все называется "демонстрация квалификации".

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