Автор |
Сообщение |
|
|
Заголовок сообщения: |
|
|
|
Ну да, и в более расширяемом языке Форт конструкции управления выглядят сложнее, чем в С
Ну да, и в более расширяемом языке Форт конструкции управления выглядят сложнее, чем в С
|
|
|
|
Добавлено: Чт фев 05, 2009 19:15 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
вопрос писал(а): А кто-то против DUP ? DUP IF оставит флаг на стеке и перейдет. вопрос писал(а): Ну а если на стеке требуется оставить 3 флага в 3 ветвлениях?
"Ну а если секретарша попадет под артобстрел в болото с комарами? Ей на ресепшн нужна форма зеленого берета!"
[quote="вопрос"]А кто-то против DUP ? [/quote] DUP IF оставит флаг на стеке и перейдет. [quote="вопрос"]Ну а если на стеке требуется оставить 3 флага в 3 ветвлениях?[/quote]
"Ну а если секретарша попадет под артобстрел в болото с комарами? Ей на ресепшн нужна форма зеленого берета!"
|
|
|
|
Добавлено: Чт фев 05, 2009 18:39 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Общепринятая, мне кажется практика форта, когда любое слово НЕ оставляет на стеке данных свои входные параметры. Ее преимущества очевидны, когда слово явсно возвращает результаты. Ну а когда не возвращает выходы - входы, для единообразия, все равно следовало бы убирать.
Общепринятая, мне кажется практика форта, когда любое слово НЕ оставляет на стеке данных свои входные параметры. Ее преимущества очевидны, когда слово явсно возвращает результаты. Ну а когда не возвращает выходы - входы, для единообразия, все равно следовало бы убирать.
|
|
|
|
Добавлено: Чт фев 05, 2009 13:38 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Хищник писал(а): вопрос писал(а): наилучший вариант - автоматически запихивать использованные флаги на отдельный стек для возможного повторного использования - код остаётся линейным при любом количестве ветвлений Наихудший, надо полагать, использовать DUP, если флаг требуется оставить на стеке?
А кто-то против DUP ?
Ну а если на стеке требуется оставить 3 флага в 3 ветвлениях?
[quote="Хищник"][quote="вопрос"]наилучший вариант - автоматически запихивать использованные флаги на отдельный стек для возможного повторного использования - код остаётся линейным при любом количестве ветвлений[/quote] Наихудший, надо полагать, использовать DUP, если флаг требуется оставить на стеке?[/quote]
А кто-то против DUP ?
Ну а если на стеке :D :dmad; требуется оставить 3 флага в 3 ветвлениях?
|
|
|
|
Добавлено: Чт фев 05, 2009 10:04 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
вопрос писал(а): наилучший вариант - автоматически запихивать использованные флаги на отдельный стек для возможного повторного использования - код остаётся линейным при любом количестве ветвлений
Наихудший, надо полагать, использовать DUP, если флаг требуется оставить на стеке?
[quote="вопрос"]наилучший вариант - автоматически запихивать использованные флаги на отдельный стек для возможного повторного использования - код остаётся линейным при любом количестве ветвлений[/quote]
Наихудший, надо полагать, использовать DUP, если флаг требуется оставить на стеке?
|
|
|
|
Добавлено: Чт фев 05, 2009 09:47 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Иногда флаг "дальше лишний", иногда нет
наилучший вариант - автоматически запихивать использованные флаги на отдельный стек для возможного повторного использования - код остаётся линейным при любом количестве ветвлений
Иногда флаг "дальше лишний", иногда нет
наилучший вариант - автоматически запихивать использованные флаги на отдельный стек для возможного повторного использования - код остаётся линейным при любом количестве ветвлений
|
|
|
|
Добавлено: Чт фев 05, 2009 08:09 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Декларация свободы программиста находится в самом начале стандарта (в моем предложении, во всяком случае).
Добавлять после этого, что и IF программист волен по-своему сделать, как-то неправильно.
Да, возможны непоглощающие, а возможны и поглощающие дважды, и ...(тут придумать что угодно)...
Если же вписывать в стандарт все, что возможно, он распухнет и лопнет.
Декларация свободы программиста находится в самом начале стандарта (в моем предложении, во всяком случае).
Добавлять после этого, что и IF программист волен по-своему сделать, как-то неправильно.
Да, возможны непоглощающие, а возможны и поглощающие дважды, и ...[size=75](тут придумать что угодно)[/size]...
Если же вписывать в стандарт все, что возможно, он распухнет и лопнет.
|
|
|
|
Добавлено: Чт фев 05, 2009 06:53 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
WingLion писал(а): По моему, давать однозначные ответы на эти вопросы - бессмысленно. Ответы - дело вкусов и предпочтений разработчиков.
Значит, надо записать что-то похожее на "стековые картины условных конструкций определяются реализацией, возможны непоглощающие условные конструкции".
[quote="WingLion"]По моему, давать однозначные ответы на эти вопросы - бессмысленно. Ответы - дело вкусов и предпочтений разработчиков.[/quote]
Значит, надо записать что-то похожее на "стековые картины условных конструкций определяются реализацией, возможны непоглощающие условные конструкции".
|
|
|
|
Добавлено: Чт фев 05, 2009 04:19 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
in4 писал(а): И еще такой вопрос - логику лучше представлять флагами проца или значениями на стеке? Условия должны быть поглощающими или нет?
По моему, давать однозначные ответы на эти вопросы - бессмысленно. Ответы - дело вкусов и предпочтений разработчиков.
Понравится ему после каждого IF-а флаги руками подтирать, сделает так. Не понравится - этак.
Кому надо заставлять в стандарте всех ходить строем и с песней?
[quote="in4"]И еще такой вопрос - логику лучше представлять флагами проца или значениями на стеке? Условия должны быть поглощающими или нет? [/quote]
По моему, давать однозначные ответы на эти вопросы - бессмысленно. Ответы - дело вкусов и предпочтений разработчиков.
Понравится ему после каждого IF-а флаги руками подтирать, сделает так. Не понравится - этак.
Кому надо заставлять в стандарте всех ходить строем и с песней?
|
|
|
|
Добавлено: Вт фев 03, 2009 20:13 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
вопрос писал(а): вместо LOOP - +LOOP и : LOOP 1 +LOOP ; WingLion писал(а): Подчеркиваю - это набор слов, с помощью которых можно выражать другие слова, безотносительно к их реализации. Это не предложение для команд в процессор или виртуальную машину, а предложение удобных слов, которыми будут описываться остальные слова. Реализация их будет потом, когда добремся до описания этих слов средствами Форта. Вот тогда и можно будет думать о минимуме, да и то не факт, что он (минимум) потребуется. Для многократного повторения чего-либо удобнее простой LOOP, нежели +LOOP в котором надо еще думать и о единичке перед +LOOP. Цитата: Я так понял, что "тянем" для начала все-таки архитектуру фон Неймана(код программы не отделен от данных).
Нет никакого "тянем". Потому что это всего лишь описание. А на чем оно сделано, на Неймане или Гарварде - не имеет значения.
[quote="вопрос"]вместо LOOP - +LOOP и : LOOP 1 +LOOP ;[/quote]
[quote="WingLion"]Подчеркиваю - это набор слов, с помощью которых можно выражать другие слова, безотносительно к их реализации.[/quote]
Это [color=red]не предложение для команд в процессор или виртуальную машину[/color], а предложение [b]удобных[/b] [color=red]слов, которыми будут [b]описываться[/b] остальные слова[/color]. Реализация их будет потом, когда добремся до описания этих слов средствами Форта. Вот тогда и можно будет думать о минимуме, да и то не факт, что он (минимум) потребуется.
Для многократного повторения чего-либо удобнее простой LOOP, нежели +LOOP в котором надо еще думать и о единичке перед +LOOP.
[quote]Я так понял, что "тянем" для начала все-таки архитектуру фон Неймана(код программы не отделен от данных).[/quote]
Нет никакого "тянем". Потому что это всего лишь описание. А на чем оно сделано, на Неймане или Гарварде - не имеет значения.
|
|
|
|
Добавлено: Вт фев 03, 2009 20:09 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
вопрос писал(а): DO - LOOP не обязательно в базовый набор. Вот FOR - NEXT - лучше взять за базовый, да и проще реализовывать... А для организации циклов есть еще вариант - рекурсия! Так ни то ни другое не должно быть в базовом наборе. in4 писал(а): И еще такой вопрос - логику лучше представлять флагами проца или значениями на стеке? Условия должны быть поглощающими или нет? Непоглощающие условия позволяют проще делать последовательные проверки...
Логика здесь ни при чем. Если вы насчет ветвлений можно сделать и так и так, но опять-таки к
базовому набору это не имеет отношения.
[quote="вопрос"]DO - LOOP не обязательно в базовый набор. Вот FOR - NEXT - лучше взять за базовый, да и проще реализовывать... А для организации циклов есть еще вариант - рекурсия! [/quote] Так ни то ни другое не должно быть в базовом наборе.
[quote="in4"]И еще такой вопрос - логику лучше представлять флагами проца или значениями на стеке? Условия должны быть поглощающими или нет? Непоглощающие условия позволяют проще делать последовательные проверки...[/quote]
Логика здесь ни при чем. Если вы насчет ветвлений можно сделать и так и так, но опять-таки к
базовому набору это не имеет отношения.
|
|
|
|
Добавлено: Вт фев 03, 2009 13:22 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
WingLion писал(а): Предлагаю следующий "сокращенный" набор для согласования:
определяющие: : ; - для стандартного фортового определения
CREATE DOES> для определения "определяющих" слов.
управляющие:
EXECUTE EXIT - безусловное изменение хода исполнения
IF ELSE THEN - условное исполнение
DO LOOP I J K QUIT - цикл со счетчиком
BEGIN UNTIL - цикл с постусловием
BEGIN WHILE REPEAT - цикл с предусловием
Я так понял, что "тянем" для начала все-таки архитектуру фон Неймана(код программы не отделен от данных).
[quote="WingLion"]Предлагаю следующий "сокращенный" набор для согласования:
определяющие: : ; - для стандартного фортового определения
CREATE DOES> для определения "определяющих" слов.
управляющие:
EXECUTE EXIT - безусловное изменение хода исполнения
IF ELSE THEN - условное исполнение
DO LOOP I J K QUIT - цикл со счетчиком
BEGIN UNTIL - цикл с постусловием
BEGIN WHILE REPEAT - цикл с предусловием[/quote]
Я так понял, что "тянем" для начала все-таки архитектуру фон Неймана(код программы не отделен от данных).
|
|
|
|
Добавлено: Вт фев 03, 2009 13:07 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
DO - LOOP не обязательно в базовый набор.
Вот FOR - NEXT - лучше взять за базовый, да и проще реализовывать...
А для организации циклов есть еще вариант - рекурсия!
И еще такой вопрос - логику лучше представлять флагами проца или значениями на стеке?
Условия должны быть поглощающими или нет?
Непоглощающие условия позволяют проще делать последовательные проверки...
[b]DO[/b] - [b]LOOP[/b] не обязательно в базовый набор.
Вот [b]FOR[/b] - [b]NEXT[/b] - лучше взять за базовый, да и проще реализовывать... ;)
А для организации циклов есть еще вариант - рекурсия! ;)
И еще такой вопрос - логику лучше представлять флагами проца или значениями на стеке?
Условия должны быть поглощающими или нет?
Непоглощающие условия позволяют проще делать последовательные проверки...
|
|
|
|
Добавлено: Вт фев 03, 2009 12:20 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
вместо LOOP - +LOOP
и : LOOP 1 +LOOP ;
вместо LOOP - +LOOP
и : LOOP 1 +LOOP ;
|
|
|
|
Добавлено: Вт фев 03, 2009 09:55 |
|
|
|
|
|
Заголовок сообщения: |
[RuF09] Набор управляющих и определяющих слов. Обсуждение. |
|
|
Для того, чтобы однозначно "определять" (или, скорее, выражать/объяснять) новые слова через минимальный набор Для ФП и ФВМ
Подчеркиваю - это набор слов, с помощью которых можно выражать другие слова, безотносительно к их реализации. Ясно, что управляющие в конечном итоге через ?BRANCH выразятся, но неудобно каждый раз писать это выражение, когда можно написать 10 0 DO сделать-что-то LOOP и сразу ясно, что это 10-кратное повторение чего-то.
Предлагаю следующий "сокращенный" набор для согласования:
определяющие:
: ; - для стандартного фортового определения
CREATE DOES> для определения "определяющих" слов.
управляющие:
EXECUTE EXIT - безусловное изменение хода исполнения
IF ELSE THEN - условное исполнение
DO LOOP I J K QUIT - цикл со счетчиком
BEGIN UNTIL - цикл с постусловием
BEGIN WHILE REPEAT - цикл с предусловием
Для того, чтобы однозначно "определять" (или, скорее, выражать/объяснять) новые слова через [url=http://fforum.winglion.ru/viewtopic.php?t=1919]минимальный набор Для ФП и ФВМ[/url]
[u]Подчеркиваю[/u] - это набор слов, с помощью которых можно [u]выражать другие слова[/u], безотносительно к их реализации. Ясно, что управляющие в конечном итоге через ?BRANCH выразятся, но неудобно каждый раз писать это выражение, когда можно написать [b]10 0 DO сделать-что-то LOOP[/b] и сразу ясно, что это 10-кратное повторение чего-то.
Предлагаю следующий [b]"сокращенный" набор[/b] для согласования:
определяющие:
[b]: ;[/b] - для стандартного фортового определения
[b]CREATE DOES>[/b] для определения "определяющих" слов.
управляющие:
[b]EXECUTE EXIT[/b] - безусловное изменение хода исполнения
[b]IF ELSE THEN[/b] - условное исполнение
[b]DO LOOP I J K QUIT[/b] - цикл со счетчиком
[b]BEGIN UNTIL[/b] - цикл с постусловием
[b]BEGIN WHILE REPEAT[/b] - цикл с предусловием
|
|
|
|
Добавлено: Вт фев 03, 2009 09:19 |
|
|
|
|