Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср фев 20, 2019 00:51

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 45 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вт июл 18, 2006 15:09 
Не в сети

Зарегистрирован: Чт май 04, 2006 22:43
Сообщения: 78
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Геннадий писал(а):
Icefall писал(а):
что овчинка не стоит выделки.

Поверьте на слово - стоит!

Так почему бы Вам не заняться этим? ;)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт июл 18, 2006 15:47 
Не в сети

Зарегистрирован: Вт май 30, 2006 14:52
Сообщения: 18
Откуда: Таганрог, Ростовской обл.
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Icefall писал(а):
Так почему бы Вам не заняться этим?


Я, практик. Делаю что, проще и быстрее.
В свое время я пыталься написать слово BUILD для SPF. Но пулучалось так что, без кардинальной переделки заголовка и структуры словарной статьи ( она слишком "легкая" ) задача усложнялась, хотя думаю возможно было бы. Поэтому для работы в среде win32 мне было проще было переделать SMAL32, да и Ларионов был не против.
Думаю эта задача для тех, кто давно работает с SPF.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт июл 18, 2006 17:45 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
Геннадий писал(а):
На мой взгляд в SMAL32 есть очень хорошая вещь - отметание всего мусора (вплоть до имен слов ) при построении исполняемого .EXE файла.


В http://fpauk.narod.ru/masmspf2.rar Форт система представляется в ассемблерном виде.
Думаю, не особо сложно будет представить в ассемблерном виде не всю систему,
а только главное целевое слово и ресурсы его поддерживающие.


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4960
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
Mihail писал(а):
Цитата:

Кстати отдельный вопрос - как можно проще исключить оптимизатор из пакета СПФ, просто выкинуть не достаточно 8(


Отключение оптимизатора командой DIS-OPT.
Для изъятия оптимизатора из исходных текстов потребуется переопределить
слова ветвления. Упращенные варианты этих процедур можно найти в
старой версии http://forther.chat.ru/jpf375-105.rar . По моему, там
достаточно просто выкинуть слова, которые определены в оптимизаторе.


Спасибо за ответ!)

А можно как-то так сделать, чтоб одного закоментирования included было достаточно?
Все-таки не всегда нужен оптимизатор, а еще лучше, если бы он подключался таким образом,
чтобы после сборки по tsave его в ЕХЕшнике небыло? С ассемблером так кто-то поступал.
Это просьба Ж8-)

Геннадий писал(а):
В свое время я пыталься написать слово BUILD для SPF. Но пулучалось так что, без кардинальной переделки заголовка и структуры словарной статьи ( она слишком "легкая" ) задача усложнялась, хотя думаю возможно было бы. Поэтому для работы в среде win32 мне было проще было переделать SMAL32, да и Ларионов был не против.

Так вроде есть вариант смала под винду. Правда я в него не лазил из-за отсутствия исходных текстов 8(
А у спф есть один оогромный недостаток, впрочем это не только его недостаток. Очень тяжело поменять
формат словарной статьи. Нет таковой структуры ни для слова ни для словаря. В итоге любая попытка внести в нее, например дополнительные поля, приводит к крупному копанию в исходниках :(


Icefall писал(а):
И ничего хорошего в этом на самом деле нет. Это не форт-стиль. Программы просто не должны быть настолько большими. Насчет СПФ - я долго думал над тем, как сделать генерацию "чистых" екзешников. Но вовремя понял, что овчинка не стоит выделки. Гораздо проще взять компактный retroforth (10к), написать 10-20к кода, встроить в бинарник (код компилируется при запуске) и получить на выходе компактную программку.

Все, что облегчает жизнь не чуждо форт-стилю 8) Путь ФОРТА, что путь ДАО у каждого свой 8)
У Ларионова вон вообще ужастно большие форт-слова:( но форт у него прекрасный!!!
А насчет ретрофорта - все хорошо, но хочется, во-первых, своего, во вторых, не хочется адаптироваться к куче фортов! Тогда легче свой написать...


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

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

форт система называется очень просто: е.

Вроде бы достаточно обычная форт система с косвенным шитым кодом, если бы не одно но - форт-вм состоит всего из 29 низкоуровневых определений, все остальное сделано на самом форте. Проще говоря: попробуйте сделать меньше! ( правда я предлагаю 16 слов 8) но только предлагаю, а е уже есть!)

Приятной особенностью является тот факт, что в пакет е входят его исходные тексты на ассемблере и на форте. Кроме того е портирован на ДОС и Линукс, есть 16 битная и 32 битная версии.

Какие форты вспомним еще? Кто может рассказать о предшественнике win32forth и о самом win32forth, который является основным конкурентом спф 8)


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

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
oleg писал(а):
Mihail писал(а):
Цитата:

Кстати отдельный вопрос - как можно проще исключить оптимизатор из пакета СПФ, просто выкинуть не достаточно 8(

Для изъятия оптимизатора из исходных текстов потребуется переопределить
слова ветвления.


А можно как-то так сделать, чтоб одного закоментирования included было достаточно?



В принципе можно. Но зачем мудрить? Пусть будет упрощенная версия СПФ
А то вес только и делают, что усложняют. Можно, за одно, еще чего выкинуть
не очень нужное.

Цитата:
Все-таки не всегда нужен оптимизатор, а еще лучше, если бы он подключался таким образом,
чтобы после сборки по tsave его в ЕХЕшнике небыло? С ассемблером так кто-то поступал.


В СПФ есть временные словари создаваемые TEMP-WORDLIST .
Временный словарь разпологается в своем временном кодофайле.
В него можно загрузить оптимизатор.


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4960
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
Mihail писал(а):
А можно как-то так сделать, чтоб одного закоментирования included было достаточно?

В принципе можно. Но зачем мудрить? Пусть будет упрощенная версия СПФ
А то вес только и делают, что усложняют. Можно, за одно, еще чего выкинуть
не очень нужное.


Почему же мудрить?
Мудрить, это когда приходится перекапывать весь код, чтобы понять, что еще ты не выкинул, почему система компилируется, но не запускается.
Я за очень простую версию СПФ, как можно более простую. А все остальное в либах. Или опционально.
Поддержку float давно надо из ядра выбросить! Точнее не надо было включать вообще в код ядра. Все равно высокоуровневый интерфейс на уровне либы прикручивается. И еще кое что можно убрать. Вот если бы еще и целевой компилятор причесать, да формат словаря и словарной статьи описать как структуру...

Mihail писал(а):
В СПФ есть временные словари создаваемые TEMP-WORDLIST .
Временный словарь разпологается в своем временном кодофайле.
В него можно загрузить оптимизатор.

Так я о том и говорю!

Я для себя начал "причесывать" СПФ, но выкинуть оптимизатор мне не удалось, то есть вроде удалось, но что-то я просмотрел и в итоге вылазит трап 8(
Я вообще бы за то, чтобы создать новый стандарт, и под него( не мудрствуя лукаво) переписать СПФ.
Эту тему я поднял здесь на форуме, но пока активности особой не наблюдается 8( А у меня одного времени очень мало 8( а с сегодняшнего дня будет еще меньше 8(
вот.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июл 22, 2006 02:00 
Не в сети

Зарегистрирован: Сб май 13, 2006 23:37
Сообщения: 321
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.
oleg писал(а):
И еще, может знает кто форт под линукс, который может работать как модуль ядра( мне под версию ядра 2.4)?
А то может я свой велик зря изобретаю


http://www.dedasys.com/freesoftware/fil ... rth-21.tgz


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июл 22, 2006 12:01 
Не в сети

Зарегистрирован: Сб май 06, 2006 18:43
Сообщения: 400
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
oleg писал(а):
И еще, может знает кто форт под линукс, который может работать как модуль ядра( мне под версию ядра 2.4)? А то может я свой велик зря изобретаю


кстати да, насколько я помню модулю дается мало памяти (сотни Кб ?), но при этом имеет доступ к железу -- как раз Форту в таком виде самое место в Linuxе, всеми руками за идею

тоже что ли портировать свой форт-вм в виде модуля... даже книжка где-то валялась по написанию подулей под 2.2.х

_________________
http://akps.ssau.ru/forth/


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июл 23, 2006 06:38 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4960
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
Вопрос: больше никто никаких форт-систем не мучил и не исследовал? Может продолжим тему? Вот я недавно узнал, что есть форт, который в модуль ядра линукса загружается, а я такой долго искал 8) Ведь есть же еще интересные системы! Поделитесь с окружающими 8)

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


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

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
oleg писал(а):
Почему же? Могло быть чуточку побыстрее. Достаточно сделать теневой контекстный стек и при операциях на стеке контекста реорганизовывать теневой. Тогда даже для тормозного последовательного поиска время на "дублированных" словарях будет одинаково.

Мне кажется что это неоправданное усложнение... Часто ли встречаются случаи дублирования словарей? Если это в интерп. режиме - то скорость не имеет большого значения. А если компилится - то можно исправить код чтобы не было дублирования...
Цитата:
А время на оптимизацию поиска будет тратиться на редких командах only also previous ,,,

не понял

_________________
http://forth.org.ru/~ygrek


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июл 23, 2006 15:18 
Не в сети

Зарегистрирован: Чт май 04, 2006 22:43
Сообщения: 78
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
oleg писал(а):
Ведь есть же еще интересные системы! Поделитесь с окружающими 8)

RetroForth. Использую с того момента, когда проникся идеями Мура/Фокса и понял, что с SPF нам не по пути 8).

Преимущества: компактное ядро (10к), написанное на форте (на асме написаны только базовые интерпретатора/компилятора и слова для работы с внешними api, всего ок. 50 слов); мультиплатформенность (в т.ч. native). Исходник ядра встроен в exeшник, интерпретируется при запуске. Т.е. программа на rf = интерпретатор + скрипт.

rf, несмотря на компиляцию в машинный код, слегка тормозной. Причина - "высокоуровневость" ядра. Но эта проблема решаема.

В rf базовые слова форта отделены от слов, описывающих окружение, и выделены в т.н. ядро Rx (Rx Core). Т.е. ретрофорт = Rx Core + интерпретатор + редактор + работа с внешн. api.

Используется концепция классов слов: слова группируются по характеру поведения во время компиляции и выполнения. Вот они:
- forth - в режиме компиляции скомпилировать xt, в режиме выполнения - выполнить;
- self - xt выполняется всегда (поэтому такие слова должны быть state-зависимы).
- macro - xt выполняется при компиляции, при интерпретации игнорируется;
- inline - при компиляции скопировать в текущее определение машинный код до кода возврата (ret, $C3). При интерпретации - выполнить, как обычно.
- data - при интерпретации положить xt на стек; при компиляции - скомпилировать как литерал.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 24, 2006 01:04 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4960
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
Icefall писал(а):
Используется концепция классов слов: слова группируются по характеру поведения во время компиляции и выполнения. Вот они:
- forth - в режиме компиляции скомпилировать xt, в режиме выполнения - выполнить;
- self - xt выполняется всегда (поэтому такие слова должны быть state-зависимы).
- macro - xt выполняется при компиляции, при интерпретации игнорируется;
- inline - при компиляции скопировать в текущее определение машинный код до кода возврата (ret, $C3). При интерпретации - выполнить, как обычно.
- data - при интерпретации положить xt на стек; при компиляции - скомпилировать как литерал.


Брр. Что-то сложновато 8(
Что значит группируются? По разным словарям рассортированы? Или просто флаги в поле связи различные? Как в связи с этим выглядит цикл interpert ?
Не слишком ли сложно?

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


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

Зарегистрирован: Чт май 04, 2006 22:43
Сообщения: 78
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
на самом деле несложно. у каждого слова есть поле - ссылка на т.н. class handler. Это слово, которое берет xt найденного слова и определяет, что делать с ним на этапе компиляции или интерпретации. Т.е. ответственность за интерпретацию/компиляцию каждого возлагается на обработчик класса.
А использовать классы слов не сложнее, чем переключать основание системы счисления:
Код:
macro
: nop  $90 1, ;
nop ( ничего не делает )
inline
: 1+  1 + ;
5 1+ . ( исполняется как обычно )
> 6
forth
: foo   1 1+ ( копируется код "lit 1 +" ) .  nop ( компилируется $90 ) ;
foo
> 2

а вместо традиционного
Код:
: bla ... ; immediate

пишется
Код:
self
: bla ... ;
forth ...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 24, 2006 22:43 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4960
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
Icefall писал(а):
А использовать классы слов не сложнее, чем переключать основание системы счисления:


8) просто сразу бросилось в глаза. В форте очень сложно переключается система исчисления! Мне очень не нравится как это делается!

Icefall писал(а):
на самом деле несложно. у каждого слова есть поле - ссылка на т.н. class handler. Это слово, которое берет xt найденного слова и определяет, что делать с ним на этапе компиляции или интерпретации. Т.е. ответственность за интерпретацию/компиляцию каждого возлагается на обработчик класса.

То есть в lfa, где и находятся обычно все флаги 8)
Icefall писал(а):
а вместо традиционного
Код:
: bla ... ; immediate

пишется
Код:
self
: bla ... ;
forth ...

и получаем избыток информации + частично префиксную нотацию 8(
Я бы по крайней мере предпочел что-то такое:

f: name .. ;
imm: name .. ;

Вобщем на первый взгляд не нравится :)

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


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

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


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

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


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

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