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) А вот насчет длинны слов - то тут нужно бить по рукам и сразу! Потому что народ, придя с сишных и паскалевых просторов начинают творить со стеком чудеса, от которых у чертей рога сами отваливаются . |
Автор: | 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 байт смещения вполне можно превысить при сохранении нормальной читаемости текста. Достаточно внутри литералов понаставить (например, инициализировать что-нибудь).
вот и причина разбить на несколько слов Ну правда! Оно себя оправдывает. Легче модифицировать код! |
Автор: | Hishnik [ Вт авг 15, 2006 00:27 ] |
Заголовок сообщения: | |
oleg писал(а): смотри примеры в smal32 есть там такие слова !!!8( Ой, туда я давно не заглядывал. Нечего там ловить... oleg писал(а): вот и причина разбить на несколько слов Cool Ну правда! Оно себя оправдывает. Легче модифицировать код!
Да не всегда его нужно модифицировать руками! Я могу задать пару-тройку параметров и запустить некий скрипт, который сам нагенерирует мне текст на форте. И этот текст элементарно скармливается транслятору. Мне что, специально предусматривать, чтобы длина веток if/then не превышала 127 байт??? Там не будет ошибок, там темплейты с вычисляемыми литералами. Руками - да, пускай будет некая проверка стиля. MS Word тоже подсвечивает ошибки. Причем подсвечивает как красным (орфография), так и зеленым (стилистика). А если я уверен в том, что написал? Мне так и плеваться на то, что автору транслятора пришло в голову именно таким образом побороться за чистоту стиля? Итог будет один - выброшу этот учебный Форт (раз уж он прилагает такие усилия к тому, чтобы научить меня правильно писать). |
Автор: | mOleg [ Вт авг 15, 2006 02:06 ] |
Заголовок сообщения: | |
Хищник писал(а): Да не всегда его нужно модифицировать руками! Я могу задать пару-тройку параметров и запустить некий скрипт, который сам нагенерирует мне текст на форте. И этот текст элементарно скармливается транслятору. Мне что, специально предусматривать, чтобы длина веток if/then не
завести константу, которая будет искаться при загрузке, воот, если она отсутствует, то бъем по рукам за кривоси А вот, когда программер станет продвинутым, он это дело вычислит и все - можно уже делать что хочешь Если кто не понял, я шучу! Ну, а если серьезно, то конечно ограничивать длинну не стоит, впрочем как и делать двухпроходную компиляцию для форта - слишком сложно и сомнительный выигрыш. |
Автор: | 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/ |