Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср июн 20, 2018 05:49

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 58 ]  На страницу Пред.  1, 2, 3, 4

Нужны ли Форту нововведения?
Да 94%  94%  [ 16 ]
Нет 6%  6%  [ 1 ]
Всего голосов : 17
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 09, 2006 14:47 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2107
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 34 раз.
Еще по многопроходности компилятора - она нужна не только для оптимизации кода управляющих конструкций.
Кроме того она нужна для формирования безизбыточного конечного кода программы, ориентированного на исполнение главного слова программы. Ненужные определения присутствующие в словарях инструментальной системы программирования ни к чему тащить в выходной код, да и сами словари в выходном коде не нужны. Скомпилировать безизбыточный конечный код программы за один проход можно, но учитывая, что для оптимизации управляющих конструкций все равно нужно неск-ко проходов(я это делаю для МК за 3 прохода) проще формировать этот код тоже за несколько проходов.

_________________
С уважением, chess


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


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


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 09, 2006 15:39 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2107
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 34 раз.
Гость писал(а):
Это при условии, что функциональное расширение написанной программы не нужно
и не будет использоваться Форт язык для ее наращивания после компиляции программы.

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

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 09, 2006 16:41 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
chess писал(а):
Еще по многопроходности компилятора - она нужна не только для оптимизации кода управляющих конструкций.
Кроме того она нужна для формирования безизбыточного конечного кода программы, ориентированного на исполнение главного слова программы.


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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс авг 13, 2006 22:37 
Не в сети
Administrator
Administrator
Аватара пользователя

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


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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 14, 2006 22:37 
Не в сети
Moderator
Moderator
Аватара пользователя

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

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

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 14, 2006 23:06 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6328
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
oleg писал(а):
многомерные массивы - это конечно да, но все-таки они в памяти всеравно выраждаются в одномерные.


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

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


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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 14, 2006 23:42 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4920
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
Хищник писал(а):
oleg писал(а):
многомерные массивы - это конечно да, но все-таки они в памяти всеравно выраждаются в одномерные.


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


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

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

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 15, 2006 00:03 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6328
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
oleg писал(а):
На сколько часто это необходимо? Я пока таких программ не видел.
потом все достаточно просто передается через стек.


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


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

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


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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 15, 2006 00:13 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4920
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
Хищник писал(а):
Ну 20 понятно, что слишком много для ручного набора.


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

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 15, 2006 00:27 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6328
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
oleg писал(а):
смотри примеры в smal32 есть там такие слова !!!8(


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

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


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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 15, 2006 02:06 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4920
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
Хищник писал(а):
Да не всегда его нужно модифицировать руками! Я могу задать пару-тройку параметров и запустить некий скрипт, который сам нагенерирует мне текст на форте. И этот текст элементарно скармливается транслятору. Мне что, специально предусматривать, чтобы длина веток if/then не

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 15, 2006 11:50 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6328
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
oleg писал(а):
Ну, а если серьезно, то конечно ограничивать длинну не стоит, впрочем как и делать двухпроходную компиляцию для форта - слишком сложно и сомнительный выигрыш.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 58 ]  На страницу Пред.  1, 2, 3, 4

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


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

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