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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 105 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 7  След.
Автор Сообщение
 Заголовок сообщения: Re: Quark: Пример кода - LOOP
СообщениеДобавлено: Ср янв 26, 2011 09:53 
Не в сети
Аватара пользователя

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

Это я знаю. Но форт понимаю несколько шире. Без стеков принципы организации форт-системы принципиально не изменятся.
Поэтому стеки не считаю определяющим фактором. На платформе, в которой нельзя организовать стеки такая система может быть
реализована, а в вашем случае - нет.
ArtemKAD писал(а):
Слова разделенные пробелом подразумевают безадресную передачу параметров.

Сами по себе слова разделенные пробелом ничего не значат.
Процедуры могут обмениваться параметрами, используя свое пространство данных в соответствии с принятыми соглашениями, взаимодействие может быть при этом организовано как угодно, в том числе через свои стеки. Глобальных стеков при этом не будет.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark: Пример кода - LOOP
СообщениеДобавлено: Ср янв 26, 2011 10:10 
Не в сети
Moderator
Moderator
Аватара пользователя

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

Боюсь, здесь необходимо приводить примеры, как это может быть реализовано.

chess писал(а):
Поэтому стеки не считаю определяющим фактором. На платформе, в которой нельзя организовать стеки такая система может быть
реализована, а в вашем случае - нет.

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

chess писал(а):
Процедуры могут обмениваться параметрами, используя свое пространство данных в соответствии с принятыми соглашениями, взаимодействие может быть при этом организовано как угодно, в том числе через свои стеки. Глобальных стеков при этом не будет.

вобщем, пример нужен, без него это все достаточно голословно.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark: Пример кода - LOOP
СообщениеДобавлено: Ср янв 26, 2011 12:03 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
mOleg писал(а):
одно следует из другого, упрощение тут почти не причем.


Для чего еще нужна польская запись, кроме как для упрощения форт-системы?

chess писал(а):
Без стеков принципы организации форт-системы принципиально не изменятся.
Поэтому стеки не считаю определяющим фактором.


Даже если без стеков не обойтись. Определяющим является назначение Форта.
Т.е. то ради чего его используют. Я его использую из-за простоты устройства
и доступу ко всем его ресурсам с возможностью неограниченного расширения
как в рантайме так и с пересборкой.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark: Пример кода - LOOP
СообщениеДобавлено: Ср янв 26, 2011 13:37 
Не в сети
Аватара пользователя

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

Бояться не надо.
В качестве примера можно привести микропроцессор Катана - реализацию виртуальной смолток-машины.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark: Пример кода - LOOP
СообщениеДобавлено: Ср янв 26, 2011 13:56 
Не в сети
Аватара пользователя

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

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark: Пример кода - LOOP
СообщениеДобавлено: Ср янв 26, 2011 15:11 
Не в сети
Administrator
Administrator
Аватара пользователя

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

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

Например, можно работать с глобальными переменными. Скажем,
2 ->A
3 ->B
A+B ->C

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

С другой стороны, термин Форт можно рассматривать широко и с позиций нечеткой логики. Важно ли использовать регулярную грамматику с разделением токенов пробелом? Весьма вероятно, да. Важно ли использовать стек и словарь? Тоже весьма вероятно. Важно ли реализовать семантику базовых определений. Вероятно, да, но тут уже тонкости - скажем, где-то может быть -ROT, а где-то выброшен за ненадобностью. А важно ли записывать по смещению +8 в заголовке словарной статьи указатель на обработчик ошибки "стек пуст"? Это с очень высокой вероятностью НЕ является определяющим признаком Форта. Исходя из этого я бы не выбрасывал стек и словарь из определения "язык программирования Форт".


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark: Пример кода - LOOP
СообщениеДобавлено: Ср янв 26, 2011 16:27 
chess писал(а):
ArtemKAD писал(а):
Слова разделенные пробелом подразумевают безадресную передачу параметров.

Сами по себе слова разделенные пробелом ничего не значат.
Процедуры могут обмениваться параметрами, используя свое пространство данных в соответствии с принятыми соглашениями, взаимодействие может быть при этом организовано как угодно, в том числе через свои стеки. Глобальных стеков при этом не будет.

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


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark: Пример кода - LOOP
СообщениеДобавлено: Ср янв 26, 2011 18:51 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
chess писал(а):
В качестве примера можно привести микропроцессор Катана - реализацию виртуальной смолток-машины.

Можно поподробнее? Гугль о таком не знает.
И йа бы не стал выкидывать стек (явный или неявный) ни из какого языка.
Потому, что полезным такой язык не будет.


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

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

Интересно, расскажите пожалуйста в кратце, раз уж вы знакомы 8)

И к сказанному выше всеми, все-таки есть некая обобщенная модель Форт-машины, у которой стеки являются неотъемлемыми, и на основе этой ФМ есть языковая среда. При этом поверх ФМ можно "наятнуть" тот же Си к примеру, но это таки будет Си. Вобщем я не вижу смысла во флейме, про смолтолк и катану интересно 8)

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark: Пример кода - LOOP
СообщениеДобавлено: Чт янв 27, 2011 06:59 
Не в сети

Зарегистрирован: Ср июл 05, 2006 14:44
Сообщения: 236
Благодарил (а): 0 раз.
Поблагодарили: 7 раз.
давным-давно немного о катане читал в бумажной книге Языки программирования и схемотехника СБИС Авторы: Фути К., Судзуки Н
оказывается ее можно почитать в он-лайне тут


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark: Пример кода - LOOP
СообщениеДобавлено: Чт янв 27, 2011 19:12 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
Alex писал(а):
давным-давно немного о катане читал в бумажной книге Языки программирования и схемотехника СБИС Авторы: Фути К., Судзуки Н
оказывается ее можно почитать в он-лайне тут

Скачал по торренту отсюда http://infanata.ifolder.ru/13612753.
В Катане есть стек. Язык без стека--это фортран :twisted:


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: опять об идеалогии и внутреннем устройстве Форта
СообщениеДобавлено: Чт янв 27, 2011 23:36 
Не в сети
Moderator
Moderator
Аватара пользователя

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

не понятно, может все-таки набросаете хотя бы приблизительно, как это будет выглядеть? Это действительно интересно.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark: Пример кода - LOOP
СообщениеДобавлено: Пт янв 28, 2011 13:32 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
chess писал(а):
Доступ к собственным ресурсам тоже вносит свой вклад в возможность
неограниченного расширения. Отсюда также следует возможность самомодификации(причем обратимой).
Вот этот набор свойств и определяет форт.

А вот коварное рассуждение:
Допустим, слово NUMBER не векторизовано.
Как его самомодифицировать с целью расширения, причем так, чтобы существующий INTERPRET получил возможость чтения новых видов чисел?
Только отыскав его в словаре и пропатчив, каковая возможность системно-зависима и не везде доступна.
Итак, самомодификация форта в этом случаях потребует переопределения части системы (которая зависит от NUMBER) заново поверх существующей. Беее, сложно и неудобно :evil:


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: опять об идеалогии и внутреннем устройстве Форта
СообщениеДобавлено: Пт янв 28, 2011 14:08 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
dynamic-wind писал(а):
А вот коварное рассуждение:
Допустим, слово NUMBER не векторизовано.

Тут надо понять что в общепринятой фортовской практике имена слов форта представляют собой метки, место которым
в заголовке словарных статей.
Этот момент не относится к именам чисел( 23 ) , которые не просто метки, а представления чисел в символьном виде и никакие
словарные статьи за ними не стоят.
Стоит расширить понятие имени в форте с меток до активных имен( которые формируют свой код только по лексеме имени) как все встанет на место. С одной стороны появятся имена, подобные именам чисел, с другой стороны можно ввести словарные статьи, которые содержат имена чисел.
Я использую первый подход, как более универсальный, так как кроме чисел могут быть и другие комбинаторы.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: опять об идеалогии и внутреннем устройстве Форта
СообщениеДобавлено: Пт янв 28, 2011 15:42 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
dynamic-wind писал(а):
Допустим, слово NUMBER не векторизовано.
Как его самомодифицировать с целью расширения, причем так, чтобы существующий INTERPRET получил возможость чтения новых видов чисел?

Обычно INTERPRET тоже векторный

dynamic-wind писал(а):
самомодификация форта в этом случаях потребует переопределения части системы (которая зависит от NUMBER) заново поверх существующей.

Самый корректный способ. Оформляется как вставка. Тем более, в ANS NUMBER нет (по моему зря).

dynamic-wind писал(а):
Беее, сложно и неудобно

По моему ничего страшного.
Главное, при наличии исходников, заново писать ничего не надо. Копируешь и модифицируешь.
Код:
: ?SLITERAL1 ( c-addr u -> ... )
  \ ????????????? ?????? ? ?????
  0 0 2SWAP
  OVER C@ [CHAR] - = DUP >R IF 1 - SWAP CHAR+ SWAP THEN
  DUP 1 > IF
    2DUP CHARS + CHAR- C@ [CHAR] . = DUP >R IF 1- THEN
  ELSE 0 >R THEN
  >NUMBER NIP IF -2001 THROW THEN \ ABORT" -?"
  R> IF
       R> IF DNEGATE THEN
       [COMPILE] 2LITERAL
  ELSE D>S
       R> IF NEGATE THEN
       [COMPILE] LITERAL
  THEN
;

: NEW_INTERPRET
  BEGIN
    PARSE-NAME DUP
  WHILE
    SFIND ?DUP
    IF
         STATE @ =
         IF COMPILE, ELSE EXECUTE THEN
    ELSE ?SLITERAL1
    THEN ?STACK
  REPEAT 2DROP
;
0 VALUE ?NEWNUMBER
: <\NEWNUMBER>
  0 TO ?NEWNUMBER ;

: <NEWNUMBER>
-1 TO ?NEWNUMBER
  BEGIN
    REFILL ?NEWNUMBER AND
  WHILE
    NEW_INTERPRET
  REPEAT
;
\ test
<NEWNUMBER>
3333 .
<\NEWNUMBER>
0x4444 .

<NEWNUMBER>
0x5555 .
<\NEWNUMBER>


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

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


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

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


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

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