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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Скриптовый Forth
СообщениеДобавлено: Пт авг 11, 2023 17:29 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1302
Благодарил (а): 4 раз.
Поблагодарили: 18 раз.
awarm писал(а):
Victor__v писал(а):
То, что Си называют языком низкого уровня, я слышал. Но вот Питон... Дожили)

А то-ж!!! :))
На самом деле, так никто и не высказал ничего по теме вопроса, кроме Hishnik, с CREATE DOES>.
Правда я не совсем понял, зачем именно эта конструкция, и чем она так сильно отличается от обычного объявления слов. Но это, наверное, именно опыт использования языка, и глубокое понимания концепции.

У меня всё попроще. Труба пониже, дым пожиже...

Тем не менее, всё таки. Какие слова нужны обязательно?
Моё понимание:
1. Базовые слова:
+ - 1+ 1- / * AND OR XOR MOD /MOD NEGATE > < = !=
DUP DROP OVER SWAP 2DROP 2OVER 2SWAP ROT . CR EMIT
VARIABLE ! @ CONSTANT
IF ELSE THEN DO LOOP
: ; WORDS # ( )
2. Общие слова
." S" F"
USING - Загрузка библиотек кода на forth
Работа с HTML:
HTTPGET ( url -- response err_code )
REST_GET( url params -- response err_code )
REST запросы:
REST_PUSH REST_PUT REST_PATCH REST_DELETE ( url headers data -- response err_code )
Вот эта часть мне очень не нравится, т.к. headers необязательный параметр, и вопрос, как его формировать остается. По идее, должен быть что-то вроде key-value массива, но как это синтаксически формируется в форте я не знаю. В тестовой реализации сделал в питоне DICT@ и дальше именованные значения (props) через P! ( o v p -- o ) и P@ ( o p -- v ). На C++ через вектора можно хранить. Но скорее всего я изобретаю велосипед.
Синтаксис операторов работы со строками я так и не нашел. Буду благодарен, если кто подскажет

JSON@ ( o -- json ), JSON! ( json -- o ) - Формирование json строк из объекта и обратно. Так же встает вопрос структуры хранения значений в форт. Сейчас на питоне реализовано через встроенный dict. На С++ не реализовано.

Спецслово проверки на объект ?O ( o -- o -1| x 0) на верх стека добавляет признак объект или нет был верхним на стеке. Сделал оставление объекта на стеке, для того, что бы избежать лишнего DUP

Вот примерно то, к чему пришел на сегодняшний день. Жду комментарием и умных мыслей.


Не хватает
BEGIN UNTIL WHILE REPEAT для создания циклов.

Со строками сложнее. Пригодятся SEARCH (см. стандарт) SPLIT (часто на практике), плюс операции для сравнения строк.
Про плав. точку уже все сказали...
По поводу JSON – когда я делал транслятор json-текста у меня все это внутри представлялось, грубо говоря, как список с подсписками. Дерево, короче.

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



За это сообщение автора Victor__v поблагодарил: awarm
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Скриптовый Forth
СообщениеДобавлено: Сб авг 12, 2023 22:55 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7990
Благодарил (а): 26 раз.
Поблагодарили: 144 раз.
А как раз headers и можно убрать под CREATE DOES. Для начала можно просто сделать обертку, которая будет сама их подставлять, и этим может и ограничиться.

Есть мнение, что строки как S" - это что-то из области сектантства. Удобнее работать со строками формата "как на используемой платформе". Соответственно, бывшие популярными в 90-х counted strings с c-addr, u как-то не у дел с повсеместными ASCIIZ (или UTF). Еще можно посмотреть на слова 2SWAP 2OVER и прочие 2... Может быть, если нужно активное манипулирование стеком, сделать PICK XCHG и подобные. Кстати, с asciiz строками этого стекового перетряхивания становится меньше.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Скриптовый Forth
СообщениеДобавлено: Вс авг 13, 2023 12:57 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 485
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 24 раз.
:D С моей колокольни не видно:
- возможности объявления массивов (т.е. нужно либо что-то вроде array, либо create/allot, ну или просто allot на худой конец, чтобы объявить переменную через variable, а затем добить до нужного размера при помощи allot, кроме того, запятая для инициализации может пригодиться);
- возможности доставать содержимое стека с глубины 4 и более, т.е. команды pick (на случай, если в подпрограмме 4 и более параметров);

Кстати, вместо != можно использовать вычитание. Вместо = тоже, но задействовать ветку else в идущей следом конструкции if-else-then.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Скриптовый Forth
СообщениеДобавлено: Ср авг 16, 2023 11:09 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
В этом проекте VFC
есть тоже некоторое представление о минимальном наборе слов в базисе Форт.

P.S. На местном форуме подобные темы обсуждения тоже были и в разресе что делает или не делает Форт именно Фортом.

awarm писал(а):
Выбор OS и железа со стороны "ПК" вообще не имеет никакого отношения к заданному вопросу, т.к. система клиент-сервер.

На форуме пользователей FreePascal/Lazarus есть пара таких топиков.
Браузер в качестве View в десктопных проектах (WebUI)
и новое обсуждение
Клиент-серверное приложение


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Скриптовый Forth
СообщениеДобавлено: Ср окт 09, 2024 18:15 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1302
Благодарил (а): 4 раз.
Поблагодарили: 18 раз.
Микро-оффтоп (оффтоп, ли?)

Сейчас я больше связан с движком МедиаВики (вики-сайты, все дела). В качестве полустандарта там в качестве скриптового языка используется Lua. Ну и потрахался я с ним, когда реализовывал функционал на сайте. Там, блин, даже функции split нету :(

Возникла у меня идея запихнуть вместо Lua наш любимый форт.

Вот только при здравом размышлении... а зачем?

Ну ок, компиляция на лету, даёт увеличение скорости и т.п. Только вот это не имеет смысла на сайте, где страницы кешируются.

Т. е. в сферическом вакууме форт будет лучше луа в этой сфере, особенно если на борт закинуть все нужные функции да и без детских болезней реализации луа в данной среде.

Но зачем?

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


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

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


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

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


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

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