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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пн янв 14, 2008 16:18 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5012
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 21 раз.
Поблагодарили: 58 раз.
если есть какие-то конкретные предложения, предлагайте 8)
обещаю рассмотреть\обсудить любые 8)

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн янв 14, 2008 16:58 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
mOleg писал(а):
если есть какие-то конкретные предложения, предлагайте 8)
обещаю рассмотреть\обсудить любые 8)


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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт янв 15, 2008 21:28 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5012
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 21 раз.
Поблагодарили: 58 раз.
Kopa писал(а):
Есть в Ansi94 слово UNUSED - его неплохо иметь в ядре.

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

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

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт янв 17, 2008 00:15 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5012
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 21 раз.
Поблагодарили: 58 раз.
mOleg писал(а):
правда, LIMIT - это предельный адрес, до которого может дорасти кодофайл, а HERE у каждого словаря может быть своя. В то же время добавлять еще одно поле в структуру, описывающую словарь не хочется - их там и так достаточно много(полей).

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

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 30, 2008 01:08 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
Вот такая мысль :
Есть какая нибудь .\lib\lalala.fts в ней куча безусловно полезных слов, но мне нужно одно из них.
Может стоит написать что-то вроде REQUIRE только чтобы одно слово компилировалось а не вся либа? :shuffle;


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 30, 2008 03:52 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
И при этом гарантировать, что для компиляции выбранного слова скомпилировались все нужные для него слова и нужные для его работы структуры данных? ;)
Проще всю либу скомпилить. Ну или разделить ее на более мелкие части, если уж надо память экономить (для современных компьютеров не критично).

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 30, 2008 11:09 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
in4 писал(а):
И при этом гарантировать, что для компиляции выбранного слова скомпилировались все нужные для него слова и нужные для его работы структуры данных? ;)
Проще всю либу скомпилить. Ну или разделить ее на более мелкие части, если уж надо память экономить (для современных компьютеров не критично).

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 30, 2008 19:35 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5012
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 21 раз.
Поблагодарили: 58 раз.
_Harry писал(а):
Вот такая мысль :
Есть какая нибудь .\lib\lalala.fts в ней куча безусловно полезных слов, но мне нужно одно из них.
Может стоит написать что-то вроде REQUIRE только чтобы одно слово компилировалось а не вся либа?

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

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 30, 2008 19:51 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
_Harry писал(а):
Может стоит написать что-то вроде REQUIRE только чтобы одно слово компилировалось а не вся либа?
devel\~nn\lib\ifdef.f


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 30, 2008 20:05 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5012
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 21 раз.
Поблагодарили: 58 раз.
Mihail писал(а):
_Harry писал(а):Может стоит написать что-то вроде REQUIRE только чтобы одно слово компилировалось а не вся либа? devel\~nn\lib\ifdef.f

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

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 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 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
при этом стек превращается в статическую структуру!

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 31, 2008 12:13 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
организовать загрузку библиотек в соответствии со стандартом ( автоподгружение циклов)

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

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 31, 2008 19:31 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5012
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 21 раз.
Поблагодарили: 58 раз.
Гость писал(а):
Например иметь возможность запомнить текущее положение элемента стека ( может по DEPTH )
с целью в другом потоке ( или сопрограмме) данные ложить в конкретное место стека
при зацикленной обработке в требуемом месте.

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

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

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

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

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

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

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 27, 2009 17:12 
Не в сети
Аватара пользователя

Зарегистрирован: Пн ноя 27, 2006 22:09
Сообщения: 115
Откуда: Ростов-на-Дону
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.
Думается это сообщение сюда... По мотивам более близкого знакомства с системой Фактор (это такой форто-лисп, но в данном смысле это не так важно). Помимо всего прочего в факторе -- много библиотек и примеров, которые заметно отличаются от СПФ-овского devel-а своей упорядоченностью. Что то можно позаимствовать оттуда.

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

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу 1, 2, 3  След.

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


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

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


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

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