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

...
Google Search
Forth-FAQ Spy Grafic

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




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

Используете ли вы lib/include/float2.f с записью чисел 12.34d ?
Опрос закончился Сб янв 12, 2008 12:43
Да, использую либу и пишу числа 12.34d 0%  0%  [ 0 ]
Да, использую либу, но пишу числа только как 12.34e 50%  50%  [ 4 ]
Нет, не использую эту либу 38%  38%  [ 3 ]
Нет, вообще не использую SP-Forth 13%  13%  [ 1 ]
Всего голосов : 8
Автор Сообщение
 Заголовок сообщения: lib/include/float2.f и 12.34d
СообщениеДобавлено: Чт дек 13, 2007 12:43 
Не в сети

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Библиотека lib/include/float2.f воспринимает вещественные числа как в формате 12.34e, так и 12.34d (эти записи эквивалентны). Данный опрос ставит целью выяснить уровень использования второй записи (и в случае нулевого результата эта возможность скорее всего будет удалена).
"Использовать X" следует понимать как "писать/запускать иногда программы использующие X" (т.е. более одного раза).

PS Если вы выбрали вариант ответа кроме первого, но тем не менее считаете что числа вида 12.34d нужны - аргументируйте пожалуйста в треде.

_________________
http://forth.org.ru/~ygrek


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

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 308
Откуда: СПб
Благодарил (а): 7 раз.
Поблагодарили: 4 раз.
В некоторых своих поделках использовал флоаты и лично мне привычней запись с "е"!


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6269
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
Еще бы e убрать из обязательных символов, а ориентироваться исключительно на точку.


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

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

плохо оно.
точка - это число двойной длинны.
есть идея веселее - в переменной BASE выдумать состояние для float ...

ну а если серьезно, то я вижу три варианта:
использовать запятую вместо точки: 1,23423 - это folat 1.23423 - это double
использовать контекст( можно в форке) то есть числа с плавающей точкой, распознаваться будут, когда словарь, работающий с float в контексте, и находится ближе словаря NUMBERS.
оставить как есть - самый простой и совместимый вариант.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


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

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

А чего его выдумывать? есть же 0, который в BASE приводит к исключениям... Его и можно задействовать

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


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

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

Ну да, кто-то хорошо пофантазировал. Чем плоха запись 1234:5678, широко применявшаяся для задания пары чисел "сегмент-смещение"?
mOleg писал(а):
использовать запятую вместо точки: 1,23423 - это folat 1.23423 - это double

Оба - comp (внутренний формат сопроцессора). Формат появляется в процессе сохранения в память, команды для этого разные.


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

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Хищник писал(а):
Еще бы e убрать из обязательных символов, а ориентироваться исключительно на точку.

Ну это могут себе позволить только форты не претендующие на ANS-совместимость.

mOleg писал(а):
использовать запятую вместо точки: 1,23423 - это folat 1.23423 - это double

А какое различие между single'ами и double'ами раз они все строем идут на флоат-стек? Экономить байты в области данных за счёт увеличения нагрузки на программера?

mOleg писал(а):
сть идея веселее - в переменной BASE выдумать состояние для float ...

Ага, замечательно весёлая идея, с точки зрения читабельности кода.

_________________
http://forth.org.ru/~ygrek


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6269
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
ygrek писал(а):
Ну это могут себе позволить только форты не претендующие на ANS-совместимость.

Это безобразие давно пора по факту приводить в норму! Хотя бы разрешать использование чисел только с точкой. Куда ни посмотришь, точки достаточно, одни ANS-еры лучше всех знают, как надо... :dmad;


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4900
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
ygrek писал(а):
mOleg писал(а):использовать запятую вместо точки: 1,23423 - это folat 1.23423 - это double

А какое различие между single'ами и double'ами раз они все строем идут на флоат-стек?

не верно. Число с точкой внутри идет на data стек, только занимает две ячейки.
В спф этот момент иногда используется в виде 0.0 но к сожалению в СПФе такие числа преобразуются с ошибкой 8( правда я у себя уже исправил.

Точка по-моему таки не очень подходит.
А вот с запятой идея по-моему хорошая

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6269
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
mOleg писал(а):
Точка по-моему таки не очень подходит.
А вот с запятой идея по-моему хорошая

Вот так - в корне неверно. Есть стандарт на запись чисел - не фортовский, а математический. И если некий язык программирования вводит свой формат, значит, он или сильно специализирован и предназначен для узкой области (математической), либо... это разновидность выпендрежа. Ну в крайнем случае дремучего невежества и отсталости авторов стандарта/транслятора, не следящих за текущими реалиями. В конце концов, есть символ-разделитель Windows (точка или запятая в зависимости от системных настроек). Это тоже вариант. В подавляющем большинстве (практически поголовно) языков признак вещественного числа - точка. 0.0 - это вариант записи сопроцессорной константы "вещественный ноль", который преобразуется в fldz.

Собственно, отношение с записи вещественного числа весьма и весьма показательно. Эта шелуха с эксклюзивным форматом слетает, как только Форт начинает интенсивно использоваться для обработки текстовых данных, сформированных другими программами... то есть вообще включается в реальные проекты. И могу уверить, что просьбы "сохраняйте мне с символом E, потому что иначе я не обработаю" ну никак не приводят в этом случае ни к повышению эффективности процесса, ни к улучшению репутации Форта как удобного инструмента.


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

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Хищник писал(а):
Собственно, отношение с записи вещественного числа весьма и весьма показательно. Эта шелуха с эксклюзивным форматом слетает, как только Форт начинает интенсивно использоваться для обработки текстовых данных, сформированных другими программами... то есть вообще включается в реальные проекты. И могу уверить, что просьбы "сохраняйте мне с символом E, потому что иначе я не обработаю" ну никак не приводят в этом случае ни к повышению эффективности процесса, ни к улучшению репутации Форта как удобного инструмента.

Чьё отношение-то? В "реальном" проекте просто напросто пишется свой преобразователь для флоатов и никаких проблем. Т.е. если вы обрабатывает сторонние данные то вряд-ли получится просто за-EVALUATE'ить весь входной файл и поэтому каждое число явно парсится - тогда какая разница что вызывать - >FLOAT или >MY-FLOAT ?
Естественно вопрос в том как разбирать float'ы по умолчанию. Но как я уже сказал выше - тут ответ простой - либо ANS и точка для двойных чисел и e для вещественных, либо не-ANS со всеми вытекающими плюшками.

_________________
http://forth.org.ru/~ygrek


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6269
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
ygrek писал(а):
Чьё отношение-то? В "реальном" проекте просто напросто пишется свой преобразователь для флоатов и никаких проблем. Т.е. если вы обрабатывает сторонние данные то вряд-ли получится просто за-EVALUATE'ить весь входной файл и поэтому каждое число явно парсится - тогда какая разница что вызывать - >FLOAT или >MY-FLOAT ?

Получится. :) Если слово попадает в NUMBER, можно вызывать после него диспетчер, который будет сам передвигать указатель и заполнять массив. Можно принимать текстовые файлы сразу в массив. Вопрос в следующем - либо мы ориентируемся на процесс с минимумом подводных камней, либо на умозрительные стандарты.


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

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Хищник писал(а):
Получится. Если слово попадает в NUMBER, можно вызывать после него диспетчер, который будет сам передвигать указатель и заполнять массив.

Как именно оно попадает в NUMBER и что это за NUMBER? Покажите код(псевдокод)?
Например. Есть файл :
Код:
1.23 4.56 7.89
2.34 5.67 8.90
...

Как вы его будете EVALUATE'ить? Как его представить в виде форт-исходника чтобы он "сам себя" прочитал? Всякие callback'и (например "после_каждого_числа" или "после_каждой_строки") делаются неочевидным образом (курочить INTERPRET ради такой простой задачи не хочется). И получается что проще/логичнее делать как-то так
Код:
S" filename" LAMBDA{ 3 0 DO PARSE-NAME >FLOAT IF СохранитьЧисло ELSE Ругаться THEN LOOP } INCLUDED-LINES-WITH


Цитата:
Можно принимать текстовые файлы сразу в массив.

Как? Как при этом будет выглядеть обработка ошибок?

Цитата:
Вопрос в следующем - либо мы ориентируемся на процесс с минимумом подводных камней, либо на умозрительные стандарты.

Ну по факту стандарт совсем не умозрительный. А такой какой он есть. Другого нет. Увы.

In a nutshell : Конечно проще определять вещественные числа по точке, но так как есть сейчас не создаёт прям-таки принципиальных трудностей при работе.

_________________
http://forth.org.ru/~ygrek


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6269
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
ygrek писал(а):
Как вы его будете EVALUATE'ить? Как его представить в виде форт-исходника чтобы он "сам себя" прочитал? Всякие callback'и (например "после_каждого_числа" или "после_каждой_строки") делаются неочевидным образом (курочить INTERPRET ради такой простой задачи не хочется).

Его не надо курочить. Ключевые слова должны быть векторизованы, чтобы можно было вносить небольшие по объему исправления. Если нет - имеем ситуацию, когда программист, желающий применить транслятор в новой области, вынужден просить авторов внести мелкие правки, которые не затрагивают движок, но корректируют поведение, как требует новое применение. А авторы еще подумают, сошлются на стандарт (Форта, а не области применения, где слыхом не слыхивали о том, что через точку пишется число двойной длины), расскажут, что Форт надо понимать... что теперь удивительного в недостаточно активном распространении?

ygrek писал(а):
Как? Как при этом будет выглядеть обработка ошибок?


Код:
CREATE ARRAY[] 1000 FLOATS ALLOT
0 VALUE POINTER

: INPUT ( F: x -- )
  POINTER FLOATS ARRAY[] + F!
  POINTER 1+ TO POINTER
;

' INPUT TO DISPATCH-NUMBER


Обработка ошибок: " 1.23456.345.EZZZ не найдено и не является числом". Опознает NUMBER.


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

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Что-то я не понимаю как это работает. А целые числа? Ещё один вектор? А двойные числа - ещё один? Что будет если флоаты идут вперемешку с целыми числами?

_________________
http://forth.org.ru/~ygrek


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

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


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

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


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

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