Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 18:00

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: [RuF09] Набор управляющих и определяющих слов. Обсуждение.
СообщениеДобавлено: Вт фев 03, 2009 09:19 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Для того, чтобы однозначно "определять" (или, скорее, выражать/объяснять) новые слова через минимальный набор Для ФП и ФВМ

Подчеркиваю - это набор слов, с помощью которых можно выражать другие слова, безотносительно к их реализации. Ясно, что управляющие в конечном итоге через ?BRANCH выразятся, но неудобно каждый раз писать это выражение, когда можно написать 10 0 DO сделать-что-то LOOP и сразу ясно, что это 10-кратное повторение чего-то.

Предлагаю следующий "сокращенный" набор для согласования:

определяющие:
: ; - для стандартного фортового определения

CREATE DOES> для определения "определяющих" слов.


управляющие:

EXECUTE EXIT - безусловное изменение хода исполнения

IF ELSE THEN - условное исполнение

DO LOOP I J K QUIT - цикл со счетчиком

BEGIN UNTIL - цикл с постусловием

BEGIN WHILE REPEAT - цикл с предусловием

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
вместо LOOP - +LOOP
и : LOOP 1 +LOOP ;

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 03, 2009 12:20 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
DO - LOOP не обязательно в базовый набор.
Вот FOR - NEXT - лучше взять за базовый, да и проще реализовывать... ;)
А для организации циклов есть еще вариант - рекурсия! ;)

И еще такой вопрос - логику лучше представлять флагами проца или значениями на стеке?
Условия должны быть поглощающими или нет?
Непоглощающие условия позволяют проще делать последовательные проверки...

_________________
With best wishes, in4.


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
WingLion писал(а):
Предлагаю следующий "сокращенный" набор для согласования:

определяющие:
: ; - для стандартного фортового определения

CREATE DOES> для определения "определяющих" слов.


управляющие:

EXECUTE EXIT - безусловное изменение хода исполнения

IF ELSE THEN - условное исполнение

DO LOOP I J K QUIT - цикл со счетчиком

BEGIN UNTIL - цикл с постусловием

BEGIN WHILE REPEAT - цикл с предусловием

Я так понял, что "тянем" для начала все-таки архитектуру фон Неймана(код программы не отделен от данных).

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


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
вопрос писал(а):
DO - LOOP не обязательно в базовый набор.
Вот FOR - NEXT - лучше взять за базовый, да и проще реализовывать...
А для организации циклов есть еще вариант - рекурсия!

Так ни то ни другое не должно быть в базовом наборе.

in4 писал(а):
И еще такой вопрос - логику лучше представлять флагами проца или значениями на стеке?
Условия должны быть поглощающими или нет?
Непоглощающие условия позволяют проще делать последовательные проверки...

Логика здесь ни при чем. Если вы насчет ветвлений можно сделать и так и так, но опять-таки к
базовому набору это не имеет отношения.

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


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
вопрос писал(а):
вместо LOOP - +LOOP
и : LOOP 1 +LOOP ;


WingLion писал(а):
Подчеркиваю - это набор слов, с помощью которых можно выражать другие слова, безотносительно к их реализации.


Это не предложение для команд в процессор или виртуальную машину, а предложение удобных слов, которыми будут описываться остальные слова. Реализация их будет потом, когда добремся до описания этих слов средствами Форта. Вот тогда и можно будет думать о минимуме, да и то не факт, что он (минимум) потребуется.

Для многократного повторения чего-либо удобнее простой LOOP, нежели +LOOP в котором надо еще думать и о единичке перед +LOOP.


Цитата:
Я так понял, что "тянем" для начала все-таки архитектуру фон Неймана(код программы не отделен от данных).


Нет никакого "тянем". Потому что это всего лишь описание. А на чем оно сделано, на Неймане или Гарварде - не имеет значения.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
in4 писал(а):
И еще такой вопрос - логику лучше представлять флагами проца или значениями на стеке?
Условия должны быть поглощающими или нет?


По моему, давать однозначные ответы на эти вопросы - бессмысленно. Ответы - дело вкусов и предпочтений разработчиков.

Понравится ему после каждого IF-а флаги руками подтирать, сделает так. Не понравится - этак.
Кому надо заставлять в стандарте всех ходить строем и с песней?

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 05, 2009 04:19 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
WingLion писал(а):
По моему, давать однозначные ответы на эти вопросы - бессмысленно. Ответы - дело вкусов и предпочтений разработчиков.

Значит, надо записать что-то похожее на "стековые картины условных конструкций определяются реализацией, возможны непоглощающие условные конструкции".

_________________
With best wishes, in4.


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Декларация свободы программиста находится в самом начале стандарта (в моем предложении, во всяком случае).
Добавлять после этого, что и IF программист волен по-своему сделать, как-то неправильно.

Да, возможны непоглощающие, а возможны и поглощающие дважды, и ...(тут придумать что угодно)...

Если же вписывать в стандарт все, что возможно, он распухнет и лопнет.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Иногда флаг "дальше лишний", иногда нет

наилучший вариант - автоматически запихивать использованные флаги на отдельный стек для возможного повторного использования - код остаётся линейным при любом количестве ветвлений

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 05, 2009 09:47 
Не в сети
Administrator
Administrator
Аватара пользователя

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

Наихудший, надо полагать, использовать DUP, если флаг требуется оставить на стеке?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 05, 2009 10:04 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Хищник писал(а):
вопрос писал(а):
наилучший вариант - автоматически запихивать использованные флаги на отдельный стек для возможного повторного использования - код остаётся линейным при любом количестве ветвлений

Наихудший, надо полагать, использовать DUP, если флаг требуется оставить на стеке?

А кто-то против DUP ?
Ну а если на стеке :D :dmad; требуется оставить 3 флага в 3 ветвлениях?

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 05, 2009 13:38 
Не в сети

Зарегистрирован: Пн окт 15, 2007 17:24
Сообщения: 164
Откуда: Бийск
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Общепринятая, мне кажется практика форта, когда любое слово НЕ оставляет на стеке данных свои входные параметры. Ее преимущества очевидны, когда слово явсно возвращает результаты. Ну а когда не возвращает выходы - входы, для единообразия, все равно следовало бы убирать.

_________________
And so forth ...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 05, 2009 18:39 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
вопрос писал(а):
А кто-то против DUP ?

DUP IF оставит флаг на стеке и перейдет.
вопрос писал(а):
Ну а если на стеке требуется оставить 3 флага в 3 ветвлениях?

"Ну а если секретарша попадет под артобстрел в болото с комарами? Ей на ресепшн нужна форма зеленого берета!"


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 05, 2009 19:15 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Ну да, и в более расширяемом языке Форт конструкции управления выглядят сложнее, чем в С

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

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


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

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


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

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