Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт апр 20, 2021 11:50

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Cation Forth
СообщениеДобавлено: Пн янв 11, 2021 02:23 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7199
Благодарил (а): 19 раз.
Поблагодарили: 122 раз.
Cation Forth - продолжение проекта "софт-Форта", т.е. Форта, написанного на ЯВУ. Почему такое название? Потому что Quark уже был, а "весомые" частицы состоят из кварков. Первая оболочка для Кварка называлась Proton, "пустая" оболочка на Qt идет под именем neutron, ну вот нашелся еще cation. К тому же картинка миленькая :)

Изображение

Исходный язык - Object Pascal + IDE Lazarus. Идея подобных Фортов - управление ресурсами базового языка, т.е. приложение на Lazarus исходно пустое, и управляется динамически сообщениями из Форт-машины. В Lazarus есть два приятных компонента - TChart и SynEdit, можно удобно строить графики и заниматься разработкой embedded-приложений в неплохом компоненте редактора с подсветкой синтаксиса. Управляется все очередью сообщений из Форта, поэтому у кода на Форте нет прямого доступа к ресурсам приложения, что позволяет дополнительно контролировать параметры и заодно при необходимости осуществлять синхронизацию.
Примеры кода берутся из neutron:
Код:
0 BUTTON.SHOW
100 100 75 25 0 BUTTON.RECT
" Ok" 0 BUTTON.CAPTION

ВМ Форта - объект, которых в системе не один. Поэтому в процессе работы можно запускать много ВМ, передавая каждой свой код и свои строки для интерпретации. Это призвано не столько повысить производительность на многопоточных процессорах, сколько обеспечить определенное удобство для программиста при запуске расчетов, обмена с подключенным embedded-устройством и прочих операциях.

Производительность - не самая сильная сторона Форта. Поэтому и не надо гнаться за тем, что при лучшем раскладе будет неидеальным. Производительность - это assemebler, GPU, FPGA. К ним и строится интерфейс.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Cation Forth
СообщениеДобавлено: Вт янв 12, 2021 03:45 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1400
Благодарил (а): 3 раз.
Поблагодарили: 50 раз.
А, какой предполагается использовать редактор-IDE?

P.S. Возможно интересный проект https://github.com/Alexey-T/CudaText
Lazarus 2.0+, Free Pascal 3.0.4+.

http://www.uvviewsoft.com/cudatext/
https://wiki.freepascal.org/CudaText


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7199
Благодарил (а): 19 раз.
Поблагодарили: 122 раз.
Интересно, но SynEdit пока вполне подходит. Впрочем, поскольку там запускаются любые виджеты, никаких проблем с еще одним редактором нет.

P.S. Только это не компонент для сборки в проекте с Lazarus, а отдельный редактор, написанный на Lazarus. Это не подходит.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Cation Forth
СообщениеДобавлено: Сб янв 16, 2021 04:06 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7199
Благодарил (а): 19 раз.
Поблагодарили: 122 раз.
Первый из реализованных примеров из RosettaCode - суммирование двух чисел. Приложение с GUI.

Код:
0 LABEL.SHOW
20 40 100 40 0 LABEL.RECT
" A" 0 LABEL.TEXT

1 LABEL.SHOW
180 40 100 40 1 LABEL.RECT
" B" 1 LABEL.TEXT

2 LABEL.SHOW
300 40 100 40 2 LABEL.RECT
" 0" 2 LABEL.TEXT

0 TEXTEDIT.SHOW
0 80 100 40 0 TEXTEDIT.RECT

1 TEXTEDIT.SHOW
120 80 100 40 1 TEXTEDIT.RECT

0 BUTTON.SHOW
320 80 100 50 0 BUTTON.RECT
" A+B" 0 BUTTON.TEXT

" 0 TEXTEDIT.GETINTEGER 1 TEXTEDIT.GETINTEGER + 2 LABEL.INTEGER" 0 BUTTON.ACTION


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Cation Forth
СообщениеДобавлено: Вс янв 17, 2021 21:36 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7199
Благодарил (а): 19 раз.
Поблагодарили: 122 раз.
Простое мультимедиа на базе компонента MPlayer.

Код:
MPLAYER.SHOW
0 50 1000 800 MPLAYER.RECT

0 BUTTON.SHOW
0 900 200 50 0 BUTTON.RECT
" Play" 0 BUTTON.CAPTION

1 BUTTON.SHOW
250 900 200 50 1 BUTTON.RECT
" Stop" 1 BUTTON.CAPTION

2 BUTTON.SHOW
500 900 200 50 2 BUTTON.RECT
" File" 2 BUTTON.CAPTION

CREATE STR 256 ALLOT

" MPLAYER.PLAY" 0 BUTTON.ACTION
" MPLAYER.STOP" 1 BUTTON.ACTION
" STR OPENDIALOG.FILENAME STR MPLAYER.FILENAME" 2 BUTTON.ACTION


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Cation Forth
СообщениеДобавлено: Ср фев 03, 2021 23:19 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7199
Благодарил (а): 19 раз.
Поблагодарили: 122 раз.
Скриншот


Вложения:
chart.png
chart.png [ 139.91 Кб | Просмотров: 1420 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

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


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

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


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

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