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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: что такое форт.
СообщениеДобавлено: Пн сен 18, 2006 23:28 
Не в сети
Moderator
Moderator
Аватара пользователя

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

что такое форт.

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

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

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

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

Распределенный компилятор - компилятор в форте не является централизованной
системой, он раскидан по отдельным определениям, которые компилируют
при необходимости нужные языковые структуры, набор которых не
ограничен ни чем и может быть расширен или заменен. Таким образом
компилятор состоить частично из интерпретатора (что не обязательно)
и набора "слов немедленного исполнения" которые всегда исполняются
вне зависимости от режима работы интерпретатора.

У форта не существует фиксированного набора ключей - есть лишь рекомендуемый стандартами. Все слова(ключи) языковой среды форт могут быть исполнены, хотя есть такие, которые при непосредственном выполнении могут "завалить" систему.

Из-за приведенных особенностей форт часто называют языком-операционной системой, на мой взгляд это и так и не так.

По сути не существует фиксированной модели написания программ на форте, и вы, увидив текст программы, не всегда сможете сказать, что он написан на форте. Здесь можно привести параллель с любой ОС в рамках которой может работать множество различных языков
программирования. Для форта - смена стиля программирования может происходит как за счет постепенного накопления изменений в системе, так и за счет смены лексикона( просматриваемого на данный момент набора словарей).


Последний раз редактировалось mOleg Вс окт 05, 2008 06:48, всего редактировалось 2 раз(а).


За это сообщение автора mOleg поблагодарил: Majestio
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт сен 19, 2006 06:28 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Хм...
Вот, если бы я встретил такое описание Форта, когда впервые о нем узнал, этот язык для меня умер бы в то же мгновение, потому что я
ничего не понял бы. :shuffle;

Честно сказать, я и сейчас слабо улавливаю логику.

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


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

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

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

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


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

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


виртуальная форт-машина не может включать в себя словари. Кроме того, эта самая ФВМ может работать
в составе например ЯП Си и вы никогда не узнаете об этом. Словари в любом случае - это более высокий уровень.

chess писал(а):
а интерпретатор является ее программой.

интерпретатор основан на ФВМ - без этого его реализовать трудно(хотя и возможно)
Вообще ФВМ - это "ассемблерный набор команд" которые должен понимать форт-процессор. Так как мы пишем не всегда на форт-процессоре, то как раз и реализуем этот самый набор команд ФВМ.


chess писал(а):
Виртуальная машина всегда только исполняет программу,

это утверждение верно. Но выводы из него не верны.

WingLion писал(а):
Хм...
Вот, если бы я встретил такое описание Форта, когда впервые о нем узнал, этот язык для меня умер бы в то же мгновение, потому что я
ничего не понял бы.

странно. А какое бы по вашему определение было бы лучше? понятнее?


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

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

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

Программа работы ФВМ - интерпретатор основан на ФВМ с точки зрения выполнения команд доступа к ее оборудованию и реализовать его без этого по определению принципиально невозможно.
oleg писал(а):
Вообще ФВМ - это "ассемблерный набор команд" которые должен понимать форт-процессор.

Выражайтесь точнее-ассемблерный набор команд это наверное полный набор команд форт-процессора.
oleg писал(а):
это утверждение верно. Но выводы из него не верны.

А конкретнее можно? Какие выводы и в чем неверны?

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


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

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

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

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


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


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

Зарегистрирован: Пт май 05, 2006 06:19
Сообщения: 192
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
у меня складываетса впичатление что ни кто точно не знает о чом говорит
или говорят о савершено разных вещах,
на лицо конфликт даже на уровне терминологии,
перспектив договоритса по моему скромному мнению у вас нет : )

_________________
SPF


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

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

Ну совсем просто. Представьте, что словари будут реализованы не в обычном линейном ОЗУ с произвольным доступом, а на базе ассоциативной памяти(кстати это имеет практический смысл, так как на порядки ускорит поиск в словарях - исключается последовательный перебор). Исполняемый код при этом будет как и раньше располагаться в линейном ОЗУ с произвольным доступом. При этом изменится набор команд ФВМ (программная часть ее реализации) в части работы со словарями, потому что программно-аппаратная реализация ФВМ сместилась в аппаратную область.
Если и это непонятно, то дальше действительно нет смысла говорить.

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


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

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


Вопрос чисто терминологический. Как-бы под виртуальной машиной понимается
эмуляция реальной машины. Однако, любую программу можно выразить аппаратными
средствами. Получается, что любая программа является виртуальной машиной.
Под ВФМ понимаеся конкретная вещь - это интерпретатор шитого кода.
Даже, если в роли этого интерпретатора, выступает нативный процессор, в
случае с подпрограммым шитым кодом.


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

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

Это откуда взято, от Ч. Мура что-ли?
На мой взгляд гораздо более практичнее понимать интерпретатор шитого кода как программу, которую выполняет Виртуальная Форт-Машина, а саму Форт-Машину понимать как оборудование:
- буфер ввода, словари, кодофайл, память данных, стек параметров, стек возвратов, АЛУ и еще, что там еще можно выдумать, ну например стек типов операндов. В этом случае интерпретатор(программа) использует команды ВФМ, которые можно подразделить на команды доступа к разным единицам оборудования: к стекам, к словарям, к памяти, к АЛУ, к кодофайлу, к буферу и т.п.
Сам тип шитого кода: прямой, косвенный, подпрограммный на структуру оборудования ВФМ не влияет, он влияет только на программу - на интерпретатор. Такая вычислительная модель позволяет увидеть особенности реализации той или иной форт-системы, легче оценить ее сильные и слабые стороны.

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


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

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Мы все дальтоники и говорим на разных языках :)
Тема: Forth не против, а за!..
А тут совсем другое.
Хоть слова выбирайте по проще не все же академии кончали. :weep;

_________________
Меня нет, не будет и не было.


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

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

А подтема захотелось мне написать собственное определение того, что же
Вот мне и захотелось.
И говорим вроде пока по-русски. :o

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


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

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


Изменится ФВМ, а не словарь. То есть метод хранения кода и данных, а так же метод интерпретации на уровне ФВМ поменяется, но это одно, А другое - это метод поиска (SFIND FIND) или интерпретации входного потока (EVALUATE, INTERPRET и некоторым образом QUIT & ABORT).
Поэтому кстати я и говорил о том, что стандарт не правильно разбит на части.

То есть ФВМ зависит от типа выбранного шитого кода, а словарь - нет 8)
ФВМ - это и есть программная реализация аппаратной части форт-процессора 8)
chess писал(а):
Mihail писал(а):
Под ВФМ понимаеся конкретная вещь - это интерпретатор шитого кода.

Это откуда взято, от Ч. Мура что-ли?

принятая практика и об этом написано во всех учебниках по форту 8)
chess писал(а):
На мой взгляд гораздо более практичнее понимать интерпретатор шитого кода как программу, которую выполняет Виртуальная Форт-Машина, а саму Форт-Машину понимать как оборудование:

Так вроде того и имеется ввиду 8) ФВМ - это по сути програмная эмуляция оборудования.
Поэтому этот уровень я и рассматриваю отдельно.
chess писал(а):
Сам тип шитого кода: прямой, косвенный, подпрограммный на структуру оборудования ВФМ не влияет,

На и на структуру тоже влияет. Например подпрограммный шитый код не имеет оператора NEXT 8)

Pretorian писал(а):
А тут совсем другое.
Хоть слова выбирайте по проще не все же академии кончали.

Да не все 8) Бери выше! 8)


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

http://www.rsdn.ru/Forum/Message/901815.htm


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 03, 2007 21:24 
Не в сети
Moderator
Moderator
Аватара пользователя

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

<dd>Основным понятием языка форт является слово. Каждое слово языка может быть исполнено, но не обязательно должно исполняться. Программа в форт-среде – это набор слов. Обычно для выполнения программы достаточно выполнения последнего определенного понятия ( слова). Форт-среда не разбирается в том, является ли очередное слово оператором языка или данными. Слова просто ищутся в списке, называемом словарем и при условии нахождения выполняются. Словарей может быть много, и словари тоже являются словами. Каждое новое слово добавляется в словарь с помощью уже существующих слов или их комбинации. Тот словарь, в который добавляется слово, называется текущим, а тот, из которого исполняется - контекстным. Современная форт-среда умеет работать с одним текущим и несколькими контекстными словарями, причем текущий словарь не обязан находиться в контексте, и список словарей, находящихся в контексте тоже не фиксирован. В отличие, например от Лиспа, базовый словарь форт-среды не является «суперсловарем», то есть не всегда находится в контексте, поэтому возможны неприятные ситуации, когда программист сам ограничивает знания системы словарем, в котором нет слов, позволяющих системе прийти в нормальное рабочее состояние. Этот же момент позволят создавать совершенно не связанные с базовой средой лексиконы – то есть полностью менять правила среды.

<dd>Любое слово можно условно разделить на две части: имя слова и содержимое слова. Содержимое слова тоже можно условно разделить на две части: исполнимую часть - код и неисполнимую часть – данные. В зависимости от типа слова содержимое слова может отсутствовать вообще, содержать только код или только данные.

<dd>Форт-среда состоит из:
- виртуальной форт-машины, адаптирующей вычислительную модель используемой аппаратной платформы к принятой в форте;
- механизма обмена данными между словами;
- набора слов, достаточного, как минимум, для дальнейшего развития среды;
- и интерпретатора поступающих данных.

<dd>В форт-среде принята 0-операндная вычислительная модель. Это значит, что данные находятся всегда в одном месте, называемом стеком данных, и все параметры от одного слова к другому передаются через этот самый стек данных. Количество передаваемых данных от одного слова другому во время исполнения не ограничивается и не контролируется системой. Слова всегда берут данные с вершины стека данных и туда же возвращают результат своей работы.

<dd>Интерпретатор - это бесконечный цикл, в котором производится последовательно: чтение очередной лексемы из входного потока, поиск ее в контексте, и выполнение.

<dd>Компилятор состоит из большого количества слов, находящихся в базовом словаре системы. Набор слов компилятора не ограничен, не фиксирован, может быть заменен или переопределен, расширен или урезан. Это значит, что компилятор форт-среды находится внутри среды, доступен для изменения и расширения.
<dd>Форт-среда может находиться в одном из двух состояний: состояния компиляции или интерпретации. Состояние системы определяется содержимым стандартной переменной STATE. Если в ней находится 0 – режим интерпретации, иначе – компиляции. Отличие режимов работы заключается в поведении интерпретатора, который в режиме компиляции не исполняет слова, а добавляет в собираемое определение вызовы указываемых слов.


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

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


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

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


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

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