Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 18:07

...
Google Search
Forth-FAQ Spy Grafic

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




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

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

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

Избыток может быть оправдан 8) Например, inline-определения оптимизируют код макроподстановкой без всяких дополнительных оптимизаторов.

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

Естественно, надо пробовать.
Рекомендую почитать доку по Rx, она начинается как раз объяснением классов слов.


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Icefall писал(а):
Избыток может быть оправдан Cool Например, inline-определения оптимизируют код макроподстановкой без всяких дополнительных оптимизаторов.


Я делал флаг INLINE с последующим "разворотом" этого слова при компиляции. И никаких классов.


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
.class ( xt -- )
The class handler for the provided classes.
During compilation, a call to the xt is compiled.
During interpretation, the xt is executed.

.data ( xt -- )
.data is used for data structures and numbers. It
will leave the xt on the stack during interpretation
and compile the xt as a literal during compilation.

.forth ( xt -- )
The class handler for forth words.
Semantics are the same as with .class

.self ( xt -- )
Words using this class are always called, unless used
in a definition with a prefixing word immediately
before them. Generally words using this class will
need to be state-smart.

.macro ( xt -- )
Used for compiler macros, words with a class of .macro
are always called during compilation (unless preceded
by a prefixing word). They are ignored during
interpretation.

.inline ( xt -- )
This is a special class used for certain primitives.
It will copy the machine code (up to a hex value of
$C3, the ret instruction) into the current definition
during compilation. During interpretation the word
is called normally. Only words that do not use $c3
and have no calls to other words can use the .inline
class.

Опять усложнение форта. Мне нравилось всегда что форт понимает всего один тип понятий - слово. А само слово уже знает, что будет делать. Из этого немного выпадают слова c immediate признаком, точнее как раз слова не имеющие такого признака.
( кстати идея 8) сделать в форте все слова immediate - упростим interpret за счет усложнения поведения каждого из слов ;) а литералы сделаем таким образом:

single 0343
double 34.05
ну или что-то вроде 8)

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


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

Зарегистрирован: Чт май 04, 2006 22:43
Сообщения: 78
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
мне как раз кажется, что классы вместо флагов - проще. флаги надо устанавливать, читать и в зависимости от состояния (установлен/не установлен) выполнять или нет соотв. код. т.е. куча if'ов в интерпретаторе. а тут все линейно: всегда вызывается обработчик класса. как раз само слово и определяет, что интерпретатору с ним делать.


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Зато в интерпретаторе if-ы написаны один раз. А классы требуют сопровождения во всех проектах.


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

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

Флаги можно комбинировать, а может слово относиться сразу к нескольким классам?

Icefall писал(а):
флаги надо устанавливать, читать и в зависимости от состояния (установлен/не установлен) выполнять или нет соотв. код. т.е. куча if'ов в интерпретаторе.

обычно проверяется всего один флаг immediate.
это одно ветвление 8)

.. ?immediate If compile Else excute Then ..

C классами будет чуточку посложнее - уже не ветвление а цикл? Или дополнительное поле(вектор) в самом слове?

я понимаю что можно сделать так:
.. find if DUP >TypeField @ EXECUTE THEN ..

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


Я тут, как Василий Иванович "нутром чую, что 0,5 + 0,5 будет литра, только вот как доказать?" перевариваю.

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


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
WingLion писал(а):
oleg писал(а):
single 0343
double 34.05
ну или что-то вроде Cool
.


Кто-то раньше предлагал более другой ;) вариант с :
что-то типа:
noname: ttttt ; " name" named

а в постскрипте делается так: /name def { something } связать ( не помню как это слово называется в постскрипте).
То есть полный постфикс!

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


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

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

Именно так
oleg писал(а):
я понимаю что можно сделать так:
.. find if DUP >TypeField @ EXECUTE THEN ..

Угу, типа того. Только на асме :)

Хищник писал(а):
Зато в интерпретаторе if-ы написаны один раз. А классы требуют сопровождения во всех проектах.

Что значит требуют сопровождения? Выше описанные - они уже есть в ядре. А создавать свои классы обычно требуется там, где используется does>. Впрочем, я использую последнее.


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

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
Icefall писал(а):
Избыток может быть оправдан 8) Например, inline-определения оптимизируют код макроподстановкой без всяких дополнительных оптимизаторов.


Чем плох дополнительный оптимизатор? В СПФ он позволяет
пользователю не знать о своем существовании, просто программа
работает быстрее.


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

Зарегистрирован: Чт май 04, 2006 22:43
Сообщения: 78
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Михаил, при всем уважении к выполненной работе, оптимизатор в спф - слишком сложный и громоздкий. Просто я не могу быть уверен в нем так же, как в остальной части форт-системы. Как я понимаю, в нем до сих пор изредка обнаруживаются ошибки. Наконец, я не использую больше spf :).
А в retroforth'e inline-определения тоже ничем не отличаются от обычных forth-слов. Единственное ограничение - такие определения в своем теле не должны содержать $c3 (ret).

В retro AFAIK словарь один.


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

Зарегистрирован: Чт май 04, 2006 17:26
Сообщения: 49
Откуда: Fenbelil
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Так, ладно, значит теперь моя очередь...
Итак, Win32FORTH (обитает по адресу Http://Win32FORTH.ORG), представляет собой современную, бесплатную, имую, Форт-систему под Windows, прародителем которой был небезызвестный PC-FORTH. Проект активно развивается. Имеется встроенный многооконый текстовый редактор с подсветкой синтаксиса, а также менеджер проектов и конструтор форм (В скором времени обещают обьеденить все это хозяйство в одну IDE). Поддерживается ООП, причем все GUI, а также большинство библиотек держаться именно на нем. Тип кода: ITC, но планируется переход на STC. Имеются хорошие возможности для DEBUG'а, а также другие полезные инструменты, в т.ч. для новичков. Синтаксис не чувствителен к регистру. Ассемблер префиксный, как и положенно у нормальных людей :twisted: . Фух, вроде ничего не забыла :) . Однако есть и недостатки, а именно:
*Англоязычность.
*Невозможность создавать .DLL (раньше была...Потом сплыла, когда ведущий программист покинул проект :( ... Теперь обещают вернуть)
*Некоторая тормознутость (Обещаю поправить переходом нат STC)
Но на мой взгляд они не являются существенными ;)

Ведикт: собственно говоря, лично я использую именно эту реализацию, чего и вам рекомендую ;) .

_________________
Don't try to catch the Night !


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Chrono Syndrome писал(а):
бесплатную, имую, Форт-систему под Windows, прародителем которой был небезызвестный PC-FORTH.

Замечу, что это был один из лучших фортов, которые мне встречались с очень оригинальным методом next (хоть и медленным - зато позволявшим адресовать в досе всю память в пределах первого мегабайта не задумываясь о том, как это делать 8) Только вот он был слишком большим, как для форта просто необьятным - по крайней мере мне так казалось, а я сравнивал с info4th. И еще он был одноязычным. Писать по-русски в нем было нельзя. Потом я встречал решения этой проблемы, но он для меня уже был неактуален.

Его потомок, на сколько я понимаю - это самый популярный форт-проект за рубежом. К тому же это открытый и бесплатный проект. Не нравится он мне своей монстрячностью. Уж больно большой. По-моему он проигрывает СПФ-у по продуманности и простоте, а смалу по удобству.
Вокруг него вроде бы обсуждался видеопроигрыватель и какой-то просмотрщик ( я не разбирался - только читал посты в группу) А сейчас во всю обсуждается IDE и проек искусственного интелекта - вроде уже работающего. Может кто расскажет лучше???

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


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

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


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

Зарегистрирован: Вс июн 21, 2009 20:49
Сообщения: 111
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Тут кто-то спрашивал про e, так вот он eForth:
http://www.baymoon.com/~bimu/forth/

В принципе ничего особенного я со своего первого взгляда не нашел (я слабый фортер), кроме уже упомянутого - что он принципиально был сделан легкопереносимым (всего 29 слов, включая 3 слова ввода/вывода для ДОС, реализованы на асме, остальные слова высокоуровневые).
Переносимость сделана по принципу целевой компиляции - есть некий компилятор (с закрытым кодом и без документации), которому на вход подается описание системы (явно некоторое подмножество форта) и словарь (словарь частично на форт-ассемблере, и я так понял, может быть полностью форт-ассемблерный), и из них генерируется целевая система. Честно, еще не пробовал использовать (лень заводить эмулятор), но вроде все выглядит серьезно.

Очень порадовало что размер кода для компиляции системы под ДОС всего 46к, но это не совсем честный размер - судя по всему в целевом компиляторе интегрирован форт-ассемблер или оно вызывает masm (или что-то другое).
Однозначно минус что самая интересная часть с закрытым кодом, второй минус что общедоступно только ДОС-версия (и понятно что без того самого компилятора маловероятно сделать версии для других архитектур), и давно никаких новостей.
Менеджеров памяти (чтобы работать за пределами 64к) не обнаружил.

Когда-то давно пробовал pygmy (пытался делать игрушку на pygmy 1.4, которую вобщем забросил, но саму систему попробовал), и что порадовало, там вся система с исходниками на форте-же (частично форт-ассемблер), и можно без проблем было сделать двоичный вариант своей программы (буквально на уровне добавления к коду пары строк).
Сам форт простой форт для ДОС, без каких-либо изощрений (смотрел глазами несколько реализаций фортов на x86), версия 1.5 уже была с встроенной многопотоковостью.
Недостатки: проект только под ДОС и давно новостей нет.
Менеджера памяти в pygmy точно не было, но через форт-ассемблер можно было вылезать куда угодно (я сделал графические примитивы под режим 320х200x8бит и загрузку палитры в VGA).


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
simne писал(а):
В принципе ничего особенного я со своего первого взгляда не нашел (я слабый фортер), кроме уже упомянутого - что он принципиально был сделан легкопереносимым (всего 29 слов, включая 3 слова ввода/вывода для ДОС, реализованы на асме, остальные слова высокоуровневые).

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

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


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

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


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

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


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

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