Forth
http://fforum.winglion.ru/

Моя система(_KROL)
http://fforum.winglion.ru/viewtopic.php?f=2&t=3127
Страница 34 из 36

Автор:  _KROL [ Ср янв 31, 2018 14:23 ]
Заголовок сообщения:  Re: Моя система(_KROL)

Victor__v писал(а):
SOURCE-ID вообще костыль.
Код:
за счёт поиска нужных слов в контексте

Поподробней, а то не понятно

Ну вспомним тот же Си++. Есть библиотека <iostream>, есть <fstream>.
Пусть у нас будут те же словари iostream и fstream, а там слова типа << >> и другое (для вариаций ввода-вывода).
Если нам надо работать с TIBом, то выделяем вперёд iostream. Если же с конкретным (текущим) файлом, то делаем так, чтобы fstream оказалсь впереди контекста.
И да, если "плюнуть" на TIB, то можно как в UNIX сделать пару консолей)

Автор:  _KROL [ Ср янв 31, 2018 14:28 ]
Заголовок сообщения:  Re: Моя система(_KROL)

Эх, я на "перекрёстке" старых и новых идей. Например, есть идея разделить на начальных 3 категории слова таким образом:
1. Низкоуровневые слова
2. Платформо-зависимые и хост-зависимые (от внешней ОС) форт-слова
3. Высокоуровневые слова
Но похоже надо доделать старое (хотя-бы нормальную компиляцию со словарями).

Автор:  gudleifr [ Ср янв 31, 2018 15:05 ]
Заголовок сообщения:  Re: Моя система(_KROL)

_KROL писал(а):
1. Низкоуровневые слова
2. Платформо-зависимые и хост-зависимые (от внешней ОС) форт-слова
3. Высокоуровневые слова
Все проще - нужны только (2). (1) и (3) добавляются только по мере надобности.

Сунь-Цзы:
Цитата:
Поэтому и говорится: если знаешь его и знаешь себя, сражайся хоть сто раз, опасности не будет; если знаешь себя, а его не знаешь, один раз победишь, другой раз потерпишь поражение; если не знаешь ни себя, ни его, каждый раз, когда будешь сражаться, будешь терпеть поражение.
Ваша армия - это машина, на которой Вы пишете. Противник - задача. Написание FORTH - это лишь тактика боя.

Автор:  Victor__v [ Ср янв 31, 2018 15:28 ]
Заголовок сообщения:  Re: Моя система(_KROL)

_KROL писал(а):
Ну вспомним тот же Си++. Есть библиотека <iostream>, есть <fstream>.
Пусть у нас будут те же словари iostream и fstream, а там слова типа << >> и другое (для вариаций ввода-вывода).
Если нам надо работать с TIBом, то выделяем вперёд iostream. Если же с конкретным (текущим) файлом, то делаем так, чтобы fstream оказалсь впереди контекста.
И да, если "плюнуть" на TIB, то можно как в UNIX сделать пару консолей)


Теперь понятней, но не намного.
условным кодом сего действа можешь проиллюстрировать?

Автор:  _KROL [ Ср янв 31, 2018 17:11 ]
Заголовок сообщения:  Re: Моя система(_KROL)

Код:
#include <iostream>
#include <strings>
using namespace std;
main()
{
string name;
cout << "Hello! What's you name?";
cin >> name;
fstream fout;
fout.open("output.txt",trunc); // не помню точно, как там создавать файлы. Вроде так.
fout << "Your name is " << name ;
fclose(fout);
}

Код:
: MAIN
DOSIO \ переключаемся на в/в через TIB за счёт функций DOS
<<" Hello! What's you name?"
">> \ ввод строки с консоли
TIB @ #TIB
DOSFIO \ переключаемся на файловый в/в через BUF за счёт функций DOS
FCREATE" output.txt" ( tib tib# flag) ?HALT \ неважно, что я всё примешиваю даже Pascal, это лишь примерный код!
<< \ запись блока по адресу tib размером tib#
DROP
FCLOSE
;

Причём TIB может быть в модуле DOSIO, а BUF, HND и т.д. в DOSFIO.
Т.о.
<< ( addr sz -- flag) \ записать блок информации куда-то
<<" ( -- ) \ записать скомпилированную прежде строку (надо это определение ещё уточнить...)
<<C ( char -- ) \ записать сиивол
>> ( addr maxsz -- ) \ считать блок информации
">> ( -- addr sz ) \ считать строку
C>> ( -- char ) \ считать символ
Где-то так. Необязателен конечно си-подобный стиль написания.
P.s. "DOS" в начале подразумевает, что может быть какой-нибудь BIOSIO или UNIXIO, и т.д.
А вообще, это лишь ещё не развитый подход, требующий внутренней доработки (продуманной организации соответствующего модуля).

Автор:  Victor__v [ Ср янв 31, 2018 17:51 ]
Заголовок сообщения:  Re: Моя система(_KROL)

Начнём с вопроса.
Зачем это надо?

Код выглядит усложнённым.
Не легче ли
S" WHAT YOU NAME" H-STDOUT WRITE-FILE THROW \ a u handler -- err|0
HERE DUP 100 H-STDIN READ-FILE THROW \ a u handler -- u? err|0
S" OUTPUT.TXT" R/W CREATE-FILE THROW \ a u method -- handler err|0
DUP >R
WRITE-FILE THROW
R> CLOSE-FILE THROW

Если тебе зачем-то надо прочитать консоль при трансляции файла, то это пишется в одно слово.

DOSIO и пр. Это словари? Ежели да, то они должны быть immediate.
К тому же они должны уметь не затирать верхний элемент стека контекста. Тут либо изгаляться, либо модернизировать механизм поиска слов. Тебе оно надо?
Идём дальше. В моём примере и к консоли и файлам используются одни и те же слова.
Далее, можно использовать стандартные слова для доступа к файлам. К примеру, TYPE переопределив в нём переменную на указатель файла/консоли и пр.

Автор:  Victor__v [ Ср янв 31, 2018 17:51 ]
Заголовок сообщения:  Re: Моя система(_KROL)

Нам 500 лет! с ЮБИЛЕЕМ!
:hey;

Автор:  _KROL [ Ср янв 31, 2018 18:30 ]
Заголовок сообщения:  Re: Моя система(_KROL)

Ну это лишь идея... Спасибо!

Автор:  mOleg [ Ср янв 31, 2018 19:35 ]
Заголовок сообщения:  Re: Моя система(_KROL)

_KROL писал(а):
Ну это лишь идея... Спасибо!

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

Язык, тоже по-своему музыка, и если ты "танцуешь" используя его ритмы, то твои движения выглядят органично, и сами подчеркивают мелодию, а если ты "танцуешь" другую мелодию (другой ритм), то - неуместно или ужасно не эстетично.
Это не значит, что ты не можешь продолжить мелодию, ввести новый ритм и движения, но должен быть вкус, что ли.

Автор:  gudleifr [ Ср янв 31, 2018 20:28 ]
Заголовок сообщения:  Re: Моя система(_KROL)

_KROL писал(а):
"DOS" в начале подразумевает, что может быть какой-нибудь BIOSIO или UNIXIO, и т.д.

Не валите все в одну кучу. Переключением источников слов занимается не СИМВОЛ (частью которого является WORD) а ОК. Оптимизация им. Баранова&Ноздрунова (по переключению TIB/BLOCK) это уже излишние усложнения, которыми будет смысл заниматься, когда Вы поймете, зачем нужны и СИМВОЛ и ОК по отдельности.
Но, как сказал один наш знакомый, Вы можете продолжать плясать с бубном, пытаясь попасть в такт "общепринятых ритмов".

Автор:  KPG [ Ср янв 31, 2018 21:34 ]
Заголовок сообщения:  Re: Моя система(_KROL)

_KROL писал(а):
...
Т.о.
<< ( addr sz -- flag) \ записать блок информации куда-то
>> ( addr maxsz -- ) \ считать блок информации

Интерпритация данных слов встречается в некоторых Форт системах, как сокращение аналогов стандартных слов LSHIFT и RSHIFT

Автор:  _KROL [ Ср янв 31, 2018 22:20 ]
Заголовок сообщения:  Re: Моя система(_KROL)

mOleg писал(а):
_KROL писал(а):
Ну это лишь идея... Спасибо!

Тут хочется вот что сказать, представь,
играет музыка танцевальная, а ты выходишь, и начинаешь танцевать под другую музыку.
На сколько это будет выглядеть эстетично, красиво, уместно?
Ты ещё моей музыки не слышал)) Поэтому такими стрёмными эксперементами я занимаюсь лишь мысленно ;)
KPG писал(а):
Интерпритация данных слов встречается в некоторых Форт системах, как сокращение аналогов стандартных слов LSHIFT и RSHIFT
Я знаю, даже у меня раньше было так.

Автор:  _KROL [ Ср янв 31, 2018 22:23 ]
Заголовок сообщения:  Re: Моя система(_KROL)

Всё! Флудить не буду, и так его тут много.

Автор:  gudleifr [ Ср фев 07, 2018 16:20 ]
Заголовок сообщения:  Re: Моя система(_KROL)

_KROL писал(а):
Да нет, я не про "детское" программирование)
Именно про него! Взрослое программирование - это умение взрослого инженера скормить свою задачу компьютеру с наименьшими затратами. Взрослое "просто программирование" - без привязки к конкретным инженерным проблемам - оно же системное, предполагает владение математикой и/или электроникой "чуть" более, чем в объеме профильного ВУЗа.

_KROL писал(а):
Всё, теперь понятно как мне лучше и понятнее свой Форт писать.
Опять пугаете? Успокойтесь, т.к. Вам изначально "нечего сказать", а учиться Вы не хотите, то ничего интересного для других Вы никогда не напишете. Обломаетесь и будете, как большинство присутствующих, авторитетно надувать щеки: мол, видел ваш FORTH, писал, ничего особо интересного...

Автор:  _KROL [ Пн июн 04, 2018 11:38 ]
Заголовок сообщения:  Re: Моя система(_KROL)

В целом, ФВМ оказывается просто делать на ЯВУ :)
Правда пока только голый скелет.
Вот все доступные у меня (на текущий момент) программе примитивы:
Код:
#define opNum 26

void *Op[opNum] =
{
   nop,
   reset,
   execute,
   branch,
   nbranch, // 5
   drop,
   dup,
   swap,
   to_r,
   from_r, // 10
   load,
   store,
   move,
   compare,
   plus, // 15
   minus,
   multiply,
   divide,
   and,
   or, // 20
   xor,
   neq0,
   lw,
   ulw,
   key, // 25
   emit
};
Что-нибудь скажете? Надо же от чего-то отталкиваться!

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