Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт апр 19, 2024 20:25

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 101 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения: Re: Ошибки в известных реализациях Форта и их исправление.
СообщениеДобавлено: Пт май 15, 2015 19:08 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Hishnik писал(а):
Еще вариант: у циклов DO LOOP свой собственный стек, с текущим и предельным значением счетчика и адресом начала цикла

От того какой именно стек используется ничего не меняется. Адрес начала цикла на стеке не нужен, его не надо там хранить. Адрес начала цикла нужен только исполняемому слову (LOOP) и оно может хранить его в себе. А вот адрес сразу за концом цикла на стеке нужен, поскольку в теле цикле может быть несколько LEAVE и они должны откуда-то узнать куда им уходить. А в момент компиляции LEAVE это еще неизвестно, поэтому они не могут хранить его в себе.
Hishnik писал(а):
И циклы вида 0 0 DO LOOP автоматически пропускаются
Тогда это не DO LOOP, а совсем другой цикл. Цикл FOR NEXT у которого условие завершения проверяется в начале итерации. А у цикла DO LOOP оно проверяется в конце итерации. Или ?DO LOOP у которого и там и там.

P.S. Ну поправил в посте выше стек возвратов на некий стек.
gudleifr писал(а):
Какие два-три числа?
Уточнил в посте выше.


Последний раз редактировалось Ethereal Пт май 15, 2015 19:21, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Ошибки в известных реализациях Форта и их исправление.
СообщениеДобавлено: Пт май 15, 2015 19:20 
Не в сети
Administrator
Administrator
Аватара пользователя

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

Для форт-процессора именно его и надо.
Ethereal писал(а):
А в момент компиляции LEAVE это еще неизвестно, поэтому они не могут хранить его в себе.

В момент компиляции накапливаются ссылки вперед, LOOP разрешает их.
Ethereal писал(а):
Тогда это не DO LOOP, а совсем другой цикл.

А называть его DO LOOP нельзя, потому что комитет заругает? :) У меня довольно много неудовольствия вызывает необходимость постоянно проверять предельное значение цикла, если оно вычисляется. Дело не в скорости выполнения, а в лишних телодвижениях на оформление этого дела.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Ошибки в известных реализациях Форта и их исправление.
СообщениеДобавлено: Пт май 15, 2015 19:37 
<удалено из-за того, что коллега mOleg этого не понял>


Последний раз редактировалось gudleifr Пн июн 08, 2015 21:15, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Ошибки в известных реализациях Форта и их исправление.
СообщениеДобавлено: Пт май 15, 2015 19:54 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Hishnik ц писал(а):
А называть его DO LOOP нельзя, потому что комитет заругает? :)
Да причем тут комитет ? Словечко LOOP имеет ассоциативную связь с неким типом цикла, который и в других языках тоже LOOP (петля). В ассемблере
metka:
loop metka
Тип цикла, который выполняется минимум 1 раз и у которого постусловие завершения. Знаменит тем, что это самый простой по коду цикл с фиксированным числом итераций. Так-что если иметь ввиду под ним что-то другое, то и название бы другое давать.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Ошибки в известных реализациях Форта и их исправление.
СообщениеДобавлено: Пт май 15, 2015 19:55 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Hishnik писал(а):
В момент компиляции накапливаются ссылки вперед, LOOP разрешает их.
Там мне это тоже в голову приходит. Но это не есть минимализм и не есть дух Форта. Городить огород можно любой, но предельная простота - это и есть самая ясная суть. Т.е. есть суть, а есть пена вокруг оной.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Ошибки в известных реализациях Форта и их исправление.
СообщениеДобавлено: Пт май 15, 2015 20:19 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
gudleifr писал(а):
Ethereal писал(а):
Уточнил в посте выше.
Какой-то вымученный представитель слов, которому вместо обычных переменных зачем-то понадобился кадр стека.
Забудь про обычные переменные. Выйдет нереентерабельно, а значит в принципе непригодно к многозадачности. DO LOOP, как он есть, в Форте реентерабелен. А в Фиг-Форте еще и переместим.

Можешь рассматривать кадр стека, как локальные неименованные переменные. Тогда претензии отпадут.


Последний раз редактировалось Ethereal Пт май 15, 2015 20:33, всего редактировалось 3 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Ошибки в известных реализациях Форта и их исправление.
СообщениеДобавлено: Пт май 15, 2015 20:21 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
gudleifr писал(а):
(А ведь еще остается принципиально неразрешимый вопрос о "пересечении границы" в +LOOP).
Что в нем неразрешимо ? Решений-то всего два. С зоной достижения и с точкой достижения.

Моя фраза
>Только за скобками останется вопрос - почему из одного следует другое.
была вообще-то именно об этом вопросе.
Как вопрос о DO LOOP перетекает в вопрос DO +LOOP и обратно ?
А из простого и естественного требования, чтобы
DO ... LOOP
было эквивалентно
DO ... 1 +LOOP


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Ошибки в известных реализациях Форта и их исправление.
СообщениеДобавлено: Пт май 15, 2015 20:39 
<удалено из-за того, что коллега mOleg этого не понял>


Последний раз редактировалось gudleifr Пн июн 08, 2015 21:16, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Ошибки в известных реализациях Форта и их исправление.
СообщениеДобавлено: Сб май 16, 2015 11:25 
Не в сети

Зарегистрирован: Сб май 13, 2006 23:37
Сообщения: 380
Благодарил (а): 1 раз.
Поблагодарили: 10 раз.
for next в конце проверяет.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ошибки в известных реализациях Форта и их исправление.
СообщениеДобавлено: Сб май 16, 2015 11:36 
<удалено из-за того, что коллега mOleg этого не понял>


Последний раз редактировалось gudleifr Пн июн 08, 2015 21:16, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Ошибки в известных реализациях Форта и их исправление.
СообщениеДобавлено: Сб май 16, 2015 17:05 
Не в сети
Administrator
Administrator
Аватара пользователя

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

А до какого значения будет считать эта переменная? Всегда вниз до нуля?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Ошибки в известных реализациях Форта и их исправление.
СообщениеДобавлено: Сб май 16, 2015 17:26 
<удалено из-за того, что коллега mOleg этого не понял>


Последний раз редактировалось gudleifr Пн июн 08, 2015 21:16, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Ошибки в известных реализациях Форта и их исправление.
СообщениеДобавлено: Сб май 16, 2015 19:39 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
gudleifr писал(а):
Конечно! 90% применения это закроет (с учетом рационального программирования). Добавить слов "пересчета" - не проблема. Например

Ну.. теоретически оно закрывает, но на практике чаще удобнее думать "вверх". К тому же вот аналог через BEGIN UNTIL

Код:
VARIABLE CNT
BEGIN
...
-1 CNT +! CNT @ 0= UNTIL


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Ошибки в известных реализациях Форта и их исправление.
СообщениеДобавлено: Сб май 16, 2015 19:57 
<удалено из-за того, что коллега mOleg этого не понял>


Последний раз редактировалось gudleifr Пн июн 08, 2015 21:16, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Ошибки в известных реализациях Форта и их исправление.
СообщениеДобавлено: Сб май 16, 2015 20:23 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
У меня отдельный стек для циклов, с несложными в реализации I, J, K, и даже IJ (это J*Imax + I). Сделано потому, что DO LOOP я использую очень часто. И достаточно часто направление обработки данных является критичным - например, при записи данных в файл. Вопрос тут не в том, допускать ли вообще счет вниз, а в том, что если уж программист написал счетчик вверх, у него не должно потом быть сюрпризов.


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

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


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

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


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

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