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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Минимальное демо для новых трансляторов
СообщениеДобавлено: Вт июл 20, 2021 20:48 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Обсуждаем демо примеры для пишущихся трансляторов. Абстрактная "поддержка" не очень интересна, интереснее смотреть, что уже можно написать. В качестве отправной точки из известных сборников интересно посмотреть на Rosetta code, но там многие примеры заставляют думать над алгоритмами, а не над языком. Примеры, опять же, нужны "потребительские", а не вида "обменять местами числа на стеке" - это внутреннее дело Форта.

В качестве затравки можно рассмотреть:
1. Решить квадратное уравнение ( a, b, c -- x1, x2, t | f )
2. Построить график синуса с заданными параметрами частоты, амплитуды и начальной фазы.
3. Передать строку в UART.
4. Реализовать "арканоид в прямоугольнике" - показать анимацию простого объекта, отскакивающего от стенок".
5. ?

Идея в том, что если НИЧЕГО из этого пишущийся Форт не может, то.... что вообще он может?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Минимальное демо для новых трансляторов
СообщениеДобавлено: Ср июл 21, 2021 11:48 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Нова.
1.
Код:
~er/float/code32.f \ для удобства, чтоб не писать вычесление кв. корня методом Ньютона

~er/locals/r-local.f \ чтоб наглядней и проще

: SQRT int>F FSQRT F>int ;

: KOREN { a b c \ D -- x1 x2 2|x 1|0 (0 - решений нет) }
\ пограничные случаи
a 0= b 0= AND
   IF 0 EXIT THEN
      
a 0=
   IF c NEGATE b / 1 EXIT THEN

\ сам код
b b * 4 a c * * - TO D
D 0 <   
   IF 0 EXIT THEN
D 0=
   IF b NEGATE 2 a * / 1 EXIT THEN

b NEGATE D SQRT + 2 a * /
b NEGATE D SQRT - 2 a * /
2DUP =
   IF NIP 1 EXIT THEN
2
;


2.
Думаю, моих скромных знаний хватит, дабы построить такое в OpenGL, необходимости просто не было.

3.
Никогда не сталкивался в этим. Но сложностей, наверно, особых нет.

4.
А вот тут моих скромных знаний по OpenGL не хватает :oops:

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Минимальное демо для новых трансляторов
СообщениеДобавлено: Ср июл 21, 2021 14:52 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
В первом случае наглядный ответ на вопрос, нужны ли локальные переменные...

Victor__v писал(а):
Думаю, моих скромных знаний хватит, дабы построить такое в OpenGL, необходимости просто не было.

Можно и не в OpenGL. Это вопрос плавающей точки с синусом и, возможно, графики. Синус в виде звездочек сегодня как-то.... устарел? :)

Victor__v писал(а):
Никогда не сталкивался в этим. Но сложностей, наверно, особых нет.

Это на уровне "открыть файл", но для UART нужно еще поработать со структурой DCB (указать скорость передачи). Все это показывает, как транслятор стыкуется с ОС.

Victor__v писал(а):
А вот тут моих скромных знаний по OpenGL не хватает

Опять же, можно и 2D. Можно и звездочку в рамке из псевдографики. Тут уже вопрос таймера.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Минимальное демо для новых трансляторов
СообщениеДобавлено: Ср июл 21, 2021 17:16 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Hishnik писал(а):
. В качестве отправной точки из известных сборников интересно посмотреть на Rosetta code, но там многие примеры заставляют думать над алгоритмами, а не над языком.


На Forth, к примеру, представлено 540 решённых примеров.
на Factor - 900 решений
Oforth - 304
8th - 89
Joy - 42
Cat - 3
...
На каких то языках с https://concatenative.org/wiki/view/Front%20Page
вообще сложно найти.

P.S. Может, интереснее, разбирать какие то решения, например, уже представленные на этом ресурсе и решённые в рамках Форт.
Как примера, например, использования каких то существующих библиотек для Forth (FFL, SFL ..)
XML/Output on Forth
XML/Input in Forth
...
Вроде как, это может быть интересно, в реалиях использования Форт для "широкой" аудитории. :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Минимальное демо для новых трансляторов
СообщениеДобавлено: Ср июл 21, 2021 17:58 
Не в сети

Зарегистрирован: Чт июн 03, 2021 16:13
Сообщения: 26
Благодарил (а): 0 раз.
Поблагодарили: 7 раз.
Думаю, что требования к минимальной демо версии зависят от платформы для которой она пишется. Если форт система рассматривается для десктопа, то думаю следующее:

1. Поддержка слов Core.
2. Поддержка арифметики с плавающей точкой.
3. Поддержка интерфейса с ОС - вызовы системных функций из длл, калбеки.

Думаю, что этих 3х пунктов вполне достаточно для реализации всего остального.
... и по традиции документация к этому всему может отсутствовать - ну ведь демо же).


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Минимальное демо для новых трансляторов
СообщениеДобавлено: Ср июл 21, 2021 18:12 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Blackice писал(а):
1. Поддержка слов Core.
2. Поддержка арифметики с плавающей точкой.
3. Поддержка интерфейса с ОС - вызовы системных функций из длл, калбеки.

"Поддержка" - это не то. Что сделать-то можно с такой поддержкой? А то может оказаться, что на конкретные примеры чего-то не хватает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Минимальное демо для новых трансляторов
СообщениеДобавлено: Ср июл 21, 2021 18:44 
Не в сети

Зарегистрирован: Чт июн 03, 2021 16:13
Сообщения: 26
Благодарил (а): 0 раз.
Поблагодарили: 7 раз.
Hishnik писал(а):
"Поддержка" - это не то. Что сделать-то можно с такой поддержкой? А то может оказаться, что на конкретные примеры чего-то не хватает.


Под "поддержкой", я имел ввиду - реализовано и готово к использованию.

Чего же может не хватить если есть доступ к функциям ОС?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Минимальное демо для новых трансляторов
СообщениеДобавлено: Чт июл 22, 2021 12:11 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Нова
4.
Код:
~er/array/2array.f
spf/~day/common/console.f
~er/other/timer@.f

: RND TIMER@ DROP ;

15 15 1 HEAP-2ARRAY VALUE ARR

: UPD-SCREEN CLS 0 0 AT-XY ;

: INIT ARR 2ARRAY-ITER: C! ;

: PRINT
0 ['] DROP >R
BASE KEEP HEX
ARR 2ARRAY-ITER:
   OVER 15 = IF CR >R DROP 0 R> THEN
   SWAP 1+ SWAP
   \ для красоты. Цвета выбраны наобум
   C@ >R
   R@ 0x0B = IF 5 5 TEXT-ATTR THEN
   R@ 0x0 = IF 1 1 TEXT-ATTR THEN
   R@ 0xA = IF 9 9 TEXT-ATTR THEN
   R> .
   0 1 TEXT-ATTR
;

HEX
B B B B B B B B B B B B B B B
B 0 0 0 0 0 0 0 0 0 0 0 0 0 B
B 0 B 0 0 0 0 0 0 B 0 0 0 0 B
B 0 0 0 0 0 0 0 0 B B 0 0 0 B
B 0 0 B B 0 0 0 0 B 0 0 0 B B
B 0 0 B 0 0 0 0 0 0 0 0 0 0 B
B 0 0 B 0 0 0 0 B 0 0 0 0 0 B
B 0 0 0 0 0 0 A 0 0 0 0 0 0 B
B B 0 0 0 0 B 0 0 0 0 B 0 0 B
B 0 0 0 0 0 0 0 0 0 0 B 0 0 B
B 0 0 0 0 0 0 0 0 0 0 B 0 0 B
B 0 0 0 0 0 0 0 0 0 0 B 0 0 B
B 0 0 0 B B 0 0 0 0 0 0 0 0 B
B 0 0 0 0 0 0 0 0 B 0 0 0 0 B
B B B B B B B B B B B B B B B
INIT
DECIMAL

\ движения
: DG-LD \ x y -- x+1 y+1
1+ SWAP 1+ SWAP
;

: DG-RD \ x y -- x-1 y+1
1+ SWAP 1- SWAP
;

: DG-LT \ x y -- x-1 y-1
1- SWAP 1+ SWAP
;

: DG-RT \ x y -- x-1 y-1
1- SWAP 1- SWAP
;

: G-L \ x y -- x y+1
1+
;

: G-R 1- ; \ x y -- x y-1

: V-D >R 1+ R> ; \ x y -- x+1 y
: V-T >R 1- R> ; \ x y -- x+1 y

CREATE NAP
' DG-LD ,
' DG-RD ,
' DG-LT ,
' DG-RT ,
' G-L ,
' G-R ,
' V-D ,
' V-T ,

VECT MOVING

\ выбираем рандомное движение
: CHANGE-MOVING RND 8 MOD ABS CELLS NAP + @ TO MOVING ;

: STENA? \ x y -- flag
ARR ELEM-ADDR C@ 0xB =
;

: ARCANE
7 7 \ изначальная позиция
2>R
CHANGE-MOVING
BEGIN
UPD-SCREEN PRINT
700 PAUSE      \ не заморачиваемся с таймером
BEGIN 2R@ MOVING 2DUP STENA? WHILE 2DROP CHANGE-MOVING REPEAT
0 2R> ARR ELEM-ADDR C! 
2>R
0xA 2R@ ARR ELEM-ADDR C!
AGAIN
;

ARCANE


Цитата:
1. Поддержка слов Core.
2. Поддержка арифметики с плавающей точкой.
3. Поддержка интерфейса с ОС - вызовы системных функций из длл, калбеки.

1. Бред
2. Нужно не всегда
3. Это и так есть на борту. Смысл?


Вложения:
arcane.jpg
arcane.jpg [ 242.83 Кб | Просмотров: 11461 ]

_________________
Цель: сделать 64-битную Нову под Винду
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Минимальное демо для новых трансляторов
СообщениеДобавлено: Чт июл 22, 2021 13:38 
Не в сети

Зарегистрирован: Чт июн 03, 2021 16:13
Сообщения: 26
Благодарил (а): 0 раз.
Поблагодарили: 7 раз.
Victor__v писал(а):
Цитата:
1. Поддержка слов Core.
2. Поддержка арифметики с плавающей точкой.
3. Поддержка интерфейса с ОС - вызовы системных функций из длл, калбеки.

1. Бред
2. Нужно не всегда
3. Это и так есть на борту. Смысл?


Поясните вашу точку зрения. Вы в своем примере обошлись без слов ядра?
Соглашусь, что поддержка слов для работы с плавающей точкой может быть опциональна, но лучше иметь (для графики например).
А без #3 вообще никуда. В вашей системе это само по себе было "на борту"?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Минимальное демо для новых трансляторов
СообщениеДобавлено: Чт июл 22, 2021 13:43 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 494
Откуда: СПб
Благодарил (а): 19 раз.
Поблагодарили: 8 раз.
Victor__v писал(а):

3. Это и так есть на борту. Смысл?

И в каком Форте это есть?
Это было в spf4, но он 32b и теперь практически не юзабелен на большинстве дистрибутивах. :(


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Минимальное демо для новых трансляторов
СообщениеДобавлено: Чт июл 22, 2021 13:48 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
1. Core подразумевает Стандарт и соот-но все слова из этого самого стандартного core. Зачем они?
В моём форте нет таких "замечательных вещей", как PAD, построчное чтение из источников, ENVIROMENT, блоков, слова ROLL и прочего. И без этого все работает.

2.
"Лучше иметь на всякий случай" причина так себе.
Либо вы используейте форт в большинстве случаев для графических приложений, где плав. точка нужна, либо выносите эти самые float-слова куда-нибудь подальше, до тех пор пока не понадобятся.

Вот делать мне нечего при портировании накинуть на себя актуализацию 20 с лишним слов.

3. Это на борту. Более того. я не знаю форт-систем, где этого нет (досовские поделия не беру в расчёт).

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Минимальное демо для новых трансляторов
СообщениеДобавлено: Чт июл 22, 2021 13:53 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Ilya писал(а):
Victor__v писал(а):

3. Это и так есть на борту. Смысл?

И в каком Форте это есть?
Это было в spf4, но он 32b и теперь практически не юзабелен на большинстве дистрибутивах. :(


То что дистрибутивы не хотят дружить с 32-битным СПФ-ом не аргумент :D
Точнеее аргумент, но не здесь)
Есть же 64-битная версия (её Максимов 2 года назад пилил).

А так чем СПФ не пример:
Вызов кода из ОС есть, потоки есть, калбеки есть.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Минимальное демо для новых трансляторов
СообщениеДобавлено: Чт июл 22, 2021 23:46 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Простая пара LoadLibrary / GetProcAddress, конечно, позволяет подключить что угодно из dll Windows. Однако это очень уж простое решение, сводящее Форт не просто к ассемблеру, а к какому-то ассемблеру даже без элементарных макросов. Это теперь ВСЕ необходимо писать каждый раз, и каждый раз следить, чтобы не ошибиться в обязательных вещах. Я потому и предлагаю посмотреть, как будут реализовываться простые примеры. Это покажет, что неудобно, чего не хватает, за чем придется постоянно залезать в документацию.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Минимальное демо для новых трансляторов
СообщениеДобавлено: Сб июл 24, 2021 00:24 
Не в сети

Зарегистрирован: Чт июн 03, 2021 16:13
Сообщения: 26
Благодарил (а): 0 раз.
Поблагодарили: 7 раз.
Victor__v писал(а):
А так чем СПФ не пример:
Вызов кода из ОС есть, потоки есть, калбеки есть.


Вот как раз СПФ (с более чем 20-летней историей) и не пример в топике озаглавленном "Минимальное демо для НОВЫХ трансляторов". Мало-ли что у кого есть за годы развития... Так что аппеляция к СПФ не засчитана.

Hishnik писал(а):
Простая пара LoadLibrary / GetProcAddress, конечно, позволяет подключить что угодно из dll Windows......

Полностью согласен, ведь в этом же и вся суть: предоствить пользователю, тобишь программисту, максимальную свободу использовать что ему нужно. Если все это есть, то демо просто покажет это.
...Как это ни парадоксально звучит, но писать Гуй под винду используя видвос апи это боль, но тем не менее такя возможность должна быть, а уж программист сам решит вокруг чего сделать враппер. Я просто думаю, что предоставлять уже готовую библиотеку оконных слов (пардон за терминологию, поправьте если что) новая ФС не должна. Новая ФС должна занимать тот самый низкий уровень обеспечивающий взаимодействие с ОС + базовый набор слов.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Минимальное демо для новых трансляторов
СообщениеДобавлено: Сб июл 24, 2021 13:07 
Не в сети

Зарегистрирован: Пн янв 28, 2019 03:10
Сообщения: 174
Благодарил (а): 20 раз.
Поблагодарили: 13 раз.
5. Реализовать "эхо-сервер" - программу, которая принимает подключения по TCP и отправляет клиенту все принятые от него данные без изменений. Задача "со звёздочкой" - реализовать одновременную работу нескольких клиентов.

Hishnik, как тестировать встраиваемый Форт-движок, в котором соответствующих возможностей (плавучка, GUI, сеть) может не быть? Добавить их и таким образом проверить расширяемость системы?


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

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


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

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


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

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