Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 22:51

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 222 ]  На страницу Пред.  1 ... 11, 12, 13, 14, 15  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вс фев 28, 2010 15:46 
mOleg писал(а):
chess писал(а):
При ближайшем рассмотрении управление указателем встроено в слова-процедуры Форта, что является локальным действием,
привязанным к конкретному слову. На мой взгляд это верный подход.
Абсолютно согласен. Реализация примитивов это самая системно-зависимая часть системы и ее реализацию фиксировать - только во зло.
Навороченные системы с процессорами типа х86 могут себе позволить избыточный код. При переходе к МК с ограниченными ресурсами какая-то унификация(единообразие) не помешает.
mOleg писал(а):
Имеет смысл зафиксировать только результат поведения - то есть, что примитив получает на входе и что получает на выходе.
Можно ли для этого выделить такой вариант?
chess писал(а):
4. Двойной массив с двумя указателями(первый массив для входных параметров, второй для выходных), с перебросом указателей с одного массива на другой.


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

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

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

idem писал(а):
Навороченные системы с процессорами типа х86 могут себе позволить избыточный код. При переходе к МК с ограниченными ресурсами какая-то унификация(единообразие) не помешает.

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс фев 28, 2010 16:56 
mOleg писал(а):
для навороченных систем унификация проще достигается, чем для микроконтроллеров
Так, ведь я о том же. И возвращаюсь к восходящему методу разработки. В данном случае от МК. Если для них будет образец(или несколько моделей), то на процессорах не должно быть проблем.

Кстати, связь разделов математики с ЯП – обычное дело. Пролог и булева алгебра, Лисп и рекурсивные вычисления, Паскаль и РБНФ(почти другой язык)… А что в этом плане можно сказать о Форте?


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

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

модель уже описана базовая модель Форт-машины, поэтому, если ее можно положить на имеемую архитектуру процессора - то Форт получится, если нет - то не получится.

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


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

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

а вот тут я с Муром не согласен. Я понимаю причины заставившие его так поступить, но в этом направлении я вижу только проблемы.

Назовите хотя-бы одну проблему.
mOleg писал(а):
Дело в том, что одним из фундаментальных свойств Форт-системы явялется режим ее работы и разница между созданием нового правила и использованием готовых действительно Фундаментальна. То есть, я считаю, что STATE гораздо лучше потому, что отражает один в один работу механизма.

Особой разницы в действиях транслятора в разных режимах нет. В любом случае происходит исполнение цепочек уже существующих кусочков кода. Исполнение кода слов (интерпретация) может быть сведена к откладыванию кода слов, исполнению отложенного кода и удалению отложенного кода. Если этот код не исполнять и не удалять, то будет просто откладывание кода(компиляция) с возможным именованием результирующего кода.
Вот пример работы без STATE:
Код:
NameN: name1, name2 name3,, 100 200, name4,. 

NameN: - сформировать заголовок слова NameN
name1, - отложить код name1
name2 - исполнить код name2
name3,, - отложить код " отложить код name3 "
100 - положить 100 на стек
200, - отложить код " положить 200 на стек "
name4,. - отложить код name4 и сформировать ret

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


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

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

ну, вот, хотя бы, как поступать с числами?

chess писал(а):
NameN: name1, name2 name3,, 100 200, name4,. 

имхо, плох уже наличием этих самых ',' - транслятор усложняется с одной стороны, с другой теряется регулярность языка.
С третьей - приходится отслеживать что же мы делаем (в смысле все перемешивается). Вобщем, пока я либо не дорос до этого, либо перерос :)

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


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

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
mOleg писал(а):
То есть, я считаю, что STATE гораздо лучше потому, что отражает один в один работу механизма. Из нововведений могу только сказать, что STATE не стоит делать простой переменной, как это есть сейчас, а стоит сделать VALUE переменной.

Я сделал вариант из 2х слов, интерпретатор исполнения и интерпретатор компиляции. Каждое представляет собой сопрограмму -переходы без возврата между собой- У каждого свой алгоритм поиска слов. Мне показалось удобно. :)

_________________
With best wishes, in4.


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

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
idem писал(а):
Кстати, связь разделов математики с ЯП – обычное дело. Пролог и булева алгебра, Лисп и рекурсивные вычисления, Паскаль и РБНФ(почти другой язык)… А что в этом плане можно сказать о Форте?

Программа на ColorForth эквивалентна конечному автомату.
ColorForth и конечные автоматы

_________________
With best wishes, in4.


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

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

Вообще говоря, процессор сам по себе является конечным автоматом. Но с точки зрения программирования да, Форт довольно благоприятно относится к автоматному программированию.


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

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

то есть по сути своеобразное убирание переменной без убирания зависимости? то есть что-то типа:
<pre>
: >num ( asc # --> n ) ?SIGN IF SkipChar >UNUM NEGATE ELSE >UNUM THEN ;
</pre>
?
вообще, было бы не плохо увидеть хотя бы псевдокод ;)

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 01, 2010 10:55 
mOleg писал(а):
chess писал(а):
NameN: name1, name2 name3,, 100 200, name4,.
имхо, плох уже наличием этих самых ',' - транслятор усложняется с одной стороны, с другой теряется регулярность языка.
С третьей - приходится отслеживать что же мы делаем (в смысле все перемешивается).
Конечные автоматы на языке Форт примерно так и выглядят. Поэтому, регулярность языка сохраняется.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 02, 2010 00:29 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
mOleg писал(а):
вообще, было бы не плохо увидеть хотя бы псевдокод

Напоминаю особенности - 2 вынесенных из кода словаря, неразрушающие условия (используют флаги проца) и ; - RET с оптимизацией хвостовой рекурсии (CALL + RET -> JMP ).

ie - собственно интерпретатор или компилятор... ;)
Код:
: ie0  \ интерпретатор исполнения, исследуемый вариант
   nop nop nop
   [ call, ]
\   [ here ],  cinterpr !
   [char] n emit [char] e emit .sar
\   cr ." <<" source swap >in @ + swap >in @ - type ." >>" cr
   (forth) d@  context1 d!
   begin
      in? ifz ; then  \ нет символов - выйти
      blsp  test ifz ddrop ; then  \ слово 0 длины - выйти
      ddup  curword d!  wfind1
      if  execute  again then  \ слово
      0 0 curword d@
      >number  test ddrop if
         ddrop cr
         [char] n emit  69 emit 3A emit space  curword d@ type
         bad again then
      d>s
      again

\ [ here  \ взять тек. адрес тут или внутри определения
: ic0  \ интерпретатор компиляции, исследуемый вариант
   [ here ],  cinterpr !
   [char] n emit [char] c emit .sar
\   cr ." <<" source swap >in @ + swap >in @ - type ." >>" cr
   begin
      in? ifz ; then  \ нет символов - выйти
      blsp  test ifz ddrop ; then  \ слово 0 длины - выйти

      ddup  curword d!
      (macro) d@  context1 d!  wfind1  \ ищем в macro
      if  execute  again then  \ слово  \ и исполняем

      curword d@
      (forth) d@  context1 d!  wfind1  \ ищем в forth
      if  call,  again then  \ слово   \ и компилим

      0 0 curword d@
      >number  test ddrop if
         ddrop cr
         [char] n emit  63 emit 3A emit space  curword d@ type
         bad again then
      d>s lit,
      again

: ie  cinterpr @ execute
   \ .sar
   69 emit
   3F  \ [char] ?
   cinterpr @ ' ie0 [ ], - drop ifz [ 69 3F - ], + then
   cinterpr @ ' ic0 [ ], - drop ifz [ 63 3F - ], + then
   emit 3E emit query cr ie ;

...


here ]
\ : ]  \ переключение в компиляцию
   pop drop  ic0 ;
[ new: ]

macro
s" новый '[' " type
here u.
here ]
\ : [
   pop drop  ie0 ;

[ new: [


Вызов слов [ и ] как раз и переключает интерпретаторы. Правда, эти слова должны быть только на первом уровне вложенности, но неудобств от этого я пока не заметил ;)

_________________
With best wishes, in4.


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

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

Все понятно. То есть, как я и предполагал, State никуда не делась, а была "развернута" в код.
Самое главное, мне не показался такой транслятор более простым 8( со state выглядело элегантнее. Кроме того не понятно, что делать, если захочется "понять" в каком же сейчас состоянии находится система. То есть, если в похожем случае с числами я за убирание глобальной переменной BASE, то тут я преимуществ не вижу.

кстати, а каким образом работает again ? ;)

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


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

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
mOleg писал(а):
Все понятно. То есть, как я и предполагал, State никуда не делась, а была "развернута" в код.

Мне так показалось лучше. ;)
Зачем таскать флаги, лучше сразу делать то, что надо. И если интерпретаторы существенно разные, почему бы не иметь их оба? ;) Тем более, что дублирование минимальное.

mOleg писал(а):
кстати, а каким образом работает again ?

Код:
[ forth
var (begin)

macro
: begin  here (begin) ! ;
: again  E9 1,  (begin) @ here -  2 - 2, ;

_________________
With best wishes, in4.


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

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

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

macro
: begin here (begin) ! ;
: again E9 1, (begin) @ here - 2 - 2, ;


Код:
begin
  ...
  begin
  <cond> until
again

Куда пойдет again?


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

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


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

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


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

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