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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 133 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Чт мар 04, 2010 22:29 
Не в сети

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

С другой стороны никакая документация не заменит учебника, это, надеюсь, не нужно аргументирвать. И главное - по факту она есть? Как например, разобраться в работе ассемблера СПФ или даже просто в том, как СПФ реализован? даже файл chm обновляется крайне нечасто, кажется - вообще не обновляется. Постоянное чтение исходников (причём, как СПФ-овских так и майкрософтовских справочников) - не лучшее расходование времени


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

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 407
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 3 раз.
chess писал(а):
В вашем случае лучше задать числа в HEX без суффиксов (по умолчанию у HEX-формы не будет суффиксов). Текст будет даже
короче чем был с глобальным BASE.

Это сейчас о чем уже :roll: Если предположить что нету BASE, какие умолчания, все надо явно указывать
или как?
chess писал(а):
BASE не так страшен как излишен.

Я бы сказал не столько излишен сколько полезен.
Может напишет все таки код INTERPRET-а кто ни будь, для работы без
BASE или его тоже побоку.
А чего ломать так уж все глобально :D


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

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

я вообще не пойму из-за чего весь сыр-бор.
для совместимости оставить BASE можно, но при этом вынести ее из базовых слов ядра транслятора.
следующая часть остается обязательной:
<pre>
: >number ( ud asc # base --> ud asc # ) ... ;
</pre>
и по умолчанию система считает все числа десятичными, а префиксы оставляем для остальных типов чисел.

а следующее выносим на уровень совместимости:
<pre>
VARIABLE BASE

: >NUMBER ( ud1 asc # --> ud2 asc # ) BASE @ >number ;
</pre>

то же самое делается и с форматным преобразованием:
<pre>
: {# ( base --> ) .... ;
</pre>

а в совместимость пойдет:
<pre>
: <# ( --> ) BASE @ {# ;
</pre>
причем, имхо, стоит постараться уйти от фиксирования разрядности чисел.

_Harry писал(а):
Может напишет все таки код INTERPRET-а кто ни будь, для работы без BASE или его тоже побоку.

<pre>
\ попытаться распознать строку, как число
: ?NUMBER ( asc # --> )
0x0A >number IF S" Неверное имя или число!" SERROR THEN
LITERAL ; \ тут предполагается что разрядность чисел будет сбалансирована LITERAL-ом

\ интерпретация одного токена (идентификатора)
: EvalToken
QUEST \ xt imm flg | asc # false
IF IF EXECUTE \ immediate слова всегда исполняются
ELSE REGULAR
THEN
ELSE ?NUMBER
THEN ;

\ трансляция входного потока
: INTERPRET
BEGIN NextToken DUP WHILE
EvalToken ?STACK
REPEAT DROP DROP ;
</pre>

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6452
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
mOleg писал(а):
следующая часть остается обязательной:


: >number ( ud asc # base --> ud asc # ) ... ;


Обязательным должен быть NUMBER. Даже <# - уже неоднозначно, NUMBER вполне может быть примитивом.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 05, 2010 11:16 
Хищник писал(а):
А тут не демократия. Тут "по предъявлению". Есть программа - это аргумент. Есть мнение - оно может считаться, а может и не считаться аргументом. Поскольку одну точку зрения высказали сплошь практикующие программисты, а другую - сплошь те, кто заявляет, что Форт у них хобби, что надо думать? Я вот и подумал, что исключение BASE - забавная игра ума, плохо применимая к реальности.

Я из «непрактикующих», поэтому, извиняюсь за, возможно, не аргументированное вмешательство в тему. Рассматривая стандарт, как последовательность «непротиворечивой» раскрутки Форт-системы с нуля можно разделить проблему на два вопроса. На какой стадии раскрутки подключать BASE? Делать BASE глобальной или локальной? По-второму вопросу, как мне кажется, надо предусмотреть оба варианта. Так делают в большинстве(навскидку) языков. А по-первому вопросу ясности нету.

Учитывая, что исполняемый com-файл можно создать без компилятора, а в нем используется 16-тиричная система, значит она должна быть дефолтовой? Про МК тоже ясности нету. Где-то, возможно, набивают «010011011».


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

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 407
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 3 раз.
Цитата:
_Harry писал(а):
Может напишет все таки код INTERPRET-а кто ни будь, для работы без BASE или его тоже побоку.



\ попытаться распознать строку, как число

Код:
: ?NUMBER ( asc # --> )

          0x0A >number IF S" Неверное имя или число!" SERROR THEN

                   LITERAL ;  \ тут предполагается что разрядность чисел будет сбалансирована LITERAL-ом



\ интерпретация одного токена (идентификатора)

: EvalToken

            QUEST  \ xt imm flg | asc # false

            IF IF EXECUTE  \ immediate слова всегда исполняются

                ELSE REGULAR

               THEN

             ELSE ?NUMBER

            THEN ;



\ трансляция входного потока

: INTERPRET

            BEGIN NextToken DUP WHILE

                  EvalToken ?STACK

            REPEAT DROP DROP ;


Ну и что мы имеем, если у меня файл ( полученый из вне с числами в хекс формате ).
Я должен либо дописать к ним префиксы, либо как то по изворачиваться,
но просто транслировать его уже не получится.
Мне не нравится :dmad; ( как говорил слоненок " ...Извините" )
Неудобно так работать!


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6452
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
idem писал(а):
Я из «непрактикующих», поэтому, извиняюсь за, возможно, не аргументированное вмешательство в тему. Рассматривая стандарт, как последовательность «непротиворечивой» раскрутки Форт-системы с нуля можно разделить проблему на два вопроса. На какой стадии раскрутки подключать BASE? Делать BASE глобальной или локальной? По-второму вопросу, как мне кажется, надо предусмотреть оба варианта. Так делают в большинстве(навскидку) языков. А по-первому вопросу ясности нету.

Насчет "большинства языков" я несколько не понял. В каждом языке существуют требования к представлению чисел, которые в целом тяготеют к общепринятым математическим стандартам. Система счисления по умолчанию десятичная, остальные системы определяются форматными спецификаторами. Почему в Форте BASE? Потому что это напрашивается при рассмотрении алгоритма преобразования строки в число.
123 ->
1 ->
2 -> 1*10+2 = 12
3 -> 12*10 + 3 = 123
Нетрудно заметить, что вместо 10 можно поставить любое основание системы счисления, и будет прекрасно работать. Заменяем константу на переменную, и все дела. Глобальная или локальная она будет - вопрос к программисту. Другое дело, что на момент начала преобразования числа она должна быть известна и определена. А также быть доступной к изменению.
idem писал(а):
Учитывая, что исполняемый com-файл можно создать без компилятора, а в нем используется 16-тиричная система, значит она должна быть дефолтовой? Про МК тоже ясности нету. Где-то, возможно, набивают «010011011».

Нет, в файлах никакие системы не используются. Десятичная, шестнадцатиричная, двоичная и прочие системы счисления имеют какое-то значение лишь при вводе и отображении чисел. Компьютер физически работает только в двоичной системе, причем это не символы 0 и 1 (с кодами 48 и 49 соответственно), а уровни напряжения. Просто байт удобно представлять двумя шестнадцатиричными символами, поэтому при работе на низком уровне, а также с электроникой эта система счисления удобна и показательна. Отсюда и пожелание иметь возможность использовать ее в качестве "временной системы по умолчанию", чтобы не писать ни 0x, ни h, ни $ или еще какой-то символ.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 05, 2010 13:19 
Хищник писал(а):
Насчет "большинства языков" я несколько не понял…
Да уж… извиняюсь за свои неслишком корректные утверждения. Не буду создавать оффтопик из объяснений. Однако, исходя из того, что мне кажется возможным реализовать Форт-систему с нуля, не выделяя при этом ФВМ, замечу, что необходимость с самого начала использования BASE под большим сомнением. Обсуждение идет сугубо о языке с достаточно устоявшимся(стандартным) синтаксисом, поэтому, при попытках применить восходящий стиль разработки надо перепрыгивать через некоторые пробелы, что не будет упрощением. Думаю, что решением может быть создание минимального Форт-транслятора. Тогда многие вопросы отпадут сами, в том числе и данной темы.


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6452
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
idem писал(а):
Однако, исходя из того, что мне кажется возможным реализовать Форт-систему с нуля, не выделяя при этом ФВМ, замечу, что необходимость с самого начала использования BASE под большим сомнением. Обсуждение идет сугубо о языке с достаточно устоявшимся(стандартным) синтаксисом,

Именно из-за устоявшегося синтаксиса и простоты решения с BASE оно уже "въелось".
idem писал(а):
Думаю, что решением может быть создание минимального Форт-транслятора. Тогда многие вопросы отпадут сами, в том числе и данной темы.

Вот это точно. Тогда и не будет раздутых обсуждений второстепенных проблем.


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

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

такого слова нет, есть >NUMBER либо устаревший (согласно ANSI X3.215-1994) CONVERT .

Хищник писал(а):
Даже <# - уже неоднозначно

не понял, поясни пожалуйста

Хищник писал(а):
NUMBER вполне может быть примитивом

может, но не слишком удобно, лучше делать примитивом слово в явном виде (а не косвенно, как сейчас) получающее систему счисления.

idem писал(а):
Рассматривая стандарт, как последовательность «непротиворечивой» раскрутки Форт-системы с нуля можно разделить проблему на два вопроса. На какой стадии раскрутки подключать BASE?

вобщем, о том и речь. BASE не мешает в большой системе, хотя, к сожалению BASE плохо совмещается с CATCH THROW механизмом.

idem писал(а):
Делать BASE глобальной или локальной?

привычнее глобальная ;) из-за этого и ломаются копья, стулья и прочая

_Harry писал(а):
Ну и что мы имеем, если у меня файл ( полученый из вне с числами в хекс формате ).
Я должен либо дописать к ним префиксы, либо как то по изворачиваться,
но просто транслировать его уже не получится.

ох, ну сказал же, зависит от конкретного ээ использования этих чисел. То есть, что с ними вы дальше собираетесь делать и определяет как лучше поступить. Кстати, префиксы не самый интересный вариант! Можно писать и так d: 123456 h: E3D8 и т.д. Кстати, вариант интересен тем, что для его реализации не нужны ни BASE ни NUMBER внутри транслятора, а сами d: h: и им подобные могут быть определены уже в работающем Форте.
т.е. интерпретатор станет еще проще:
<pre>
: EvalToken
QUEST \ xt imm flg | asc # false
IF IF EXECUTE \ immediate слова всегда исполняются
ELSE REGULAR
THEN
ELSE ERROR" Лексема не опознана!"
THEN ;
</pre>

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


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

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

я для интереса посмотрел в начало обсуждения, чтобы увидеть, кто же раздул вопрос о BASE до невероятных размеров ;)

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6452
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
mOleg писал(а):
Хищник писал(а):
Обязательным должен быть NUMBER.

такого слова нет, есть >NUMBER либо устаревший (согласно ANSI X3.215-1994) CONVERT .

А куда ж оно делось-то? :)
mOleg писал(а):
Хищник писал(а):
Даже <# - уже неоднозначно

не понял, поясни пожалуйста

А вот этого как раз нет, потому что печать тоже может быть примитивом, а при реализации на ЯВУ - так и функцией этого ЯВУ. Какие <# # #> ?
mOleg писал(а):
может, но не слишком удобно, лучше делать примитивом слово в явном виде (а не косвенно, как сейчас) получающее систему счисления.

mOleg писал(а):
вобщем, о том и речь. BASE не мешает в большой системе, хотя, к сожалению BASE плохо совмещается с CATCH THROW механизмом.

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

mOleg писал(а):
ох, ну сказал же, зависит от конкретного ээ использования этих чисел. То есть, что с ними вы дальше собираетесь делать и определяет как лучше поступить. Кстати, префиксы не самый интересный вариант! Можно писать и так d: 123456 h: E3D8 и т.д. Кстати, вариант интересен тем, что для его реализации не нужны ни BASE ни NUMBER внутри транслятора, а сами d: h: и им подобные могут быть определены уже в работающем Форте.
т.е. интерпретатор станет еще проще:

Вот человек же написал черным по белому "полученный извне". Какие префиксы? Какое вообще редактирование этого файла? И не в первый раз уже написано. Но нет, если реальные задачи противоречат красивой теории, тем хуже для реальных задач!... :))
mOleg писал(а):
я для интереса посмотрел в начало обсуждения, чтобы увидеть, кто же раздул вопрос о BASE до невероятных размеров

Да я, я! Кто ж тут еще штатный виноватый в неудачах блестящих проектов? ;)


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

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 407
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 3 раз.
Хищник писал(а):
полученный извне". Какие префиксы? Какое вообще редактирование этого файла?

Да ... трудно бывает достучаться :roll:
Представте себе в этом файле имеется 200 чисел которым надо явно указать систему счисления.
И все это вместо
Код:
HEX ......
.......................
...........................\ много всяких чисел ;)
............. DECIMAL


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

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

да нет, твой довод понят, только предлагаемая тобой ситуация не полна.

_Harry писал(а):
Представте себе в этом файле имеется 200 чисел которым надо явно указать систему счисления.

вопрос в том, что дальше ты с этими числами будешь делать?
просто положить на стек их не везде получится (стек может позволять 10 чисел хранить).
То есть сразу возникает вопрос что ты будешь с этими числами делать, и он определяет как их распознавать.

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


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

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


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

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


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

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


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

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