Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт ноя 13, 2018 08:31

...
Google Search
Forth-FAQ Spy Grafic

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




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

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

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

Кстати да. Если уж заниматься многопроходной компиляцией, то можно и за снтаксис "подергать". Однопроходная компиляция - как раз то решение, которое дает 90% результата при 10% затрат.
Сообщение Добавлено: Вт авг 15, 2006 11:50
  Заголовок сообщения:   Ответить с цитатой
Хищник писал(а):
Да не всегда его нужно модифицировать руками! Я могу задать пару-тройку параметров и запустить некий скрипт, который сам нагенерирует мне текст на форте. И этот текст элементарно скармливается транслятору. Мне что, специально предусматривать, чтобы длина веток if/then не

завести константу, которая будет искаться при загрузке, воот, если она отсутствует, то бъем по рукам за кривоси 8) А вот, когда программер станет продвинутым, он это дело вычислит и все - можно уже делать что хочешь 8)
Если кто не понял, я шучу!
Ну, а если серьезно, то конечно ограничивать длинну не стоит, впрочем как и делать двухпроходную компиляцию для форта - слишком сложно и сомнительный выигрыш.
Сообщение Добавлено: Вт авг 15, 2006 02:06
  Заголовок сообщения:   Ответить с цитатой
oleg писал(а):
смотри примеры в smal32 есть там такие слова !!!8(


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

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


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


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

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

вот и причина разбить на несколько слов 8) Ну правда! Оно себя оправдывает. Легче модифицировать код!
Сообщение Добавлено: Вт авг 15, 2006 00:13
  Заголовок сообщения:   Ответить с цитатой
oleg писал(а):
На сколько часто это необходимо? Я пока таких программ не видел.
потом все достаточно просто передается через стек.


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


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

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


Ну 20 понятно, что слишком много для ручного набора. Но 127 байт смещения вполне можно превысить при сохранении нормальной читаемости текста. Достаточно внутри литералов понаставить (например, инициализировать что-нибудь).
Сообщение Добавлено: Вт авг 15, 2006 00:03
  Заголовок сообщения:   Ответить с цитатой
Хищник писал(а):
oleg писал(а):
многомерные массивы - это конечно да, но все-таки они в памяти всеравно выраждаются в одномерные.


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


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

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

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

Нет! Бить - иначе не понимают! Везде написано, что форт не любит длинные определения. Но слишком часто никто этого места не читает. И пишут и пишут и пишут - а потом слова на полтора - два - 20 кб...
лучше выкусить. Всеравно линейные куски разделяются на отдельные действия.
Сообщение Добавлено: Пн авг 14, 2006 23:42
  Заголовок сообщения:   Ответить с цитатой
oleg писал(а):
многомерные массивы - это конечно да, но все-таки они в памяти всеравно выраждаются в одномерные.


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

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


Лучше не бить, а рекомендовать. Бывают достаточно длинные линейные куски кода, которые по своей сути атомарны. Не разбивать же их из-за этого на определения. В ДОСовском СПФ я на такие вещи наталкивался, и было очень неудобно выкусывать кусок текста и делать из него еще одно слово, чтобы потом поставить где-то его вызов, вписавшись в +-127 байт. К тому же повторюсь, бывает еще и автогенерация.
Сообщение Добавлено: Пн авг 14, 2006 23:06
  Заголовок сообщения:   Ответить с цитатой
Хищник писал(а):
oleg писал(а):
Я бы категарически запретил писать на форте слова длиннее 256 байт ( для 86 архитектуры)
а так же запретил бы вложенные циклы DO LOOP принудительно
и более чем 3 условных конструкции на одно слово!
Иначе программы на форте получаются уродливые и страшные!
Так что длинные переходы внутри слова не нужны. А оптимизировать переходы между словами не обязательно ( можно и динными обойтись ).
не с потолка взята контстанта, а из того расчета, что котроткие ветвления могут быть произведены в пределах +127 -- -128 байт!
3и - это потому что больше отследить сложно. А CASEы вообще нужно запретить!)

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

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

многомерные массивы - это конечно да, но все-таки они в памяти всеравно выраждаются в одномерные. Так что вот !8)
А вот насчет длинны слов - то тут нужно бить по рукам и сразу! Потому что народ, придя с сишных и паскалевых просторов начинают творить со стеком чудеса, от которых у чертей рога сами отваливаются 8).
Сообщение Добавлено: Пн авг 14, 2006 22:37
  Заголовок сообщения:   Ответить с цитатой
oleg писал(а):
Я бы категарически запретил писать на форте слова длиннее 256 байт ( для 86 архитектуры)
а так же запретил бы вложенные циклы DO LOOP принудительно
и более чем 3 условных конструкции на одно слово!
Иначе программы на форте получаются уродливые и страшные!
Так что длинные переходы внутри слова не нужны. А оптимизировать переходы между словами не обязательно ( можно и динными обойтись ).


Почему именно 256 и 3? "Любая константа, взятая с потолка, выглядит подозрительно" (с) Хищник :) Вложенные циклы - вообще прелесть. В частности, они позволяют наглядно показать, что идет работа с многомерными массивами. Тут скорее вопрос чисто стилистический. Читать короткие слова проще. Но слова ведь могут и автоматически генерироваться. Так что если мы уверены в качестве работы генератора текста, то почему бы ему там не расставить столько управляющих конструкций, сколько он посчитает нужным?
Сообщение Добавлено: Вс авг 13, 2006 22:37
  Заголовок сообщения:   Ответить с цитатой
chess писал(а):
Еще по многопроходности компилятора - она нужна не только для оптимизации кода управляющих конструкций.
Кроме того она нужна для формирования безизбыточного конечного кода программы, ориентированного на исполнение главного слова программы.


Путь решения этих проблемы я указал в:
http://fforum.winglion.ru/viewtopic.php ... ight=#1107
Сообщение Добавлено: Ср авг 09, 2006 16:41
  Заголовок сообщения:   Ответить с цитатой
Гость писал(а):
Это при условии, что функциональное расширение написанной программы не нужно
и не будет использоваться Форт язык для ее наращивания после компиляции программы.

Я сторонник открытого кода-если кому-то понадобится расширять функциональность пусть правит исходники (на Форте).
Сообщение Добавлено: Ср авг 09, 2006 15:39
  Заголовок сообщения:   Ответить с цитатой
chess писал(а):
...Ненужные определения присутствующие в словарях инструментальной системы программирования ни к чему тащить в выходной код, да и сами словари в выходном коде не нужны. ...


Это при условии, что функциональное расширение написанной программы не нужно
и не будет использоваться Форт язык для ее наращивания:) после компиляции программы.
Сообщение Добавлено: Ср авг 09, 2006 15:32
  Заголовок сообщения:   Ответить с цитатой
Еще по многопроходности компилятора - она нужна не только для оптимизации кода управляющих конструкций.
Кроме того она нужна для формирования безизбыточного конечного кода программы, ориентированного на исполнение главного слова программы. Ненужные определения присутствующие в словарях инструментальной системы программирования ни к чему тащить в выходной код, да и сами словари в выходном коде не нужны. Скомпилировать безизбыточный конечный код программы за один проход можно, но учитывая, что для оптимизации управляющих конструкций все равно нужно неск-ко проходов(я это делаю для МК за 3 прохода) проще формировать этот код тоже за несколько проходов.
Сообщение Добавлено: Ср авг 09, 2006 14:47
  Заголовок сообщения:   Ответить с цитатой
chess писал(а):
Живем в век всеобщей автоматизации а все руцями

Не просто "руцями". Это замена достаточно слабой оптимизации кода (все равно код растет!) на оптимизацию алгоритма (позволяет обойтись вообще без роста).
Сообщение Добавлено: Ср авг 09, 2006 14:25
  Заголовок сообщения:   Ответить с цитатой
ArtemKAD писал(а):
далее руцями в программе

Живем в век всеобщей автоматизации а все руцями :lol:
Сообщение Добавлено: Ср авг 09, 2006 13:37

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


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