Forth
http://fforum.winglion.ru/

о преимуществах и недостатках существующих стандартов
http://fforum.winglion.ru/viewtopic.php?f=36&t=1799
Страница 1 из 6

Автор:  mOleg [ Чт дек 25, 2008 15:17 ]
Заголовок сообщения:  о преимуществах и недостатках существующих стандартов

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

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

начну с недостатков.

1) очень неудобная структура документов (все перемешано)
2) местами стандарт фиксирует реализацию слов, к примеру [IF] [ELSE] [THEN]

Автор:  VoidVolker [ Чт дек 25, 2008 19:48 ]
Заголовок сообщения: 

3) Написано ломаным и малопонятным языком. (По крайней мере именно такое впечателение оно производит на меня.)
Т.е. надо чтобы все было написано по-человечески - простыми и понятными словами.

Автор:  WingLion [ Чт дек 25, 2008 20:58 ]
Заголовок сообщения: 

4) слишком много наворотов. Проще надо быть!
5) отсутствие совместимости с более ранними версиями стандарта (камень в огород 94-го) Некоторые мои программы, прекрасно работавшие на F83, на F94 работать не стали... я и разбираться не стал, почему, остался на 83-м форте и на него не жалуюсь.
6) забытый FORGET - вообще перл! кому он помешал?

Автор:  Pretorian [ Чт дек 25, 2008 21:05 ]
Заголовок сообщения: 

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

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

Не достаточно актуализирована работа Forth систем
в Гарвардской и Фон-Неймана архитектурах

слово HERE даёт адрес пространства данных, а xt - понятие исполнимого токена.
это же относится к слову CREATE
а как в F94 получить адрес пространства кода? ( может этот момент явно указан?)

P.S.
Код:
HERE ] 1 . ; EXECUTE

выполнится в spf4, а в Win32Forth даст ошибку исчерпания стека.

Стек управления компиляцией, скорее всего, не должен пересекаться с 2-мя
основными стеками Форта.

Автор:  chess [ Пт дек 26, 2008 17:11 ]
Заголовок сообщения: 

Kopa писал(а):
Не достаточно актуализирована работа Forth систем
в Гарвардской и Фон-Неймана архитектурах

А вот надо ли вносить в стандарт еще и информацию даже не просто об устройстве форт-системы, а еще и при этом, о платформе, на которой эта форт-система поставлена.
Тем самым и дать программную модель среды программирования.
Или это лишнее? Ведь вариантов реализаций форт-систем великое множество. Отсюда и несовместимость форт-текстов
вроде даже и из одинаковых слов, но имеющих разный внутренний подтекст.

Автор:  VoidVolker [ Пт дек 26, 2008 17:29 ]
Заголовок сообщения: 

chess писал(а):
А вот надо ли вносить в стандарт еще и информацию даже не просто об устройстве форт-системы, а еще и при этом, о платформе, на которой эта форт-система поставлена.

Может в виде некоторого набора модулей стандарта?

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

chess писал(а):
А вот надо ли вносить в стандарт еще и информацию даже не просто об устройстве форт-системы, а еще и при этом, о платформе, на которой эта форт-система поставлена.

да, мне кажется, что вычислительная среда и должна быть в первую очередь зафиксирована стандартом, тем более, раз уж от нее основные расхождения и начинаются.

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

еще одно замечание: именование определений должно быть регулярным.
Уж если договорились, что слова, работающие со строками начинаюстя с буквы 'S', то все слова должны быть такими, то есть S>HEAP быть должно, а не HEAP-COPY. Еще один пример: 2DUP но D, DLITERAL а должно бы все быть: DDUP DOVER DVALUE и т.д.

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

кстати, забыли о главном недостатке:
РУССКОГО стандарта (ГОСТ) пока не существует в природе!

Автор:  Kopa [ Пн янв 12, 2009 09:41 ]
Заголовок сообщения: 

Во многих Форт-системах, исключая spf4 приведённый ниже код не работает. :(
Код:
: rep R@ EXECUTE ;
: test rep ." 01" ;
test


И в чём "фикус". Неужели не по F94?

P.S. В F83 скорее всё наоборот:)

Возможное ещё применение:
Код:
: err R@ ;
: test ( flag - xt-addr ) IF err ." true" EXIT ELSE err ." false" THEN ;
test

Автор:  chess [ Пн янв 12, 2009 10:36 ]
Заголовок сообщения: 

Kopa писал(а):
Во многих Форт-системах, исключая spf4 приведённый ниже код не работает.

Ну в VFX(потому, что нативный форт как и СПФ) тоже работает.
Код:
rep
( 004ABBC0    8B0C24 )                MOV       ECX, [ESP]
( 004ABBC3    FFD1 )                  CALL      ECX
( 004ABBC5    C3 )                    NEXT,
( 6 bytes, 3 instructions )

test
( 004ABBF0    E8CBFFFFFF )            CALL      004ABBC0        rep
( 004ABBF5    E85610F6FF )            CALL      0040CC50        (.") "01"
( 004ABC00    C3 )                    NEXT,
( 17 bytes, 3 instructions )

для СПФ в коде почти тоже самое
Код:
CODE rep (4 bytes)
56B5D3 FF1424           CALL    [ESP]
56B5D6 C3               RET     NEAR
END-CODE                (2 instructions)


CODE test (20 bytes)
56B5EB E8E3FFFFFF       CALL    56B5D3  ( rep )
56B5F0 E8EF6BFEFF       CALL    5521E4  ( _CLITERAL-CODE )
56B5F5   02 30 31 00  E8 CA AF FE  FF C3 0F B6  56 00 00 02 .01.ш╩п■ ├.╢V...
56B5F9 E8CAAFFEFF       CALL    5565C8  ( (.") )
56B5FE C3               RET     NEAR
END-CODE                (4 instructions)

Автор:  VoidVolker [ Пн янв 12, 2009 13:59 ]
Заголовок сообщения: 

Kopa писал(а):
Во многих Форт-системах, исключая spf4 приведённый ниже код не работает.

В кварке тоже работает. 8)

Автор:  mOleg [ Пн янв 12, 2009 21:01 ]
Заголовок сообщения: 

не работает, и не должно работать.
Особенность хранения адресов на стеке возвратов, и различных типов ШК.
Если хочется разобраться в теме, советую статью Гасаненко:
Open Interpreter: Portability of Return Stack Manipulations

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