Forth
http://fforum.winglion.ru/

3-х стековая виртуальная машина. размышления.
http://fforum.winglion.ru/viewtopic.php?f=2&t=2375
Страница 11 из 11

Автор:  mOleg [ Пт мар 09, 2018 14:17 ]
Заголовок сообщения:  Re: 3-х стековая виртуальная машина. размышления.

_KROL писал(а):
Олег, если тебя смущает AD+ (видишь как суммму адреса и двойной ячейки), то вот ещё варианты: A+D A:D
Последний вроде точно по смыслу подходит.

меня устраивает A+

Автор:  KPG [ Пт мар 09, 2018 14:54 ]
Заголовок сообщения:  Re: 3-х стековая виртуальная машина. размышления.

mOleg писал(а):
_KROL писал(а):
Олег, если тебя смущает AD+ (видишь как суммму адреса и двойной ячейки), то вот ещё варианты: A+D A:D
Последний вроде точно по смыслу подходит.

меня устраивает A+

Вполне по Фортовски для различения разных сущностей вводить свои лексиконы слов. :)

P.S. До этого была мысль, например, добавить к системе дублирование верхнего элемента стэка в регистре A вводимому в некоторых системах, но тогда >R R> слова отчасти уйдут из употребления в коде, что тоже не лучший вариант (т.к. будет использован 'неявный' контекст создания кода в Форт системе)

Автор:  Hishnik [ Пт мар 09, 2018 18:03 ]
Заголовок сообщения:  Re: 3-х стековая виртуальная машина. размышления.

_KROL писал(а):
Не вижу проблемы
Код:
: VARIABLE ( -- \\ -- a:addr ) CREATE 0 , DOES> ;
: CONSTANT ( d: x -- \\ -- d: x) CREATE , DOES> @ ;

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

_KROL писал(а):
Я как-то не понимаю, в чём сложность держать два стека в голове? Не привычно? Да.

Почему не три? Не четыре? В качестве модели "почему бы и не так" оно имеет право на существование. В конце концов, можно много чего написать, в том числе и реализовать совершенно постороннюю вычислительную модель на Форте. Другое дело, что это имеет мало шансов стать мейнстримом, потому что существует рабочий подход, основанный на единственном стеке. А раз стек адресов можно не делать, то он и не будет сделан. Просто по принципу экономии сил.

Автор:  Hishnik [ Пт мар 09, 2018 18:13 ]
Заголовок сообщения:  Re: 3-х стековая виртуальная машина. размышления.

mOleg писал(а):
ээм, а совместимости с чем? странно слышать именно это утверждение от тебя 8)

Совместимость существует методологическая. Читаем книги и нарабатываем код. К моменту завершения чтения книг и статей у программиста уже что-то в голове отложилось. Можно попытаться впихнуть ему что-то свое, но практика показывает, что лишнее и ненужное отваливается за ненадобностью. Вот в рамках привыкания к Форту программист вполне может привыкнуть к постфиксу и словам DUP DROP SWAP OVER ROT.
mOleg писал(а):
нет, размер - это размер.
пример не засчитан 8(

Размер это именно размер. Это и данные, потому что с ними надо сравнивать координату (которая тоже данные), и он же используется для вычисления размера массива.

mOleg писал(а):
в конце концов, ты ведь не путаешься, где надо писать ! , а где +
а, ведь тоже надо разделять, где адрес лежит в первом случае.

Так это и есть тот самый практически вырабатываемый шаблон программирования, образующийся, пока человек изучает основы. Слова ! @ в целом дань традициям. Можно заменить на SET и GET или STORE и FETCH. Можно, конечно, пользуясь отдаленной аналогией, пойти в детский сад и там рассказывать, что Земля плоская, но сколько у детей продержится такое знание на практике? Вон и стековые комбинаторы что-то не показывают победного шествия. Я не имею в виду примеры кода, "которые работают же!". Я имею в виду объективную статистику, когда при сравнении подходов совершенно посторонние программисты говорят "да, с комбинаторами-то проще, изучу я их, пожалуй". Вот и с адресным стеком (и заодно со стеком строк, стеком словарей и прочими) точно так же. Для себя - сколько угодно. Рассчитывать, что все сейчас бросят наработанные подходы и станут все переписывать - большой вопрос. Который и решается не дискуссиями, а наблюдением за реально складывающейся картиной, которую формируют независимые программисты.

Автор:  Victor__v [ Вс мар 11, 2018 18:35 ]
Заголовок сообщения:  Re: 3-х стековая виртуальная машина. размышления.

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


Вспоминаем комбинаторику.
2 стека - 2 варианта взаимодействия (2!=2) , 3 стека 6 вариантов взаимодействий (3!=6) и т. д.

А ежели в форте постоянно, непрерывно, используются более 2-х стеков?
Нагрузка на фортера больше, а выхлопа нет почти.

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

Автор:  Victor__v [ Вс мар 11, 2018 18:46 ]
Заголовок сообщения:  Re: 3-х стековая виртуальная машина. размышления.

Hishnik писал(а):
Вон и стековые комбинаторы что-то не показывают победного шествия. Я не имею в виду примеры кода, "которые работают же!". Я имею в виду объективную статистику, когда при сравнении подходов совершенно посторонние программисты говорят "да, с комбинаторами-то проще, изучу я их, пожалуй".


Шо? Кто против стековых комбинаторов?
Это DSL для более эффективного (в плане быстродействия) по сравнению с фортом кода. К примеру, нужно сделать в одном месте какое-то действие (лень лезть в свои исходники в поисках примера). На форте это вылилось бы в лишнее стекомахание, а тут тишь да гладь.

Насчёт попроще, это явно диверсия. Они посложнее форта, особенно в моей реализации.

P.S.
На счёт стекомахания. Бывают просто такие ситуации.
В обычной практике далее связки SWAP ROT заходить не приходится

Автор:  Hishnik [ Вс мар 11, 2018 20:57 ]
Заголовок сообщения:  Re: 3-х стековая виртуальная машина. размышления.

Victor__v писал(а):
Шо? Кто против стековых комбинаторов?
Это DSL для более эффективного (в плане быстродействия) по сравнению с фортом кода. К примеру, нужно сделать в одном месте какое-то действие (лень лезть в свои исходники в поисках примера). На форте это вылилось бы в лишнее стекомахание, а тут тишь да гладь.

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

Именно. И раз нет явной волны запросов на стековые комбинаторы, автоматически встает вопрос, а нужно ли добавлять вещь, обязательную к реализации. Для меня резко снижается привлекательность наработок, если я знаю, что их автор может заявить "а вот тут я поставлю слово, которое мне нравится, и без него делать не буду, а слово мне нужно, чтобы обосновать редкую вещь, которая не во всяком Форте есть". Из той же серии совсем уже бредовые заявления Максимова "отдам библиотеки только за криптовалюту". Может еще в Oriflame торговым представителем надо зарегистрироваться? :D

Автор:  mOleg [ Вс мар 11, 2018 21:05 ]
Заголовок сообщения:  Re: 3-х стековая виртуальная машина. размышления.

Victor__v писал(а):
Вспоминаем комбинаторику.
2 стека - 2 варианта взаимодействия (2!=2) , 3 стека 6 вариантов взаимодействий (3!=6) и т. д.

И тут не совсем верно. Т.к. появляются запрещенные перемещения и операции.
И, все-таки, говорить что-то, стоит сначала разобравшись 8)

Victor__v писал(а):
А ежели в форте постоянно, непрерывно, используются более 2-х стеков?

не поверишь, их таки больше двух.
У меня постоянно используется 4-е низкоуровневых(определенных на асме) и два и более, ээ, других в общем.
И я не путаюсь, т.к. они совсем разные.

Victor__v писал(а):
Шо? Кто против стековых комбинаторов?

я против 8)
дичайшая вещь.

Victor__v писал(а):
На счёт стекомахания. Бывают просто такие ситуации.
В обычной практике далее связки SWAP ROT заходить не приходится

и это говорит о том, что работу на стеке (обычную, нормальную) вы просто не освоили 8(
и стиль у вас неудачный. имхо.

Автор:  Victor__v [ Вс мар 11, 2018 23:29 ]
Заголовок сообщения:  Re: 3-х стековая виртуальная машина. размышления.

Цитата:
не поверишь, их таки больше двух.
У меня постоянно используется 4-е низкоуровневых(определенных на асме) и два и более, ээ, других в общем.


Поверю, в Нове их 5: данные, возвраты, плав.точка, контекст, окружение. Разговор о том, что тяжелей их использовать совместно в одном зрительном пространстве.

Навряд ли встречается что-то вроде:
DUP >R ALSO CONTEXT ! R@ >A F@ EXECUTE SWAP A>

Короче, смешение с потерей смысла.
Цитата:
и это говорит о том, что работу на стеке (обычную, нормальную) вы просто не освоили 8(
и стиль у вас неудачный. имхо.


Вот залез и посмотрел в свои наработки. Всё пучком. :D

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

Ну, так оно и есть. Насчёт стековых манипуляторов.
вот 0/1#11&<1^ это аналогично R> @ >R , только в первом случае стек данных не участвует. Вот и меньше трогаем стек данных.
Вот резервирование места в стеке возвратов под, хм, дострой строки 0/3#R0-3^
аналог на форте примерный: DUP R> OVER RP@ - RP! >R
А здесь снятие этого выделения и смещения указателя в стеке окружений на новую строку 1/2#R0+2^0i01+0
Что-то по общеупотребительней, хм: 3/B1&3..?(1&2..<)1i0dU код для замены одного символа другим в строке
И асм не напрягаем.

Короче, это инструмент для оптимизации по скорости и по наглядности (да-да, надо учиться) кода. Только и всего и нужен он, естественно, не везде, а лишь в отдельных случаях.

Страница 11 из 11 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/