Forth
http://fforum.winglion.ru/

Форт на ЯВУ
http://fforum.winglion.ru/viewtopic.php?f=55&t=3304
Страница 1 из 7

Автор:  Hishnik [ Пт янв 29, 2021 00:14 ]
Заголовок сообщения:  Форт на ЯВУ

Как насчет открытого проекта (с открытым исходным кодом, но собираемым вручную, с пояснениями, а не просто "вот вам ссылка на гитхаб")?

Автор:  vikt [ Пт янв 29, 2021 02:43 ]
Заголовок сообщения:  Re: Форт на ЯВУ

Разумеется за.
Чего то у Гудлейфера делаю, по мере наличия времени, идей, и вытестированных фрагментов.

Автор:  Hishnik [ Пт янв 29, 2021 02:57 ]
Заголовок сообщения:  Re: Форт на ЯВУ

А я вот старые наработки взял и как-то за месяц (то есть строго 1 января начал, поскольку до Нового года совсем времени не было) перенес форт-машину под Lazarus. Что интересно, даже количественные оценки трудоемкости как-то совпали, код приятный, и результаты предсказуемые. Это теперь можно просто брать и делать на серии языков. Понятно, что мне все-все просто не нужно, но платформ, под которые навскидку все скомпилируется, не так уж мало.

Автор:  Victor__v [ Пт янв 29, 2021 15:41 ]
Заголовок сообщения:  Re: Форт на ЯВУ

Дайте угадаю,
В качестве ЯВУ форт? :))

Автор:  Hishnik [ Пт янв 29, 2021 17:28 ]
Заголовок сообщения:  Re: Форт на ЯВУ

Ну а зачем же Форт, если в разных системах программирования очень много хороших библиотек. Вместо того, чтобы пытаться все это повторить на Форте с неясными целями, можно вызывать это все из Форта.

Автор:  KPG [ Пт янв 29, 2021 18:50 ]
Заголовок сообщения:  Re: Форт на ЯВУ

Hishnik писал(а):
Ну а зачем же Форт, если в разных системах программирования очень много хороших библиотек. Вместо того, чтобы пытаться все это повторить на Форте с неясными целями, можно вызывать это все из Форта.

А, можно сначала, перечислить эти замечательные библиотеки, что бы знать, что теряешь не используя их? :)
(тогда, возможно, можно понять, а действительно они необходимы и не решено ли что то средствами и библиотеками на Форт и уже имеющимся интерфейсами и к этим хорошим библиотекам и пропущенны вопросы, в этом ракурсе, для обсуждения на местном форуме)

Автор:  KPG [ Пт янв 29, 2021 19:04 ]
Заголовок сообщения:  Re: Форт на ЯВУ

vikt писал(а):
Разумеется за.
Чего то у Гудлейфера делаю, по мере наличия времени, идей, и вытестированных фрагментов.

А, разве, он своими суждениями о Форт и его правильном понимании и использовании не пришёл к "маразму" - например, чтобы использовать "правильный" Форт, нужно на нём сделать нормальный язык программирования - типа Бейсик и тогда ОK, или непосредственно изменять код программы непосредственной записей данных в её код в рамках Форт? (что ещё?)

Автор:  zma [ Пт янв 29, 2021 23:59 ]
Заголовок сообщения:  Re: Форт на ЯВУ

Hishnik писал(а):
Как насчет открытого проекта (с открытым исходным кодом, но собираемым вручную, с пояснениями, а не просто "вот вам ссылка на гитхаб")?

Готов поучаствовать по возможности. Что понимается под "собираемым вручную кодом"? И не совсем понял, в чём суть проекта - реализовать Форт-систему по имеющемуся описанию?

Автор:  Hishnik [ Сб янв 30, 2021 02:24 ]
Заголовок сообщения:  Re: Форт на ЯВУ

KPG писал(а):
А, можно сначала, перечислить эти замечательные библиотеки, что бы знать, что теряешь не используя их?

Например, хотя бы стандартные виджеты - кнопка, чекбокс, список, окно редактирования. Сложнее - хорошие редакторы, движки баз данных, мультимедиа, графика (и графики в смысле Chart). Это все существует в огромном пласте графических приложений, а в Форте регулярно пытаются все переписать с нуля.

Есть предложение зайти с другой стороны - готовить настраиваемое приложение, где инструментом настройки будет Форт.

Автор:  Hishnik [ Сб янв 30, 2021 02:30 ]
Заголовок сообщения:  Re: Форт на ЯВУ

zma писал(а):
Готов поучаствовать по возможности. Что понимается под "собираемым вручную кодом"? И не совсем понял, в чём суть проекта - реализовать Форт-систему по имеющемуся описанию?

Я уже попробовал работать строго по списку, не дописывая ТЗ на ходу. Проект с Qt практически без изменений переехал на Lazarus, с добавлением виджетов, характерных для него (и неожиданно удобнее многое оказалось).

Поэтому предложение простое. Дружно повторяем эти шаги, получая N приложений на разных языках. Кому что нравится и кто каким приложением хочет управлять. Вместо того, чтобы делать очередной Форт и потом пытаться придать ему приемлемый вид (а он не особо хочет, потому что в 70-е годы ничего такого не было), будем брать каркас приложения, и все, что настраивается, настраивать из Форта. Поэтому и Форт будет реалистичным и довольно быстро покажет эффект.

Собирать будем вручную - т.е. без гитхаба, ссылок и поиска, кто такое уже сделал. Мышцы-то не с интернета скачиваются, так? :)

Автор:  zma [ Сб янв 30, 2021 13:42 ]
Заголовок сообщения:  Re: Форт на ЯВУ

То есть, каждый пишет своё приложение, проект не коллективный?

Автор:  Hishnik [ Сб янв 30, 2021 15:14 ]
Заголовок сообщения:  Re: Форт на ЯВУ

zma писал(а):
То есть, каждый пишет своё приложение, проект не коллективный?

Можно и так, и так. Если писать коллективный проект, у него есть опасность все свести к регулярным закачкам с гитхаба при крайне малой активности.

Автор:  Hishnik [ Сб янв 30, 2021 15:20 ]
Заголовок сообщения:  Re: Форт на ЯВУ

Итак, шаг 1. Движок машины, выполняющей шитый код. Например, вот так

Object Pascal:
Код:
procedure TForth.Step;
begin
   cmd := Code[pc];
   Proc := TProcedure(cmd);
   pc := pc + 1;
   Proc;
end;

procedure TForth.Execute;
var RDepthOnEntry : integer;
begin
   RDepthOnEntry := RDepth;
   while ((RDepthOnEntry <= RDepth) and (Error = 0)) do
     begin
       Step;
     end;
   if (RDepth < 0) then RDepth := 0;
end;   


C++:
Код:
void Step()
{
    void(*fword)();
    fword = (void(*)())ReadCode(pc);
    pc += sizeof(CELL);
    fword();
}

void Execute()
{
    CELL RdepthOnEntry = Rdepth;
    do
    {
        Step();
    }
    while ((RdepthOnEntry <= Rdepth) && (AbortFlag == 0));
}


Итак, что тут нужно. Принципиальный вопрос - как вызвать в используемом языке функцию/процедуру по заданному адресу. Если язык вдруг не позволяет такого сделать, считая, что подобные преобразования типов небезопасны (и вообще такого делать нельзя), он для данного варианта реализации не подойдет. Приведенный код достаточно очевиден.

Дополнительно потребуются некоторые сервисные функции:
ReadCode
ReadData
ReadByteData

WriteCode
WriteData
WriteByteData

Почему ReadByteData и ReadData - потому что Форт обычно использует байтовую адресацию памяти данных. Поэтому Data - это байтовый массив, для которого нужно реализовать дополнительную функцию "прочитать число, начинающееся с заданного адреса, но имеющее размер 32 или 64 бита".

Автор:  Total Vacuum [ Вс янв 31, 2021 15:00 ]
Заголовок сообщения:  Re: Форт на ЯВУ

Форт во сне и на яву... :D
Хватит витать в облаках! Время действовать! :D

Автор:  KPG [ Вс янв 31, 2021 15:08 ]
Заголовок сообщения:  Re: Форт на ЯВУ

Total Vacuum писал(а):
Форт во сне и на яву... :D
Хватит витать в облаках! Время действовать! :D

ComFort популярен и в шампунях. :)

https://rixospro.com/uploads/products/9 ... c99e15.jpg

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