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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 133 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 9  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 01, 2010 15:13 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
mOleg писал(а):
только для этого самого слова должен быть определен интерфейс, т.е. что на входе и что на выходе, а варианты есть:
1) стандартный ( ud asc # --> ud1 asc # )
2) упрощенный ( asc # --> u )
3) без использования переменной BASE ( asc # base --> u )
так же возможны вариации с тем, будет ли слово ловить ошибки или нет.

В случае передачи основания в самой строке вариант только один:
( asc # -- n | d )

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


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Хищник писал(а):
mOleg писал(а):
: DIGIT ( char base --> u TRUE | FALSE )

Ну а тут что в стековой нотации? От того, что значение BASE отдано какому-то внешнему коду, необходимость ее хранения не пропадает. А значит, основание системы счисления все равно будет где-то храниться. И кто отгадает, какое имя скорее всего будет присвоено этой переменной?


Вам надо знать какое число(цифру) дает единственный символ. Вопрос, а по какому основанию? Отвечая на этот вопрос программист сам задает этот параметр.

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


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Хищник писал(а):
Ну а тут что в стековой нотации? От того, что значение BASE отдано какому-то внешнему коду, необходимость ее хранения не пропадает.

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

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


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

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
Код:
$CURRENT-GLOBAL-UNSAFE-NUMBER-CONVERSION-BASE

и чтоб еще предупреждение при использовании вылезало :D


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

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

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


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

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

И таки шо из этого должно вытекать? :) Типа того, что раз понимаю, то и необходимость локального параметра мне должна быть очевидна? А мне вот совсем не очевидна, а BASE ну нисколечко не мешает. Спрашивается, зачем ломать работающую (и несложную) конструкцию?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 01, 2010 17:25 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
BASE опасна тем, что кто-то может ее незаметно поменять, а потом не переустановит обратно. Только и всего.
А писать обработчики CATCH не все хотят, это и не слишком удобно в форте.
Для сравнения, в коммон-лиспе, если переустановить базу
Код:
(let ((*print-base* 16)) трали-вали)

то она вернется в исходное значение даже при бросании исключения из трали-вали.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 01, 2010 17:32 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Хищник писал(а):
А откуда он его берет? Каждый раз придумывает? Нет, он, скорее всего, заведет специальную переменную, чтобы хранить текущую систему счисления. Пришли туда, откуда начали.

Да не надо его брать. Пример чисто гипотетический, ни разу никому не понадобится.
Уход от глобальной BASE позволит забыть о том, что она есть, а следовательно забыть, что основание надо сохранять, если временно хотим поработать с другим основанием.

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


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

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

Этим опасна любая переменная.
dynamic-wind писал(а):
А писать обработчики CATCH не все хотят, это и не слишком удобно в форте.
Для сравнения, в коммон-лиспе, если переустановить базу

ABORT сделает то же самое.

chess писал(а):
Уход от глобальной BASE позволит забыть о том, что она есть, а следовательно забыть, что основание надо сохранять, если временно хотим поработать с другим основанием.

А это как же мы поработаем с другим основанием, если его надо будет где-то поменять? :shock: Неужели так трудно представить себе практические примеры кода с заменой BASE и проверить, во что выливаются изменения? Будет-то ровным счетом то же самое, только проблемы с сохранением BASE превратятся в проблемы с сохранением всего того вороха переменных, откуда основание системы счисления может придти на стек.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 01, 2010 18:24 
Не в сети
Moderator
Moderator
Аватара пользователя

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

ничего не нужно менять.
достаточно просто принять, что числа без префиксов = это числа в десятичной системе счисления,
числа с 0x в начале - это числа в шестнадцатиричной, и т.д.
Сохранять на стеке хранящиеся параметры не нужно.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 01, 2010 18:26 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Хищник писал(а):
dynamic-wind писал(а):BASE опасна тем, что кто-то может ее незаметно поменять, а потом не переустановит обратно. Только и всего.

Этим опасна любая переменная.

именно поэтому от глобальных переменных во всех языках программирования стараются избавляться, более того, есть языки, которые вообще таких переменных не имеют.

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


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

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

1) coe
Код:
MEMORY_INITIALIZATION_RADIX=16;
MEMORY_INITIALIZATION_VECTOR=
0,
123,
FFAC, <-- !!!

2) VHDL
Код:
while NOT( endfile(INFILE)) loop   -- end file checking
  readline(INFILE,IN_LINE);      -- read line of a file
  hread(IN_LINE,A_TEMP);      -- each READ procedure extracts data in HEX  <-- !!!
  AdcArray(I) <= TO_STDLOGICVECTOR (A_TEMP);
  I := I + 1;
end loop;

Это навскидку. А так конечно, можно напринимать "стандартов" и считать, что весь мир шагает не в ногу... :)
mOleg писал(а):
именно поэтому от глобальных переменных во всех языках программирования стараются избавляться, более того, есть языки, которые вообще таких переменных не имеют.

Именно поэтому Форт и использует стек для временного сохранения значений глобальных переменных.


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

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


Форт вообще опасен тем, что кто-то может писануть мимо тазика и затереть что-то нужное...

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


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Хищник писал(а):
А это как же мы поработаем с другим основанием, если его надо будет где-то поменять? Неужели так трудно представить себе практические примеры кода с заменой BASE и проверить, во что выливаются изменения? Будет-то ровным счетом то же самое, только проблемы с сохранением BASE превратятся в проблемы с сохранением всего того вороха переменных, откуда основание системы счисления может придти на стек.


В качестве иллюстрации простоты преобразования строк в числа без BASE.
Код:
: NOTFOUND { a u \ base }
a u + 1- C@ CASE
[CHAR] d OF 10 TO base  ENDOF
[CHAR] h OF 16 TO base  ENDOF
[CHAR] b OF  2 TO base  ENDOF
ENDCASE
0 a u + 1- a DO base * I C@ DUP 64 > IF 55 - ELSE 48 - THEN + LOOP ;

123d 4D7h 1011110b

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


Последний раз редактировалось chess Вт мар 02, 2010 14:40, всего редактировалось 1 раз.

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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
chess писал(а):
В качестве иллюстрации простоты преобразования строк в числа без BASE.
: NOTFOUND { a u \ base }

Ага, до того просто, что без локальных переменных оно не работает. :?

chess писал(а):
123d 4D7h 1011110b

Теперь сравниваем это с форматным спецификатором в Си или с приведенными мной выше примерами, когда hex воспринимается даже без h или 0x в записи числа.


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

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


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

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


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

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