Автор |
Сообщение |
|
|
Заголовок сообщения: |
|
|
|
oleg писал(а): Ну, а если серьезно, то конечно ограничивать длинну не стоит, впрочем как и делать двухпроходную компиляцию для форта - слишком сложно и сомнительный выигрыш.
Кстати да. Если уж заниматься многопроходной компиляцией, то можно и за снтаксис "подергать". Однопроходная компиляция - как раз то решение, которое дает 90% результата при 10% затрат.
[quote="oleg"]Ну, а если серьезно, то конечно ограничивать длинну не стоит, впрочем как и делать двухпроходную компиляцию для форта - слишком сложно и сомнительный выигрыш.[/quote]
Кстати да. Если уж заниматься многопроходной компиляцией, то можно и за снтаксис "подергать". Однопроходная компиляция - как раз то решение, которое дает 90% результата при 10% затрат.
|
|
|
|
Добавлено: Вт авг 15, 2006 11:50 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Хищник писал(а): Да не всегда его нужно модифицировать руками! Я могу задать пару-тройку параметров и запустить некий скрипт, который сам нагенерирует мне текст на форте. И этот текст элементарно скармливается транслятору. Мне что, специально предусматривать, чтобы длина веток if/then не
завести константу, которая будет искаться при загрузке, воот, если она отсутствует, то бъем по рукам за кривоси А вот, когда программер станет продвинутым, он это дело вычислит и все - можно уже делать что хочешь
Если кто не понял, я шучу!
Ну, а если серьезно, то конечно ограничивать длинну не стоит, впрочем как и делать двухпроходную компиляцию для форта - слишком сложно и сомнительный выигрыш.
[quote="Хищник"]Да не всегда его нужно модифицировать руками! Я могу задать пару-тройку параметров и запустить некий скрипт, который сам нагенерирует мне текст на форте. И этот текст элементарно скармливается транслятору. Мне что, специально предусматривать, чтобы длина веток if/then не[/quote]
завести константу, которая будет искаться при загрузке, воот, если она отсутствует, то бъем по рукам за кривоси 8) А вот, когда программер станет продвинутым, он это дело вычислит и все - можно уже делать что хочешь 8)
Если кто не понял, я шучу!
Ну, а если серьезно, то конечно ограничивать длинну не стоит, впрочем как и делать двухпроходную компиляцию для форта - слишком сложно и сомнительный выигрыш.
|
|
|
|
Добавлено: Вт авг 15, 2006 02:06 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
oleg писал(а): смотри примеры в smal32 есть там такие слова !!!8( Ой, туда я давно не заглядывал. Нечего там ловить... oleg писал(а): вот и причина разбить на несколько слов Cool Ну правда! Оно себя оправдывает. Легче модифицировать код!
Да не всегда его нужно модифицировать руками! Я могу задать пару-тройку параметров и запустить некий скрипт, который сам нагенерирует мне текст на форте. И этот текст элементарно скармливается транслятору. Мне что, специально предусматривать, чтобы длина веток if/then не превышала 127 байт??? Там не будет ошибок, там темплейты с вычисляемыми литералами. Руками - да, пускай будет некая проверка стиля. MS Word тоже подсвечивает ошибки. Причем подсвечивает как красным (орфография), так и зеленым (стилистика). А если я уверен в том, что написал? Мне так и плеваться на то, что автору транслятора пришло в голову именно таким образом побороться за чистоту стиля? Итог будет один - выброшу этот учебный Форт (раз уж он прилагает такие усилия к тому, чтобы научить меня правильно писать).
[quote="oleg"]смотри примеры в smal32 есть там такие слова !!!8( [/quote]
Ой, туда я давно не заглядывал. Нечего там ловить...
[quote="oleg"]вот и причина разбить на несколько слов Cool Ну правда! Оно себя оправдывает. Легче модифицировать код![/quote]
Да не всегда его нужно модифицировать руками! Я могу задать пару-тройку параметров и запустить некий скрипт, который сам нагенерирует мне текст на форте. И этот текст элементарно скармливается транслятору. Мне что, специально предусматривать, чтобы длина веток if/then не превышала 127 байт??? :dmad; Там не будет ошибок, там темплейты с вычисляемыми литералами. Руками - да, пускай будет некая проверка стиля. MS Word тоже [i]подсвечивает[/i] ошибки. Причем подсвечивает как красным (орфография), так и зеленым (стилистика). А если я уверен в том, что написал? Мне так и плеваться на то, что автору транслятора пришло в голову именно таким образом побороться за чистоту стиля? Итог будет один - выброшу этот учебный Форт (раз уж он прилагает такие усилия к тому, чтобы научить меня правильно писать).
|
|
|
|
Добавлено: Вт авг 15, 2006 00:27 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Хищник писал(а): Ну 20 понятно, что слишком много для ручного набора. смотри примеры в smal32 есть там такие слова !!!8( Хищник писал(а): Но 127 байт смещения вполне можно превысить при сохранении нормальной читаемости текста. Достаточно внутри литералов понаставить (например, инициализировать что-нибудь).
вот и причина разбить на несколько слов Ну правда! Оно себя оправдывает. Легче модифицировать код!
[quote="Хищник"]Ну 20 понятно, что слишком много для ручного набора.[/quote]
смотри примеры в smal32 есть там такие слова !!!8(
[quote="Хищник"]Но 127 байт смещения вполне можно превысить при сохранении нормальной читаемости текста. Достаточно внутри литералов понаставить (например, инициализировать что-нибудь).[/quote]
вот и причина разбить на несколько слов 8) Ну правда! Оно себя оправдывает. Легче модифицировать код!
|
|
|
|
Добавлено: Вт авг 15, 2006 00:13 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
oleg писал(а): На сколько часто это необходимо? Я пока таких программ не видел. потом все достаточно просто передается через стек.
Код: : FILL_RECTANGLE 100 0 DO 100 0 DO I J clRed PIXEL LOOP LOOP ; Три уровня вложенности - к примеру, работа с моделированием трехмерных объектов. От индексов может много чего зависеть. И вообще это удобно - иметь доступ к индексам напрямую, а не пытаться подсунуть их на стек при входе в следующий уровень цикла. oleg писал(а): Нет! Бить - иначе не понимают! Везде написано, что форт не любит длинные определения. Но слишком часто никто этого места не читает. И пишут и пишут и пишут - а потом слова на полтора - два - 20 кб...
Ну 20 понятно, что слишком много для ручного набора. Но 127 байт смещения вполне можно превысить при сохранении нормальной читаемости текста. Достаточно внутри литералов понаставить (например, инициализировать что-нибудь).
[quote="oleg"]На сколько часто это необходимо? Я пока таких программ не видел. потом все достаточно просто передается через стек. [/quote]
[code]: FILL_RECTANGLE 100 0 DO 100 0 DO I J clRed PIXEL LOOP LOOP ;[/code]
Три уровня вложенности - к примеру, работа с моделированием трехмерных объектов. От индексов может много чего зависеть. И вообще это удобно - иметь доступ к индексам напрямую, а не пытаться подсунуть их на стек при входе в следующий уровень цикла.
[quote="oleg"]Нет! Бить - иначе не понимают! Везде написано, что форт не любит длинные определения. Но слишком часто никто этого места не читает. И пишут и пишут и пишут - а потом слова на полтора - два - 20 кб... [/quote]
Ну 20 понятно, что слишком много для ручного набора. Но 127 байт смещения вполне можно превысить при сохранении нормальной читаемости текста. Достаточно внутри литералов понаставить (например, инициализировать что-нибудь).
|
|
|
|
Добавлено: Вт авг 15, 2006 00:03 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Хищник писал(а): oleg писал(а): многомерные массивы - это конечно да, но все-таки они в памяти всеравно выраждаются в одномерные.
Ну это-то понятно, но логика программы? Можно ведь и циклы развернуть, но часто бывает так, что для повышения читаемости требуется иметь на экране хорошо структурированный текст, где будут нормальные I J K, а не выверты с получением счетчика объемлющего цикла.
На сколько часто это необходимо? Я пока таких программ не видел. потом все достаточно просто передается через стек. Хищник писал(а): oleg писал(а): А вот насчет длинны слов - то тут нужно бить по рукам и сразу! Потому что народ, придя с сишных и паскалевых просторов начинают творить со стеком чудеса, от которых у чертей рога сами отваливаются Cool.
Лучше не бить, а рекомендовать. Бывают достаточно длинные линейные куски кода, которые по своей сути атомарны. Не разбивать же их из-за этого на определения. В ДОСовском СПФ я на такие вещи наталкивался, и было очень неудобно выкусывать кусок текста и делать из него еще одно слово, чтобы потом поставить где-то его вызов, вписавшись в +-127 байт. К тому же повторюсь, бывает еще и автогенерация.
Нет! Бить - иначе не понимают! Везде написано, что форт не любит длинные определения. Но слишком часто никто этого места не читает. И пишут и пишут и пишут - а потом слова на полтора - два - 20 кб...
лучше выкусить. Всеравно линейные куски разделяются на отдельные действия.
[quote="Хищник"]oleg писал(а): многомерные массивы - это конечно да, но все-таки они в памяти всеравно выраждаются в одномерные.
Ну это-то понятно, но логика программы? Можно ведь и циклы развернуть, но часто бывает так, что для повышения читаемости требуется иметь на экране хорошо структурированный текст, где будут нормальные I J K, а не выверты с получением счетчика объемлющего цикла. [/quote]
На сколько часто это необходимо? Я пока таких программ не видел. потом все достаточно просто передается через стек.
[quote="Хищник"]oleg писал(а): А вот насчет длинны слов - то тут нужно бить по рукам и сразу! Потому что народ, придя с сишных и паскалевых просторов начинают творить со стеком чудеса, от которых у чертей рога сами отваливаются Cool.
Лучше не бить, а рекомендовать. Бывают достаточно длинные линейные куски кода, которые по своей сути атомарны. Не разбивать же их из-за этого на определения. В ДОСовском СПФ я на такие вещи наталкивался, и было очень неудобно выкусывать кусок текста и делать из него еще одно слово, чтобы потом поставить где-то его вызов, вписавшись в +-127 байт. К тому же повторюсь, бывает еще и автогенерация.[/quote]
Нет! Бить - иначе не понимают! Везде написано, что форт не любит длинные определения. Но слишком часто никто этого места не читает. И пишут и пишут и пишут - а потом слова на полтора - два - 20 кб...
лучше выкусить. Всеравно линейные куски разделяются на отдельные действия.
|
|
|
|
Добавлено: Пн авг 14, 2006 23:42 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
oleg писал(а): многомерные массивы - это конечно да, но все-таки они в памяти всеравно выраждаются в одномерные. Ну это-то понятно, но логика программы? Можно ведь и циклы развернуть, но часто бывает так, что для повышения читаемости требуется иметь на экране хорошо структурированный текст, где будут нормальные I J K, а не выверты с получением счетчика объемлющего цикла. oleg писал(а): А вот насчет длинны слов - то тут нужно бить по рукам и сразу! Потому что народ, придя с сишных и паскалевых просторов начинают творить со стеком чудеса, от которых у чертей рога сами отваливаются Cool.
Лучше не бить, а рекомендовать. Бывают достаточно длинные линейные куски кода, которые по своей сути атомарны. Не разбивать же их из-за этого на определения. В ДОСовском СПФ я на такие вещи наталкивался, и было очень неудобно выкусывать кусок текста и делать из него еще одно слово, чтобы потом поставить где-то его вызов, вписавшись в +-127 байт. К тому же повторюсь, бывает еще и автогенерация.
[quote="oleg"]многомерные массивы - это конечно да, но все-таки они в памяти всеравно выраждаются в одномерные.[/quote]
Ну это-то понятно, но логика программы? Можно ведь и циклы развернуть, но часто бывает так, что для повышения читаемости требуется иметь на экране хорошо структурированный текст, где будут нормальные I J K, а не выверты с получением счетчика объемлющего цикла.
[quote="oleg"]А вот насчет длинны слов - то тут нужно бить по рукам и сразу! Потому что народ, придя с сишных и паскалевых просторов начинают творить со стеком чудеса, от которых у чертей рога сами отваливаются Cool.[/quote]
Лучше не бить, а рекомендовать. Бывают достаточно длинные линейные куски кода, которые по своей сути атомарны. Не разбивать же их из-за этого на определения. В ДОСовском СПФ я на такие вещи наталкивался, и было очень неудобно выкусывать кусок текста и делать из него еще одно слово, чтобы потом поставить где-то его вызов, вписавшись в +-127 байт. К тому же повторюсь, бывает еще и автогенерация.
|
|
|
|
Добавлено: Пн авг 14, 2006 23:06 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Хищник писал(а): oleg писал(а): Я бы категарически запретил писать на форте слова длиннее 256 байт ( для 86 архитектуры) а так же запретил бы вложенные циклы DO LOOP принудительно и более чем 3 условных конструкции на одно слово! Иначе программы на форте получаются уродливые и страшные! Так что длинные переходы внутри слова не нужны. А оптимизировать переходы между словами не обязательно ( можно и динными обойтись ). не с потолка взята контстанта, а из того расчета, что котроткие ветвления могут быть произведены в пределах +127 -- -128 байт! 3и - это потому что больше отследить сложно. А CASEы вообще нужно запретить!)
Почему именно 256 и 3? "Любая константа, взятая с потолка, выглядит подозрительно" (с) Хищник Хищник писал(а): В частности, они позволяют наглядно показать, что идет работа с многомерными массивами. Тут скорее вопрос чисто стилистический. Читать короткие слова проще. Но слова ведь могут и автоматически генерироваться. Так что если мы уверены в качестве работы генератора текста, то почему бы ему там не расставить столько управляющих конструкций, сколько он посчитает нужным?
многомерные массивы - это конечно да, но все-таки они в памяти всеравно выраждаются в одномерные. Так что вот !8)
А вот насчет длинны слов - то тут нужно бить по рукам и сразу! Потому что народ, придя с сишных и паскалевых просторов начинают творить со стеком чудеса, от которых у чертей рога сами отваливаются .
[quote="Хищник"]oleg писал(а): Я бы категарически запретил писать на форте слова длиннее 256 байт ( для 86 архитектуры) а так же запретил бы вложенные циклы DO LOOP принудительно и более чем 3 условных конструкции на одно слово! Иначе программы на форте получаются уродливые и страшные! Так что длинные переходы внутри слова не нужны. А оптимизировать переходы между словами не обязательно ( можно и динными обойтись ). не с потолка взята контстанта, а из того расчета, что котроткие ветвления могут быть произведены в пределах +127 -- -128 байт! 3и - это потому что больше отследить сложно. А CASEы вообще нужно запретить!)
Почему именно 256 и 3? "Любая константа, взятая с потолка, выглядит подозрительно" (с) Хищник [/quote] [quote="Хищник"]В частности, они позволяют наглядно показать, что идет работа с многомерными массивами. Тут скорее вопрос чисто стилистический. Читать короткие слова проще. Но слова ведь могут и автоматически генерироваться. Так что если мы уверены в качестве работы генератора текста, то почему бы ему там не расставить столько управляющих конструкций, сколько он посчитает нужным?[/quote]
многомерные массивы - это конечно да, но все-таки они в памяти всеравно выраждаются в одномерные. Так что вот !8)
А вот насчет длинны слов - то тут нужно бить по рукам и сразу! Потому что народ, придя с сишных и паскалевых просторов начинают творить со стеком чудеса, от которых у чертей рога сами отваливаются 8).
|
|
|
|
Добавлено: Пн авг 14, 2006 22:37 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
oleg писал(а): Я бы категарически запретил писать на форте слова длиннее 256 байт ( для 86 архитектуры) а так же запретил бы вложенные циклы DO LOOP принудительно и более чем 3 условных конструкции на одно слово! Иначе программы на форте получаются уродливые и страшные! Так что длинные переходы внутри слова не нужны. А оптимизировать переходы между словами не обязательно ( можно и динными обойтись ).
Почему именно 256 и 3? "Любая константа, взятая с потолка, выглядит подозрительно" (с) Хищник Вложенные циклы - вообще прелесть. В частности, они позволяют наглядно показать, что идет работа с многомерными массивами. Тут скорее вопрос чисто стилистический. Читать короткие слова проще. Но слова ведь могут и автоматически генерироваться. Так что если мы уверены в качестве работы генератора текста, то почему бы ему там не расставить столько управляющих конструкций, сколько он посчитает нужным?
[quote="oleg"]Я бы категарически запретил писать на форте слова длиннее 256 байт ( для 86 архитектуры) а так же запретил бы вложенные циклы DO LOOP принудительно и более чем 3 условных конструкции на одно слово! Иначе программы на форте получаются уродливые и страшные! Так что длинные переходы внутри слова не нужны. А оптимизировать переходы между словами не обязательно ( можно и динными обойтись ).[/quote]
Почему именно 256 и 3? "Любая константа, взятая с потолка, выглядит подозрительно" (с) Хищник :) Вложенные циклы - вообще прелесть. В частности, они позволяют наглядно показать, что идет работа с многомерными массивами. Тут скорее вопрос чисто стилистический. Читать короткие слова проще. Но слова ведь могут и автоматически генерироваться. Так что если мы уверены в качестве работы генератора текста, то почему бы ему там не расставить столько управляющих конструкций, сколько он посчитает нужным?
|
|
|
|
Добавлено: Вс авг 13, 2006 22:37 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
chess писал(а): Еще по многопроходности компилятора - она нужна не только для оптимизации кода управляющих конструкций. Кроме того она нужна для формирования безизбыточного конечного кода программы, ориентированного на исполнение главного слова программы.
Путь решения этих проблемы я указал в:
http://fforum.winglion.ru/viewtopic.php ... ight=#1107
[quote="chess"]Еще по многопроходности компилятора - она нужна не только для оптимизации кода управляющих конструкций. Кроме того она нужна для формирования безизбыточного конечного кода программы, ориентированного на исполнение главного слова программы.[/quote]
Путь решения этих проблемы я указал в:
http://fforum.winglion.ru/viewtopic.php?p=1107&highlight=#1107
|
|
|
|
Добавлено: Ср авг 09, 2006 16:41 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Гость писал(а): Это при условии, что функциональное расширение написанной программы не нужно и не будет использоваться Форт язык для ее наращивания после компиляции программы.
Я сторонник открытого кода-если кому-то понадобится расширять функциональность пусть правит исходники (на Форте).
[quote="Гость"]Это при условии, что функциональное расширение написанной программы не нужно и не будет использоваться Форт язык для ее наращивания после компиляции программы.[/quote]
Я сторонник открытого кода-если кому-то понадобится расширять функциональность пусть правит исходники (на Форте).
|
|
|
|
Добавлено: Ср авг 09, 2006 15:39 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
chess писал(а): ...Ненужные определения присутствующие в словарях инструментальной системы программирования ни к чему тащить в выходной код, да и сами словари в выходном коде не нужны. ...
Это при условии, что функциональное расширение написанной программы не нужно
и не будет использоваться Форт язык для ее наращивания:) после компиляции программы.
[quote="chess"] ...Ненужные определения присутствующие в словарях инструментальной системы программирования ни к чему тащить в выходной код, да и сами словари в выходном коде не нужны. ...[/quote]
Это при условии, что функциональное расширение написанной программы не нужно
и не будет использоваться Форт язык для ее наращивания:) после компиляции программы.
|
|
|
|
Добавлено: Ср авг 09, 2006 15:32 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Еще по многопроходности компилятора - она нужна не только для оптимизации кода управляющих конструкций.
Кроме того она нужна для формирования безизбыточного конечного кода программы, ориентированного на исполнение главного слова программы. Ненужные определения присутствующие в словарях инструментальной системы программирования ни к чему тащить в выходной код, да и сами словари в выходном коде не нужны. Скомпилировать безизбыточный конечный код программы за один проход можно, но учитывая, что для оптимизации управляющих конструкций все равно нужно неск-ко проходов(я это делаю для МК за 3 прохода) проще формировать этот код тоже за несколько проходов.
Еще по многопроходности компилятора - она нужна не только для оптимизации кода управляющих конструкций.
Кроме того она нужна для формирования безизбыточного конечного кода программы, ориентированного на исполнение главного слова программы. Ненужные определения присутствующие в словарях инструментальной системы программирования ни к чему тащить в выходной код, да и сами словари в выходном коде не нужны. Скомпилировать безизбыточный конечный код программы за один проход можно, но учитывая, что для оптимизации управляющих конструкций все равно нужно неск-ко проходов(я это делаю для МК за 3 прохода) проще формировать этот код тоже за несколько проходов.
|
|
|
|
Добавлено: Ср авг 09, 2006 14:47 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
chess писал(а): Живем в век всеобщей автоматизации а все руцями
Не просто "руцями". Это замена достаточно слабой оптимизации кода (все равно код растет!) на оптимизацию алгоритма (позволяет обойтись вообще без роста).
[quote="chess"]Живем в век всеобщей автоматизации а все руцями [/quote]
Не просто "руцями". Это замена достаточно слабой оптимизации кода (все равно код растет!) на оптимизацию алгоритма (позволяет обойтись вообще без роста).
|
|
|
|
Добавлено: Ср авг 09, 2006 14:25 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
ArtemKAD писал(а): далее руцями в программе
Живем в век всеобщей автоматизации а все руцями
[quote="ArtemKAD"]далее руцями в программе [/quote]
Живем в век всеобщей автоматизации а все руцями :lol:
|
|
|
|
Добавлено: Ср авг 09, 2006 13:37 |
|
|
|
|