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). (1) и (3) добавляются только по мере надобности.2. Платформо-зависимые и хост-зависимые (от внешней ОС) форт-слова 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 лет! с ЮБИЛЕЕМ! |
Автор: | _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/ |