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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 67 ]  На страницу Пред.  1, 2, 3, 4, 5
Автор Сообщение
 Заголовок сообщения: Re: Как вы себе представляете будующюю Форт ОС?
СообщениеДобавлено: Пн авг 28, 2017 23:42 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Взаимоисключающие параграфы. Если Форт можно превратить в то, что нужно, значит он способен на то, что нужно. А если нужно именно то, для чего сделан костыль ?

Вот пример с рекурсивным разбором выражения, к примеру (A+(B+C)*(D-E))
- нужна рекурсия
- нужна своя локальная запись для свойств подвыражения на каждом вложении рекурсии.
Значит костылим локальные записи, потому-что это реально нужно. Я и накостылил.

Кстати, а где ознакомиться с типичными Форт-решениями ? Вот что я придумал, то мне и знакомо. Броуди читать ?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как вы себе представляете будующюю Форт ОС?
СообщениеДобавлено: Вт авг 29, 2017 00:14 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
KPG писал(а):
Хорошая статья по парадоксу Блаба Грэм, Пол "Lisp: побеждая посредственность"
Думаю это близко и к пониманию Форт

Действительно, интересно. Лисп в целом чем-то похож на Форт в части стиля работы с ним.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как вы себе представляете будующюю Форт ОС?
СообщениеДобавлено: Вт авг 29, 2017 00:36 
Ethereal писал(а):
А если нужно именно то, для чего сделан костыль ?
Зачем делать костыли, если легче отрастить ноги?

Ethereal писал(а):
Вот пример с рекурсивным разбором выражения, к примеру (A+(B+C)*(D-E))
Рекурсивными выражениями занимаются языки описания грамматик (тот же yacc, для определенности). Сравним yacc-программу и FORTH-систему. Обе получают на вход ПОТОК символов и складывают то, что прочли, в СТЕКообразные структуры. Когда в стеке будет собрана более-менее полная конструкция, она сворачивается (или компилируется). Велика ли разница между ПОТОКАМИ и СТЕКАМИ обеих программ? Если воспринимать FORTH, как нечто окончательное, то велика (хотя, Мур легко победил частный случай - инфиксную арифметику). Но, если мы легко пишем нашу FORTH-систему на коленке, то что, так трудно научится разбирать ПОТОК на операнды и операторы? И сделать СТЕК деревом? Легко. (Я даже пытался классифицировать способы добавления в FORTH таких фич - http://fforum.winglion.ru/viewtopic.php?f=16&t=2990).

Ethereal писал(а):
Броуди читать ?
Лучше Мура.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Как вы себе представляете будующюю Форт ОС?
СообщениеДобавлено: Вт авг 29, 2017 16:02 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
@Gudleifr
Так я именно так и делаю. У меня однопроходный Оберон получается. Т.е. программа рассматривается как поток, который разбирается на лексемы, выражения разбираются на операнды и операторы. Инфиксные выражения в процессе рекурсивного разбора автоматически выворачиваются постфиксными. Хоть код стек-машины сразу порождай. Правда, я хочу порождать код не для стековой, а для регистровой машины. Из-за этого в процессе рекурсивного разбора приходится на следующий уровень рекурсии передавать наследие - указатель на запись в которой хранятся атрибуты ранее разобранного - подгружено ли в регистр, если да, то в каком регистре, если нет, то по какому базовому регистру и с каким смещением адресуется, какого типа - Integer и оперируем словами или Boolean и байтами и прочая, прочая. И все эти атрибуты временны и локальны на данном вложении рекурсии. Короче, нужна локальная переменная в подпрограмме типа запись. А она в изначальном Форте (CORE words) костылируется. Т.е. сама задача требует костыль.

Не, ну можно конечно запись разложить на кучу отдельных переменных. Но тогда на следующий уровень рекурсии придется передавать на стеке их все. И всюду оперировать с ними с помощью PEEK. Но тогда совсем некрасиво выйдет. Слово с 10-ю входными параметрами - это совсем некрасиво. По моему это как раз тот случай, когда стоит в Форт притащить сущности из других ЯВУ - локальные переменные (в данном случае неименованные) и записи.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как вы себе представляете будующюю Форт ОС?
СообщениеДобавлено: Вт авг 29, 2017 16:32 
Ethereal писал(а):
Так я именно так и делаю.
Скорее всего, так и есть. Похоже, тут чисто терминологические невязки. Слово, использующее кадр стека так, как ему удобно - это по-Forth-овски, а "механизм локальных переменных" - уже нет. Разница не в том, как оно работает, а насколько требует внесения в стандарт. И насколько, внесенное в стандарт, оно будет требовать от программиста делать так, даже, если оно не будет удобно. См. например, http://gudleifr.forum2x2.ru/t31-topic#250.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Как вы себе представляете будующюю Форт ОС?
СообщениеДобавлено: Вт авг 29, 2017 16:32 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Hishnik писал(а):
KPG писал(а):
Хорошая статья по парадоксу Блаба Грэм, Пол "Lisp: побеждая посредственность"
Думаю это близко и к пониманию Форт

Действительно, интересно. Лисп в целом чем-то похож на Форт в части стиля работы с ним.
Угу. Программисты на Лисп смотрят на программистов на Форт, как на УнаБомбера :
Изображение


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как вы себе представляете будующюю Форт ОС?
СообщениеДобавлено: Пт сен 01, 2017 21:05 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Hishnik писал(а):
Лисп в целом чем-то похож на Форт в части стиля работы с ним.
Работа с Лисп в Форт-стиле. Создаем исполняемый файл на Clozure Common Lisp с помощью ихнего аналога SAVE-SYSTEM :
Код:
(defun hello () (format t "Hello, world!"))
(ccl:save-application "hello.exe"
                      :toplevel-function #'hello
                      :prepend-kernel t         )
Действительно получается EXE-шник. И запускается. И работает. Да только весит 19 мегабайт. :shock:
Но мне тильдочка перед hello понравилась. :) Ну прям токен заполучаем.


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

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


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

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


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

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