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

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

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

а это и есть его главное достоинство. eForth портирован за счет этой своей простоты на кучу платформ.
Но, сам по себе он тормозной, то есть чего-то выдающегося от него ожидать не стоит.
Сообщение Добавлено: Вс июн 21, 2009 21:22
  Заголовок сообщения:   Ответить с цитатой
Тут кто-то спрашивал про 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:16
  Заголовок сообщения:   Ответить с цитатой
А кто может рассказать о DSFORTH и чем он отличается от СПФ?
Сообщение Добавлено: Сб авг 05, 2006 06:18
  Заголовок сообщения:   Ответить с цитатой
Chrono Syndrome писал(а):
бесплатную, имую, Форт-систему под Windows, прародителем которой был небезызвестный PC-FORTH.

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

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

Ведикт: собственно говоря, лично я использую именно эту реализацию, чего и вам рекомендую ;) .
Сообщение Добавлено: Вс июл 30, 2006 17:44
  Заголовок сообщения:   Ответить с цитатой
Михаил, при всем уважении к выполненной работе, оптимизатор в спф - слишком сложный и громоздкий. Просто я не могу быть уверен в нем так же, как в остальной части форт-системы. Как я понимаю, в нем до сих пор изредка обнаруживаются ошибки. Наконец, я не использую больше spf :).
А в retroforth'e inline-определения тоже ничем не отличаются от обычных forth-слов. Единственное ограничение - такие определения в своем теле не должны содержать $c3 (ret).

В retro AFAIK словарь один.
Сообщение Добавлено: Вт июл 25, 2006 15:39
  Заголовок сообщения:   Ответить с цитатой
Icefall писал(а):
Избыток может быть оправдан 8) Например, inline-определения оптимизируют код макроподстановкой без всяких дополнительных оптимизаторов.


Чем плох дополнительный оптимизатор? В СПФ он позволяет
пользователю не знать о своем существовании, просто программа
работает быстрее.
Сообщение Добавлено: Вт июл 25, 2006 15:08
  Заголовок сообщения:   Ответить с цитатой
oleg писал(а):
Или дополнительное поле(вектор) в самом слове?

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

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

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

Что значит требуют сопровождения? Выше описанные - они уже есть в ядре. А создавать свои классы обычно требуется там, где используется does>. Впрочем, я использую последнее.
Сообщение Добавлено: Вт июл 25, 2006 09:29
  Заголовок сообщения:   Ответить с цитатой
WingLion писал(а):
oleg писал(а):
single 0343
double 34.05
ну или что-то вроде Cool
.


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

а в постскрипте делается так: /name def { something } связать ( не помню как это слово называется в постскрипте).
То есть полный постфикс!
Сообщение Добавлено: Вт июл 25, 2006 00:57
  Заголовок сообщения:   Ответить с цитатой
Icefall писал(а):
мне как раз кажется, что классы вместо флагов - проще.

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

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

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

.. ?immediate If compile Else excute Then ..

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

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

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


Я тут, как Василий Иванович "нутром чую, что 0,5 + 0,5 будет литра, только вот как доказать?" перевариваю.
Сообщение Добавлено: Вт июл 25, 2006 00:14
  Заголовок сообщения:   Ответить с цитатой
Зато в интерпретаторе if-ы написаны один раз. А классы требуют сопровождения во всех проектах.
Сообщение Добавлено: Вт июл 25, 2006 00:11
  Заголовок сообщения:   Ответить с цитатой
мне как раз кажется, что классы вместо флагов - проще. флаги надо устанавливать, читать и в зависимости от состояния (установлен/не установлен) выполнять или нет соотв. код. т.е. куча if'ов в интерпретаторе. а тут все линейно: всегда вызывается обработчик класса. как раз само слово и определяет, что интерпретатору с ним делать.
Сообщение Добавлено: Пн июл 24, 2006 23:40
  Заголовок сообщения:   Ответить с цитатой
.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)
Сообщение Добавлено: Пн июл 24, 2006 23:29
  Заголовок сообщения:   Ответить с цитатой
Icefall писал(а):
Избыток может быть оправдан Cool Например, inline-определения оптимизируют код макроподстановкой без всяких дополнительных оптимизаторов.


Я делал флаг INLINE с последующим "разворотом" этого слова при компиляции. И никаких классов.
Сообщение Добавлено: Пн июл 24, 2006 23:14
  Заголовок сообщения:   Ответить с цитатой
oleg писал(а):
и получаем избыток информации + частично префиксную нотацию 8(
Я бы по крайней мере предпочел что-то такое:

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

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

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

Естественно, надо пробовать.
Рекомендую почитать доку по Rx, она начинается как раз объяснением классов слов.
Сообщение Добавлено: Пн июл 24, 2006 23:11

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


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