Forth
http://www.fforum.winglion.ru/

если есть какие-то конкретные предложения, предлагайте
http://www.fforum.winglion.ru/viewtopic.php?f=25&t=1154
Страница 1 из 3

Автор:  mOleg [ Пн янв 14, 2008 16:18 ]
Заголовок сообщения: 

если есть какие-то конкретные предложения, предлагайте 8)
обещаю рассмотреть\обсудить любые 8)

Автор:  Kopa [ Пн янв 14, 2008 16:58 ]
Заголовок сообщения: 

mOleg писал(а):
если есть какие-то конкретные предложения, предлагайте 8)
обещаю рассмотреть\обсудить любые 8)


Есть в Ansi94 слово UNUSED - его неплохо иметь в ядре.:)

Автор:  mOleg [ Вт янв 15, 2008 21:28 ]
Заголовок сообщения: 

Kopa писал(а):
Есть в Ansi94 слово UNUSED - его неплохо иметь в ядре.

В форке есть слово LIMIT
на его основе
: UNUSED ( --> u ) LIMIT HERE - ;

правда, LIMIT - это предельный адрес, до которого может дорасти кодофайл, а HERE у каждого словаря может быть своя. В то же время добавлять еще одно поле в структуру, описывающую словарь не хочется - их там и так достаточно много(полей).

Автор:  mOleg [ Чт янв 17, 2008 00:15 ]
Заголовок сообщения: 

mOleg писал(а):
правда, LIMIT - это предельный адрес, до которого может дорасти кодофайл, а HERE у каждого словаря может быть своя. В то же время добавлять еще одно поле в структуру, описывающую словарь не хочется - их там и так достаточно много(полей).

тем не менее добавил в .\lib\ansi.f - будет в следующей сборке

Автор:  _Harry [ Вт дек 30, 2008 01:08 ]
Заголовок сообщения: 

Вот такая мысль :
Есть какая нибудь .\lib\lalala.fts в ней куча безусловно полезных слов, но мне нужно одно из них.
Может стоит написать что-то вроде REQUIRE только чтобы одно слово компилировалось а не вся либа? :shuffle;

Автор:  in4 [ Вт дек 30, 2008 03:52 ]
Заголовок сообщения: 

И при этом гарантировать, что для компиляции выбранного слова скомпилировались все нужные для него слова и нужные для его работы структуры данных? ;)
Проще всю либу скомпилить. Ну или разделить ее на более мелкие части, если уж надо память экономить (для современных компьютеров не критично).

Автор:  _Harry [ Вт дек 30, 2008 11:09 ]
Заголовок сообщения: 

in4 писал(а):
И при этом гарантировать, что для компиляции выбранного слова скомпилировались все нужные для него слова и нужные для его работы структуры данных? ;)
Проще всю либу скомпилить. Ну или разделить ее на более мелкие части, если уж надо память экономить (для современных компьютеров не критично).

Для современных компьютеров конечно так и есть.
А вот для МК такой механизм был бы полезен там память на вес золота бывает.
Разбивать либы на мелкие куски это есть не правильно они на то и либы чтоб обединять.

Автор:  mOleg [ Вт дек 30, 2008 19:35 ]
Заголовок сообщения: 

_Harry писал(а):
Вот такая мысль :
Есть какая нибудь .\lib\lalala.fts в ней куча безусловно полезных слов, но мне нужно одно из них.
Может стоит написать что-то вроде REQUIRE только чтобы одно слово компилировалось а не вся либа?

такая мысля неоднократно возникала, но реализовать ее не так просто.
Формально, лучше иметь много маленьких либ, чтобы подключать их целиком не жалея пространства.
В том числе, это связано с тем, что слова могут быть очень тесно связаны между собой и повторно копаться в коде либ, отыскивая недокомпилированный код не очень удачная идея.
С другой стороны, у нас не микроконтроллер, и памяти много.
Вспомните, к примеру, как dll подключаются ;) ведь из-за одной-двух функций в память процесса мапится вся либа целиком!!!
Я понимаю, что микрософт не показатель хорошего стиля 8) но все же.
Тем более, что код либ все меньше размера Dll.
А вот что стоило бы прикрутить - это BUILD аналогичный таковому в SMAL32, и тогда сохраняться будет только необходимый приложению код.
Но это тоже достаточно нетривиальная и не самая важная на данный момент задача.

Автор:  Mihail [ Вт дек 30, 2008 19:51 ]
Заголовок сообщения: 

_Harry писал(а):
Может стоит написать что-то вроде REQUIRE только чтобы одно слово компилировалось а не вся либа?
devel\~nn\lib\ifdef.f

Автор:  mOleg [ Вт дек 30, 2008 20:05 ]
Заголовок сообщения: 

Mihail писал(а):
_Harry писал(а):Может стоит написать что-то вроде REQUIRE только чтобы одно слово компилировалось а не вся либа? devel\~nn\lib\ifdef.f

в форке для этого есть ?DEFINED N?DEFINED стандартно в ядре
но речь была о другом

Автор:  Гость [ Ср дек 31, 2008 11:57 ]
Заголовок сообщения: 

Например иметь возможность запомнить текущее положение элемента стека ( может по DEPTH )
с целью в другом потоке ( или сопрограмме) данные ложить в конкретное место стека
при зацикленной обработке в требуемом месте.

Например:

Код:
   0 VALUE bbb
             : Task1 BEGIN ...  [ DEPTH TO bbb ]
                         DUP \ продублируем элемент стека записанный в данное место другой сопрограммоой
                         0= IF .... THEN
                         ...
                         AGAIN
            : Task2  BEGIN KEY bbb SP0@ + ! AGAIN ;


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

P.S. Может это имеет некий здравый смысл :)

Автор:  вопрос [ Ср дек 31, 2008 12:10 ]
Заголовок сообщения: 

при этом стек превращается в статическую структуру!

Автор:  вопрос [ Ср дек 31, 2008 12:13 ]
Заголовок сообщения: 

организовать загрузку библиотек в соответствии со стандартом ( автоподгружение циклов)

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

Автор:  mOleg [ Ср дек 31, 2008 19:31 ]
Заголовок сообщения: 

Гость писал(а):
Например иметь возможность запомнить текущее положение элемента стека ( может по DEPTH )
с целью в другом потоке ( или сопрограмме) данные ложить в конкретное место стека
при зацикленной обработке в требуемом месте.

это будет огромная головная боль!
в одном потоке еще понятно, когда под вершиной стека (хотя лучше на вершине стека) резервируется место под одну(несколько) локальных переменных. Для этого, кстати, в ядре появилось слово 0>R' ( положить 0 на стек возвратов, и вернуть адрес этого нуля ), что удобно при работе с виндошными функциями, которые хотят вернуть несколько значений, но по соглашениям Сей-Пасквилей это не возможно, поэтому требуют на входе адрес переменной, куда данные класть.

Гость писал(а):
т.е. так как элемент стека не удаляется в первой процедуре, то его положение будет всегда одно и тоже.
и может быть использован как безопасный элемент данных для разных задач-сопрограмм.

для работы с сопрограммами лучше использовать каналы, разделяемые области памяти, и обязательно объекты синхронизации типа семафоров или мьютексов. Иначе головная боль обеспечена :)

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

с одной сторон так и сделано: .\lib\ansi.fts - с другой анси стандарт форк уже не поддерживает, и дальше будет меньше поддерживать.
Работа со строками уже не ансевая, работа с символами тоже, работа со словарями....

Наиболее простой совет, если вы знаете, какое слово вам надо, делайте find по каталогу .\lib\* нужного слова, если найдено, подключайте либу (каждая либа должна сама найти все, что ей не хватает и доподключить).

Автор:  be_nt_all [ Пт мар 27, 2009 17:12 ]
Заголовок сообщения: 

Думается это сообщение сюда... По мотивам более близкого знакомства с системой Фактор (это такой форто-лисп, но в данном смысле это не так важно). Помимо всего прочего в факторе -- много библиотек и примеров, которые заметно отличаются от СПФ-овского devel-а своей упорядоченностью. Что то можно позаимствовать оттуда.

Во первых никто не изобретает велосипед и поэтому библиотеки разных авторов взаимодействуют друг с другом, а не создают всю инфраструктуру заново. Одна из целей ответвления форка от основного потока, как я понимаю, был достичь того же самого. Во вторых рядом с каждым файлом либа.factor есть файл либа-docs.factor и либа-tests.factor (да там есть подсистема юнит-тестирования -- достаточно простая, сделать что такое на форте не так сложно).

И инфа из всех этих docs.factor собирается в общую хелп-систему... Среда - в принципе похожа на spf4wc - но с этой самой хэлп-мистемой и пошаговым отладчиком с возможностью отката (его повторять не обязательно, настоящие фортеры, да и не только они, давно научились жить без всяких отладчиков :) ). Ну и ко всему этому добру можно легко подключать внешние редакторы - хоть vim, хоть scite, хоть notepad...

Да папок с библиотеками 3 - core, basis, extra. Для проектов в работе есть папочка work.

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