Forth
http://fforum.winglion.ru/

Нужны ли Форту нововведения?
http://fforum.winglion.ru/viewtopic.php?f=4&t=82
Страница 4 из 4

Автор:  chess [ Ср авг 09, 2006 14:47 ]
Заголовок сообщения: 

Еще по многопроходности компилятора - она нужна не только для оптимизации кода управляющих конструкций.
Кроме того она нужна для формирования безизбыточного конечного кода программы, ориентированного на исполнение главного слова программы. Ненужные определения присутствующие в словарях инструментальной системы программирования ни к чему тащить в выходной код, да и сами словари в выходном коде не нужны. Скомпилировать безизбыточный конечный код программы за один проход можно, но учитывая, что для оптимизации управляющих конструкций все равно нужно неск-ко проходов(я это делаю для МК за 3 прохода) проще формировать этот код тоже за несколько проходов.

Автор:  Гость [ Ср авг 09, 2006 15:32 ]
Заголовок сообщения: 

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


Это при условии, что функциональное расширение написанной программы не нужно
и не будет использоваться Форт язык для ее наращивания:) после компиляции программы.

Автор:  chess [ Ср авг 09, 2006 15:39 ]
Заголовок сообщения: 

Гость писал(а):
Это при условии, что функциональное расширение написанной программы не нужно
и не будет использоваться Форт язык для ее наращивания после компиляции программы.

Я сторонник открытого кода-если кому-то понадобится расширять функциональность пусть правит исходники (на Форте).

Автор:  Mihail [ Ср авг 09, 2006 16:41 ]
Заголовок сообщения: 

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


Путь решения этих проблемы я указал в:
http://fforum.winglion.ru/viewtopic.php ... ight=#1107

Автор:  Hishnik [ Вс авг 13, 2006 22:37 ]
Заголовок сообщения: 

oleg писал(а):
Я бы категарически запретил писать на форте слова длиннее 256 байт ( для 86 архитектуры)
а так же запретил бы вложенные циклы DO LOOP принудительно
и более чем 3 условных конструкции на одно слово!
Иначе программы на форте получаются уродливые и страшные!
Так что длинные переходы внутри слова не нужны. А оптимизировать переходы между словами не обязательно ( можно и динными обойтись ).


Почему именно 256 и 3? "Любая константа, взятая с потолка, выглядит подозрительно" (с) Хищник :) Вложенные циклы - вообще прелесть. В частности, они позволяют наглядно показать, что идет работа с многомерными массивами. Тут скорее вопрос чисто стилистический. Читать короткие слова проще. Но слова ведь могут и автоматически генерироваться. Так что если мы уверены в качестве работы генератора текста, то почему бы ему там не расставить столько управляющих конструкций, сколько он посчитает нужным?

Автор:  mOleg [ Пн авг 14, 2006 22:37 ]
Заголовок сообщения: 

Хищник писал(а):
oleg писал(а):
Я бы категарически запретил писать на форте слова длиннее 256 байт ( для 86 архитектуры)
а так же запретил бы вложенные циклы DO LOOP принудительно
и более чем 3 условных конструкции на одно слово!
Иначе программы на форте получаются уродливые и страшные!
Так что длинные переходы внутри слова не нужны. А оптимизировать переходы между словами не обязательно ( можно и динными обойтись ).
не с потолка взята контстанта, а из того расчета, что котроткие ветвления могут быть произведены в пределах +127 -- -128 байт!
3и - это потому что больше отследить сложно. А CASEы вообще нужно запретить!)

Почему именно 256 и 3? "Любая константа, взятая с потолка, выглядит подозрительно" (с) Хищник

Хищник писал(а):
В частности, они позволяют наглядно показать, что идет работа с многомерными массивами. Тут скорее вопрос чисто стилистический. Читать короткие слова проще. Но слова ведь могут и автоматически генерироваться. Так что если мы уверены в качестве работы генератора текста, то почему бы ему там не расставить столько управляющих конструкций, сколько он посчитает нужным?

многомерные массивы - это конечно да, но все-таки они в памяти всеравно выраждаются в одномерные. Так что вот !8)
А вот насчет длинны слов - то тут нужно бить по рукам и сразу! Потому что народ, придя с сишных и паскалевых просторов начинают творить со стеком чудеса, от которых у чертей рога сами отваливаются 8).

Автор:  Hishnik [ Пн авг 14, 2006 23:06 ]
Заголовок сообщения: 

oleg писал(а):
многомерные массивы - это конечно да, но все-таки они в памяти всеравно выраждаются в одномерные.


Ну это-то понятно, но логика программы? Можно ведь и циклы развернуть, но часто бывает так, что для повышения читаемости требуется иметь на экране хорошо структурированный текст, где будут нормальные I J K, а не выверты с получением счетчика объемлющего цикла.

oleg писал(а):
А вот насчет длинны слов - то тут нужно бить по рукам и сразу! Потому что народ, придя с сишных и паскалевых просторов начинают творить со стеком чудеса, от которых у чертей рога сами отваливаются Cool.


Лучше не бить, а рекомендовать. Бывают достаточно длинные линейные куски кода, которые по своей сути атомарны. Не разбивать же их из-за этого на определения. В ДОСовском СПФ я на такие вещи наталкивался, и было очень неудобно выкусывать кусок текста и делать из него еще одно слово, чтобы потом поставить где-то его вызов, вписавшись в +-127 байт. К тому же повторюсь, бывает еще и автогенерация.

Автор:  mOleg [ Пн авг 14, 2006 23:42 ]
Заголовок сообщения: 

Хищник писал(а):
oleg писал(а):
многомерные массивы - это конечно да, но все-таки они в памяти всеравно выраждаются в одномерные.


Ну это-то понятно, но логика программы? Можно ведь и циклы развернуть, но часто бывает так, что для повышения читаемости требуется иметь на экране хорошо структурированный текст, где будут нормальные I J K, а не выверты с получением счетчика объемлющего цикла.


На сколько часто это необходимо? Я пока таких программ не видел.
потом все достаточно просто передается через стек.

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

Лучше не бить, а рекомендовать. Бывают достаточно длинные линейные куски кода, которые по своей сути атомарны. Не разбивать же их из-за этого на определения. В ДОСовском СПФ я на такие вещи наталкивался, и было очень неудобно выкусывать кусок текста и делать из него еще одно слово, чтобы потом поставить где-то его вызов, вписавшись в +-127 байт. К тому же повторюсь, бывает еще и автогенерация.

Нет! Бить - иначе не понимают! Везде написано, что форт не любит длинные определения. Но слишком часто никто этого места не читает. И пишут и пишут и пишут - а потом слова на полтора - два - 20 кб...
лучше выкусить. Всеравно линейные куски разделяются на отдельные действия.

Автор:  Hishnik [ Вт авг 15, 2006 00:03 ]
Заголовок сообщения: 

oleg писал(а):
На сколько часто это необходимо? Я пока таких программ не видел.
потом все достаточно просто передается через стек.


Код:
: FILL_RECTANGLE
   100 0 DO
     100 0 DO
        I J  clRed PIXEL
     LOOP
   LOOP
;


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

oleg писал(а):
Нет! Бить - иначе не понимают! Везде написано, что форт не любит длинные определения. Но слишком часто никто этого места не читает. И пишут и пишут и пишут - а потом слова на полтора - два - 20 кб...


Ну 20 понятно, что слишком много для ручного набора. Но 127 байт смещения вполне можно превысить при сохранении нормальной читаемости текста. Достаточно внутри литералов понаставить (например, инициализировать что-нибудь).

Автор:  mOleg [ Вт авг 15, 2006 00:13 ]
Заголовок сообщения: 

Хищник писал(а):
Ну 20 понятно, что слишком много для ручного набора.


смотри примеры в smal32 есть там такие слова !!!8(

Хищник писал(а):
Но 127 байт смещения вполне можно превысить при сохранении нормальной читаемости текста. Достаточно внутри литералов понаставить (например, инициализировать что-нибудь).

вот и причина разбить на несколько слов 8) Ну правда! Оно себя оправдывает. Легче модифицировать код!

Автор:  Hishnik [ Вт авг 15, 2006 00:27 ]
Заголовок сообщения: 

oleg писал(а):
смотри примеры в smal32 есть там такие слова !!!8(


Ой, туда я давно не заглядывал. Нечего там ловить...

oleg писал(а):
вот и причина разбить на несколько слов Cool Ну правда! Оно себя оправдывает. Легче модифицировать код!


Да не всегда его нужно модифицировать руками! Я могу задать пару-тройку параметров и запустить некий скрипт, который сам нагенерирует мне текст на форте. И этот текст элементарно скармливается транслятору. Мне что, специально предусматривать, чтобы длина веток if/then не превышала 127 байт??? :dmad; Там не будет ошибок, там темплейты с вычисляемыми литералами. Руками - да, пускай будет некая проверка стиля. MS Word тоже подсвечивает ошибки. Причем подсвечивает как красным (орфография), так и зеленым (стилистика). А если я уверен в том, что написал? Мне так и плеваться на то, что автору транслятора пришло в голову именно таким образом побороться за чистоту стиля? Итог будет один - выброшу этот учебный Форт (раз уж он прилагает такие усилия к тому, чтобы научить меня правильно писать).

Автор:  mOleg [ Вт авг 15, 2006 02:06 ]
Заголовок сообщения: 

Хищник писал(а):
Да не всегда его нужно модифицировать руками! Я могу задать пару-тройку параметров и запустить некий скрипт, который сам нагенерирует мне текст на форте. И этот текст элементарно скармливается транслятору. Мне что, специально предусматривать, чтобы длина веток if/then не

завести константу, которая будет искаться при загрузке, воот, если она отсутствует, то бъем по рукам за кривоси 8) А вот, когда программер станет продвинутым, он это дело вычислит и все - можно уже делать что хочешь 8)
Если кто не понял, я шучу!
Ну, а если серьезно, то конечно ограничивать длинну не стоит, впрочем как и делать двухпроходную компиляцию для форта - слишком сложно и сомнительный выигрыш.

Автор:  Hishnik [ Вт авг 15, 2006 11:50 ]
Заголовок сообщения: 

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

Кстати да. Если уж заниматься многопроходной компиляцией, то можно и за снтаксис "подергать". Однопроходная компиляция - как раз то решение, которое дает 90% результата при 10% затрат.

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