Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Сб апр 20, 2024 03:36

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 84 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Чт май 31, 2007 19:22 
Не в сети

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

Для использования Си синтаксиса в Форте, при понимании различий нет преград.
если ограничить количество передаваемых параметров из процедуры 1-им. ( может быть и указатель), то задача, в целом решается.

Но т.к. в Форте допустимо на выходе произвольное число параметров, и не
известно кто убирает параметры со стека ( вызывающая или вызываемая процедура)
то это приводит к невозможности провести формальное преобразовани Forth->C .

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт май 31, 2007 21:34 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
white_TigR писал(а):
Гость писал(а):
это приводит к невозможности провести формальное преобразовани Forth->C

Здесь ведь речь об обратном преобразовании (C->Forth).
Или С -> ассемблер(ная вставка для ФОРТ)

white_TigR писал(а):
вопрос писал(а):
Уравнение (которое "недопонял" или недосмотрел Белый_Тигр)

Видимо, правда недопонял глобальность мысли.

Всё грустно, набрал длиннющее обьяснение с исходником на С, дизассемблированным из него кодом, и тут завис комп ... :dmad;
чуть позже


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

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

вопрос писал(а):
почему? нужен указатель на вршину стека, а потом небольшая арифметика указателей.

Раз было сказано просто "стек" - согласно ANS94 - используем стек данных.


Ага, между прочим, было сказано - виртуальный стек - элемент ВМ. Он как раз и может быть реализован в виде массива а не собственно стека.
И это несколько меняет дело, хотя ясно, что я плохо обьяснил.

in4 писал(а):
Допустим, есть 2 параметра, a(подвершина) и b(вершина).
какой код положит а на стек после:
  • DUP
  • a
  • b
  • SWAP
  • DROP
    ...
.
Эх, нет, замысел был сложнее, чем показался мне самому.
Нет стековых операций внутри С-кода. Вообще. Или таковые идут на фиксированную глубину.
Ведь внутри С-кода по моему замыслу НЕТ слов Форта. Только переменные и операторы. поэтому "некому" менять глубину стека бесконтрольно и ничего не нужно контролировать. Если реализовать это на Форте, то да, тут есть ньюансы, хотя и их можно обойти. НО речь о реализации как быи встроенного ассемблера в виде С-кода. при этом стек неприкосновенен как стек.


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

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

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 01, 2007 04:53 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
вопрос писал(а):
Эх, нет, замысел был сложнее, чем показался мне самому.
Нет стековых операций внутри С-кода. Вообще. Или таковые идут на фиксированную глубину.

Вначале речь шла о синтаксисе. Он подходящий. Для многих задач удобно иметь часть формул в привычном инфиксном виде. Среди библиотек есть две для инфиксной записи. infix.f(а-ля паскаль, целочисленная) и opg.f (а-ля бейсик, плавающая).
Реализаций для удобной работы может быть много. Есть удобные средства Форта и SPF в частности. Локальные переменные, словари (использую только готовые, с областями видимости сам не играюсь), объекты (явно не пользуюсь), marker (пока не использовал, но собираюсь).
То, что ты предлагаешь, тоже можно сделать, хотя я и не считаю это необходимым! ;)
Для меня допустимы вставки на других языках, но делать заточенный под С (регистровую архитектуру) оптимизатор? Хотя возможно, для некоторых задач имеет смысл. Но я с такими не сталкивался... ;)

_________________
With best wishes, in4.


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
in4 писал(а):
То, что ты предлагаешь, тоже можно сделать, хотя я и не считаю это необходимым! ;)
Для меня допустимы вставки на других языках, но делать заточенный под С (регистровую архитектуру) оптимизатор? Хотя возможно, для некоторых задач имеет смысл. Но я с такими не сталкивался... ;)
Стал разбираться в собствнном замысле и тут понял, что если сам Форт сделан на С, код делать вовсе не трудно.
Есть форты, кодированные на с ?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 06, 2007 11:55 
---


Последний раз редактировалось profiT Сб мар 01, 2008 01:02, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 06, 2007 12:04 
---


Последний раз редактировалось profiT Сб мар 01, 2008 01:02, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 06, 2007 12:26 
Не в сети

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

Кстати, мы как-то забыли, что переменные нужно обьявить, причём именно как переменные, тут они "сразу кладут на стек значение" - т.е. работают как константы, а они именно переменные.
Но вообще, убежда...ло бы, если бы было столь же читаемо и понятно. Попробуйте из собственного кода "вывести" изначальную формулу. Да производительность

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 06, 2007 12:40 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
поясняю, откуда это взялось, в теме ни в чём не повинного forth@km.ru
пошла речь о преимуществах С-синтаксиса и не удержавшись я предложил

Цитата:
Ну, сумейте прото не полениться записать на Форте
if((a==(c+b)*d-e&&d<e) || (c<a * d - (b * e) * 1.5)) function1();
else if ...
else ...


в смысле - насколько трудоёмок для таких моментов Форт и насколько менее трудоёмок С.
profiT раздосадован и на мысли и на флуд :D

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 06, 2007 12:47 
---


Последний раз редактировалось profiT Сб мар 01, 2008 01:02, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 06, 2007 12:51 
---


Последний раз редактировалось profiT Сб мар 01, 2008 01:03, всего редактировалось 2 раз(а).

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 06, 2007 13:46 
profiT писал(а):
Код:
: main { a b c d e -- } c b + d * e - a = d e < AND c a d * b e * *1.5 - < OR IF function THEN ." else if ..."

И шо?.. Что-то координально поменялося?..


Потерялась, если была, структурированность кода в формуле для ее понимания
а в основном хрен редьки не слаще:)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 06, 2007 18:19 
Не в сети

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Код:
~mak/infix.f

: test { a b c d z xt }
_INF_ { ((a=(c+b)*d-z AND d<z) OR (c<a * d - (b * z) * 3/2)) }
IF xt EXECUTE THEN
;

CR -1 0 0 0 1 :NONAME ." BUBUBU" ; test

_________________
http://forth.org.ru/~ygrek


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 06, 2007 19:46 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
ygrek писал(а):
Код:
~mak/infix.f

: test { a b c d z xt }
_INF_ { ((a=(c+b)*d-z AND d<z) OR (c<a * d - (b * z) * 3/2)) }
IF xt EXECUTE THEN
;

CR -1 0 0 0 1 :NONAME ." BUBUBU" ; test
так лучше.
Поясню ещё - С-синтаксис подобен синтаксису обычной логики (математической), т.е. если бы задача сложна, легче, видимо, смотреть на неё как на формулу а не как на процедуру, это я говорил сначала.


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

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


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

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


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

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