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

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Полезные слова и идеи для Форта.
Автор Сообщение
  Заголовок сообщения:  Re: Полезные слова и идеи для Форта.  Ответить с цитатой
Hishnik писал(а):
Разумеется. К сожалению, "так у Мура"...
А у кого иначе?
Сообщение Добавлено: Вт апр 04, 2017 18:11
  Заголовок сообщения:  Re: Полезные слова и идеи для Форта.  Ответить с цитатой
Victor__v писал(а):
Зачем формировать строку из числа в паде если без этого можно обойтись?
Конечно, отладочные слова прорабатываются в последнюю очередь, но всё же...

Разумеется. К сожалению, "так у Мура" частенько принимается за признак какой-то элитарности и мистического тайного смысла. Алгоритмы печати чисел вполне известны, можно пользоваться любым.
Victor__v писал(а):
И ещё хочется обсудить идею навешивания обработчиков на слова.
Основной посыл таков: иногда требуется связать компиляцию слова с некоторым доп.действием. К примеру, поддержка лок.переменных при использовании операций >R R> 2>R 2R> и пр

Хорошее дело. Обработчики, как говорится, лежат и каши не просят. Хорош сам подход, когда то, что можно сделать средствами Форта (и при этом несложно), делается именно средствами Форта и потом, а то, что требует вмешательства в движок, предусматривается заранее.

Причем я не конкретно в защиту локальных переменных в таком качестве, а просто про факт обеспечения способа расширения функциональности.
Сообщение Добавлено: Вт апр 04, 2017 17:55
  Заголовок сообщения:  Re: Полезные слова и идеи для Форта.  Ответить с цитатой
Victor__v писал(а):
Судя по кол-ву реализаций...
... можно только констатировать детскую болезнь забивания гвоздей транзисторным приемником. Вам дали механизм для создания новых языков, а Вы стремитесь написать "еще один C++", чтобы на уже нем "писать всерьез". Как обычно: вместо писания того, что надо, пишем то, что легко написать. Кстати "количество реализаций" как раз и свидетельствует о низком уровне реализаторов.

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

Victor__v писал(а):
Это механизм для корректности операций.
В FORTH нет понятия корректности операции.

Victor__v писал(а):
Зачем уведомлять пользователя об имеющихся механизмах?
В смысле: нагадим в подъезде и вывернем лампочку?
Сообщение Добавлено: Вт апр 04, 2017 15:30
  Заголовок сообщения:  Re: Полезные слова и идеи для Форта.  Ответить с цитатой
Цитата:
Наоборот. Вы реализуете никому не нужные локальные переменные

Судя по кол-ву реализаций всё-таки нужные некоторым людям в т.ч. мне
Цитата:
Затем - изобретаете механизм их сокрытия

Сокрытия от чего? Это механизм для корректности операций.
Цитата:
без всякого желания (и даже уведомления) пользователя.

Зачем уведомлять пользователя об имеющихся механизмах?
Для понта?
Вот я такой крутой, у меня на С++ множественное наследование класса job?
Конечного пользователя вообще не интересует всё фичи и как написано. Лишь бы работало без сбоев.
Сообщение Добавлено: Вт апр 04, 2017 15:08
  Заголовок сообщения:  Re: Полезные слова и идеи для Форта.  Ответить с цитатой
Victor__v писал(а):
Опять расширение пространства для ошибок.
Наоборот. Вы реализуете никому не нужные локальные переменные. Затем - изобретаете механизм их сокрытия. Т.е. на момент написания пользовательской программы два мощных источника ошибок уже "на борту" без всякого желания (и даже уведомления) пользователя.

Victor__v писал(а):
А тут не делание чего-то нового, тут совместимость нового с уже имеющимся.
В FORTH не должно быть ничего имеющегося. Все должно писаться с нуля.

Victor__v писал(а):
И всё же интересно мнение участников форума по поводу навешивания обработчиков на слова.
Видимо, просто никто не понял, что имеется в виду.
Сообщение Добавлено: Вт апр 04, 2017 14:01
  Заголовок сообщения:  Re: Полезные слова и идеи для Форта.  Ответить с цитатой
Цитата:
Зачем? Определите какие-нибудь >>R или R>>

Опять расширение пространства для ошибок. Да ещё помнить, а есть ли здесь лок.переменные. Доп.нагрузка на память программиста, оно надо?

Цитата:
Если Вы делаете что-то новое - придумывайте новые слова

А тут не делание чего-то нового, тут совместимость нового с уже имеющимся. Немножко другой аспект.

И всё же интересно мнение участников форума по поводу навешивания обработчиков на слова.
Сообщение Добавлено: Вт апр 04, 2017 13:33
  Заголовок сообщения:  Re: Полезные слова и идеи для Форта.  Ответить с цитатой
vpn289 писал(а):
Ха! Много раз. "Это Форт, кто мне запретит?"
Никто, "мы живем в свободной стране".
Сообщение Добавлено: Сб апр 01, 2017 14:42
  Заголовок сообщения:  Re: Полезные слова и идеи для Форта.  Ответить с цитатой
Ха! Много раз. "Это Форт, кто мне запретит?"
Сообщение Добавлено: Сб апр 01, 2017 14:25
  Заголовок сообщения:  Re: Полезные слова и идеи для Форта.  Ответить с цитатой
vpn289 писал(а):
...
Добавлять в программу "структурность" путем использования запрещенного в структурном программировании приема? "Либо крестик снимите, либо трусы наденьте".
Сообщение Добавлено: Сб апр 01, 2017 13:55
  Заголовок сообщения:  Re: Полезные слова и идеи для Форта.  Ответить с цитатой
Цитата:
Будет, и уже есть кстати в СПФ :)
Не помню кто в devel имеет такую наработку.
Иногда ей пользуюсь.

Ага. Нашел. ~ygrek/lib/enum.f

У меня немножко отличается реализация
VARIABLES
Код:
VOCABULARY variables
    ALSO variables DEFINITIONS

    : NOTFOUND  (addr u -- )    CREATED 0 , ;
    : ;VARIABLES     PREVIOUS ;

    PREVIOUS DEFINITIONS

    : VARIABLES:     ALSO variables ;

Пример:
Код:
VARIABLES:  a b cdef   ;VARIABLES


VALUES инициализированные нулем
Код:
VOCABULARY values
ALSO values DEFINITIONS

: ;VALUES   PREVIOUS DROP ;
: NOTFOUND   VALUED 0 ;

PREVIOUS DEFINITIONS
 
: VALUES:  ALSO values 0 ;


Общий принцип: заводим новый контекст, в котором определяем слово закрывающий тег. В этом же контексте определяем NOTFOUND как определяющее слово.
И все происходит само. Числа кладутся на стек, слова определяют сами себя. Вычисления также доступны.
Можно в контекст добавить слово-паразит, которое может улучшить читаемость. Оно служит разделителем между вычисляемой частью определения (параметром) и именем определения. В таком случае переопределять NOTFOUND не нужно. Функция определяющего слова вешается на слово-паразит. В отличие от определяющего слова, слово-паразит очень короткое ( = ТО is -> и т.п ). И одно и тоже слово можно использовать в разных блоках определений.

Вариант со словом-паразитом.
Код:
VOCABULARY values
ALSO values DEFINITIONS

: ;VALUES    PREVIOUS ;
: is   VALUE ;

PREVIOUS DEFINITIONS
 
: VALUES:  ALSO values  ;


Примеры
Код:
VALUES:
       11    is aa   
  22 1980 *  is bb
  aa   bb +  is cc
;VALUES


Код:
CONSTANTS:
       11    is aa   
  22 1980 *  is bb
  aa   bb +  is cc
;CONSTANTS
Сообщение Добавлено: Сб апр 01, 2017 12:41
  Заголовок сообщения:  Re: Полезные слова и идеи для Форта.  Ответить с цитатой
Victor__v писал(а):
Можно, но также можно сделать и проще.
Например?
gudleifr писал(а):
И? мне каждый раз писать
Зачем? Определите какие-нибудь >>R или R>> . Если Вы делаете что-то новое - придумывайте новые слова! Не старайтесь заранее предугадать все возможные случаи применения Вашего кода!
Сообщение Добавлено: Сб апр 01, 2017 10:53
  Заголовок сообщения:  Re: Полезные слова и идеи для Форта.  Ответить с цитатой
Цитата:
Так проще всего обработать символы, появляющиеся задом-наперед

Проще, согласен
Но касательно преобразования числа в строку это выглядит как использование бектрекинга вместо begin again
Можно, но также можно сделать и проще.

Цитата:
Пока хватает этих оснований

Когда делаю примитивы для своего форт-асма, делаю всё в 2-й системе.
Но и это слишком много. Лучше тетрадами мыслить типа 0101t1100

Цитата:
Предположим, необходимо определить группу констант
Будет ли более приятной такая запись?

Будет, и уже есть кстати в СПФ :)
Не помню кто в devel имеет такую наработку.
Иногда ей пользуюсь.

Цитата:
IMMEDIATE-слова могут при компиляции производить любые действия

И? мне каждый раз писать
Код:
... >R [ cell local-depth +! ]
?
Ошибки, батенька, приумножатся.
И перегружать тоже не красиво.
Сообщение Добавлено: Сб апр 01, 2017 10:40
  Заголовок сообщения:  Re: Полезные слова и идеи для Форта.  Ответить с цитатой
P.S.
Kopa писал(а):
Не найдя подходящего топика создал новый для обсуждения.
Вообще, раздел вредный. В FORTH нет полезных слов (и, тем более, полезных идей "уровня слов").

Ибо сказано:
Мур писал(а):
Основной Принцип имеет следствие:
НЕ ПРЕДПОЛАГАЙТЕ!
Не пишите код, который может пригодиться когда-то в будущем. Не оставляйте заплаток для будущих расширений. Вещей, которые вы можете захотеть сделать, бесконечное множество; это означает, что каждая из них имеет нулевую вероятности осуществления. Если вам что-то понадобится позже, вы это и запрограммируете позже - и, вероятно, лучше, чем сделали бы это теперь. И если кто-нибудь будет расширять вашу программу, он заметит оставленные вами для этого заплатки? Все ли из них вы аккуратно задокументируете?
Сообщение Добавлено: Сб апр 01, 2017 10:02
  Заголовок сообщения:  Re: Полезные слова и идеи для Форта.  Ответить с цитатой
vpn289 писал(а):
Будет ли более приятной такая запись?

1. Число почти одинаковых строк большее числа различий между ними - очевиднейший порок программирования. Резко возрастает число ошибок. Ухудшается читаемость/запоминаемость.
2. Константа - это крайний случай: мол, я ввел сущность, но что она делает, не знаю. В FORTH, где "все что-то делает", константы по большей части избыточны.
3. Подобные блоки лучше разбивать на части комментариями: "а теперь - те", "затем - эти", "чуть не забыли об остатке"... Если эти комментарии будут, заодно что-то делать (группировать, размещать, изменять семантику) - идеально.
Сообщение Добавлено: Пт мар 31, 2017 23:45
  Заголовок сообщения:  Re: Полезные слова и идеи для Форта.  Ответить с цитатой
Предположим, необходимо определить группу констант
Код:
1 CONSTANT one
2 CONSTANT two
3 CONSTANT three
....
100 CONSTANT hundred


Будет ли более приятной такая запись?
Код:
Constants{
1 one 
2 two
3 three
....
100 hundred
}Constants


Этот подход, безусловно, распространяется на блоки любых однотипных определений:
Код:
1-reg-instructions{
0x04  abs   
0x00  acr   
0x09  brev   
.....
0x0B  swap.b   
0x0C  swap.bh   
0x0A  swap.h   
0x0E  tnbz   
}1-reg-instructions
Сообщение Добавлено: Пт мар 31, 2017 23:29

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


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