Forth http://fforum.winglion.ru/ |
|
Полезные слова и идеи для Форта. http://fforum.winglion.ru/viewtopic.php?f=2&t=678 |
Страница 6 из 6 |
Автор: | Victor__v [ Сб апр 01, 2017 10:40 ] |
Заголовок сообщения: | Re: Полезные слова и идеи для Форта. |
Цитата: Так проще всего обработать символы, появляющиеся задом-наперед Проще, согласен Но касательно преобразования числа в строку это выглядит как использование бектрекинга вместо begin again Можно, но также можно сделать и проще. Цитата: Пока хватает этих оснований Когда делаю примитивы для своего форт-асма, делаю всё в 2-й системе. Но и это слишком много. Лучше тетрадами мыслить типа 0101t1100 Цитата: Предположим, необходимо определить группу констант Будет ли более приятной такая запись? Будет, и уже есть кстати в СПФ Не помню кто в devel имеет такую наработку. Иногда ей пользуюсь. Цитата: IMMEDIATE-слова могут при компиляции производить любые действия И? мне каждый раз писать Код: ... >R [ cell local-depth +! ] ?Ошибки, батенька, приумножатся. И перегружать тоже не красиво. |
Автор: | gudleifr [ Сб апр 01, 2017 10:53 ] |
Заголовок сообщения: | Re: Полезные слова и идеи для Форта. |
Victor__v писал(а): Можно, но также можно сделать и проще. Например?gudleifr писал(а): И? мне каждый раз писать Зачем? Определите какие-нибудь >>R или R>> . Если Вы делаете что-то новое - придумывайте новые слова! Не старайтесь заранее предугадать все возможные случаи применения Вашего кода!
|
Автор: | vpn289 [ Сб апр 01, 2017 12:41 ] |
Заголовок сообщения: | 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 |
Автор: | gudleifr [ Сб апр 01, 2017 13:55 ] |
Заголовок сообщения: | Re: Полезные слова и идеи для Форта. |
vpn289 писал(а): ... Добавлять в программу "структурность" путем использования запрещенного в структурном программировании приема? "Либо крестик снимите, либо трусы наденьте".
|
Автор: | vpn289 [ Сб апр 01, 2017 14:25 ] |
Заголовок сообщения: | Re: Полезные слова и идеи для Форта. |
Ха! Много раз. "Это Форт, кто мне запретит?" |
Автор: | gudleifr [ Сб апр 01, 2017 14:42 ] |
Заголовок сообщения: | Re: Полезные слова и идеи для Форта. |
vpn289 писал(а): Ха! Много раз. "Это Форт, кто мне запретит?" Никто, "мы живем в свободной стране".
|
Автор: | Victor__v [ Вт апр 04, 2017 13:33 ] |
Заголовок сообщения: | Re: Полезные слова и идеи для Форта. |
Цитата: Зачем? Определите какие-нибудь >>R или R>> Опять расширение пространства для ошибок. Да ещё помнить, а есть ли здесь лок.переменные. Доп.нагрузка на память программиста, оно надо? Цитата: Если Вы делаете что-то новое - придумывайте новые слова А тут не делание чего-то нового, тут совместимость нового с уже имеющимся. Немножко другой аспект. И всё же интересно мнение участников форума по поводу навешивания обработчиков на слова. |
Автор: | gudleifr [ Вт апр 04, 2017 14:01 ] |
Заголовок сообщения: | Re: Полезные слова и идеи для Форта. |
Victor__v писал(а): Опять расширение пространства для ошибок. Наоборот. Вы реализуете никому не нужные локальные переменные. Затем - изобретаете механизм их сокрытия. Т.е. на момент написания пользовательской программы два мощных источника ошибок уже "на борту" без всякого желания (и даже уведомления) пользователя.Victor__v писал(а): А тут не делание чего-то нового, тут совместимость нового с уже имеющимся. В FORTH не должно быть ничего имеющегося. Все должно писаться с нуля.Victor__v писал(а): И всё же интересно мнение участников форума по поводу навешивания обработчиков на слова. Видимо, просто никто не понял, что имеется в виду.
|
Автор: | Victor__v [ Вт апр 04, 2017 15:08 ] |
Заголовок сообщения: | Re: Полезные слова и идеи для Форта. |
Цитата: Наоборот. Вы реализуете никому не нужные локальные переменные Судя по кол-ву реализаций всё-таки нужные некоторым людям в т.ч. мне Цитата: Затем - изобретаете механизм их сокрытия Сокрытия от чего? Это механизм для корректности операций. Цитата: без всякого желания (и даже уведомления) пользователя. Зачем уведомлять пользователя об имеющихся механизмах? Для понта? Вот я такой крутой, у меня на С++ множественное наследование класса job? Конечного пользователя вообще не интересует всё фичи и как написано. Лишь бы работало без сбоев. |
Автор: | gudleifr [ Вт апр 04, 2017 15:30 ] |
Заголовок сообщения: | Re: Полезные слова и идеи для Форта. |
Victor__v писал(а): Судя по кол-ву реализаций... ... можно только констатировать детскую болезнь забивания гвоздей транзисторным приемником. Вам дали механизм для создания новых языков, а Вы стремитесь написать "еще один C++", чтобы на уже нем "писать всерьез". Как обычно: вместо писания того, что надо, пишем то, что легко написать. Кстати "количество реализаций" как раз и свидетельствует о низком уровне реализаторов.Victor__v писал(а): нужные некоторым людям в т.ч. мне В том-то и дело, что еще никому здесь не удалось придумать полезное применение этой фигне. Все время находились более простые FORTH-способы.Victor__v писал(а): Это механизм для корректности операций. В FORTH нет понятия корректности операции.Victor__v писал(а): Зачем уведомлять пользователя об имеющихся механизмах? В смысле: нагадим в подъезде и вывернем лампочку?
|
Автор: | Hishnik [ Вт апр 04, 2017 17:55 ] |
Заголовок сообщения: | Re: Полезные слова и идеи для Форта. |
Victor__v писал(а): Зачем формировать строку из числа в паде если без этого можно обойтись? Конечно, отладочные слова прорабатываются в последнюю очередь, но всё же... Разумеется. К сожалению, "так у Мура" частенько принимается за признак какой-то элитарности и мистического тайного смысла. Алгоритмы печати чисел вполне известны, можно пользоваться любым. Victor__v писал(а): И ещё хочется обсудить идею навешивания обработчиков на слова. Основной посыл таков: иногда требуется связать компиляцию слова с некоторым доп.действием. К примеру, поддержка лок.переменных при использовании операций >R R> 2>R 2R> и пр Хорошее дело. Обработчики, как говорится, лежат и каши не просят. Хорош сам подход, когда то, что можно сделать средствами Форта (и при этом несложно), делается именно средствами Форта и потом, а то, что требует вмешательства в движок, предусматривается заранее. Причем я не конкретно в защиту локальных переменных в таком качестве, а просто про факт обеспечения способа расширения функциональности. |
Автор: | gudleifr [ Вт апр 04, 2017 18:11 ] |
Заголовок сообщения: | Re: Полезные слова и идеи для Форта. |
Hishnik писал(а): Разумеется. К сожалению, "так у Мура"... А у кого иначе?
|
Страница 6 из 6 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |