Forth
http://www.fforum.winglion.ru/

QUARK-ую
http://www.fforum.winglion.ru/viewtopic.php?f=23&t=2907
Страница 4 из 5

Автор:  gudleifr [ Пт сен 09, 2016 13:34 ]
Заголовок сообщения:  Re: QUARK-ую

Victor__v писал(а):
Иногда делаю слова-карманы внутри слов.
Принцип FORTH прост: слово - это единица размышления/действия. Не нужно стремиться изобретать какие-то универсальные парадигмы. Просто записывайте задачу так, как ее видите. Например, я уже показывал коллеге, как решается задача про прямоугольник. Тупо рисуем линии (немного изменил решение для большей читаемости):

: 2DELTA 2OVER D- ;
: 4DUP 2OVER 2OVER ;
: -TOP DROP ;
: -LEFT NIP ;
: -BOTTOM SWAP >R + R> ;
: -RIGHT >R 0 D+ R> ;
: SAVE- COMPILE 4DUP ' , COMPILE R@ ; IMMEDIATE
: BOX ( X1,Y1,X2,Y2,COLOR--) >R 2DELTA
SAVE- -TOP HLINE SAVE- -LEFT VLINE
SAVE- -BOTTOM HLINE -RIGHT R> VLINE ;

Много лишних слов? Но они позволяют понять код даже через несколько лет. Причем, заметьте, присутствие очевидных -LEFT и -TOP позволяет обойтись без стековых комментариев в аналогичных -BOTTOM и -RIGHT. (А вспомнить, что Вы положили 3 года назад в "карман", Вам поможет только изощренный комментарий).

Экономить на определениях не стоит - FORTH слишком тормозной и требует слишком много памяти. Зато он позволяет писать быстро и коротко. И, как следствие, хорошо написанные программы выполняются быстро и требуют мало памяти. Выигрыш не во внутреннем супер-механизме, а в тупой экономии мозгов.

P.S. Здесь я проиллюстрировал важный принцип - в FORTH слова, упаковывающие в себе функциональность неких констант (в т.ч. адресных, т.е., переменных), гораздо удобнее "просто констант".

P.P.S. Но, все равно, главный недостаток данной программы остался неустраненным - 4 практически одинаковых кусочка кода - "параметры xLINE". Это завсегда источник ошибок (я даже сначала перепутал имена -TOP и -LEFT, причем смысл-то остался верным). Очевидно, слова, рисующие "от последней позиции" здесь были бы удобнее.

Автор:  Hishnik [ Пт сен 09, 2016 14:01 ]
Заголовок сообщения:  Re: QUARK-ую

Victor__v писал(а):
[ dup lit, ]
r> ['] throw >r ['] free >r >r
['] ] >r
[ ret, swap dp ! execute

1. Насколько это понятно усредненному программисту?
2. Насколько с этим удобно постоянно работать?
Вопросы риторические. В целом - на очень малую величину. Ведь в других языках как-то организованы локальные объявления, правильно? Если в Форте предлагается организовывать с массой сильно связанных и редко используемых слов, то это не облегчение работы, а дополнительная точка отладки и проверки. Я бы при взгляде на все это и не стал такое часто использовать.

Автор:  KPG [ Пт сен 09, 2016 18:02 ]
Заголовок сообщения:  Re: QUARK-ую

gudleifr писал(а):
P.P.S. Но, все равно, главный недостаток данной программы остался неустраненным - 4 практически одинаковых кусочка кода

Поправьте,
но посты gudleifr навевают мысли о засланном казачке :)

P.S. Может это его эго и роль на местном и других Форт форумах?
Вроде и тема Форта у него набила оскомину, но что то не отпукскает.
Форт - такой как есть, и каждый вправе его применять так как он его понимает!

Автор:  Victor__v [ Пт сен 09, 2016 18:36 ]
Заголовок сообщения:  Re: QUARK-ую

Hishnik писал(а):
Victor__v писал(а):
[ dup lit, ]
r> ['] throw >r ['] free >r >r
['] ] >r
[ ret, swap dp ! execute

1. Насколько это понятно усредненному программисту?
2. Насколько с этим удобно постоянно работать?
Вопросы риторические. В целом - на очень малую величину. Ведь в других языках как-то организованы локальные объявления, правильно? Если в Форте предлагается организовывать с массой сильно связанных и редко используемых слов, то это не облегчение работы, а дополнительная точка отладки и проверки. Я бы при взгляде на все это и не стал такое часто использовать.


Ну так это можно разбить на три части
Начало, сам код, конец.
Будет понятней. Завести соответствующие слова и всё будет чики-пуки :D
Частота использования зависит от нужд и характера программиста.
Я вообще смесь хомяка и разведчика.
Часть моих наработок для форта "вообще в нём не отсвечивает" Мол, есть, но без ИК хрен поймёшь как сделано.
Да и жаба давит по поводу памяти. Тот же стек возвратов. размер где-то мегабайт. Используется, дай бог, тысяча или две ячеек. А с остальным что делать? Что добру пропадать 8)

Автор:  gudleifr [ Пт сен 09, 2016 19:26 ]
Заголовок сообщения:  Re: QUARK-ую

Victor__v писал(а):
Я вообще смесь хомяка и разведчика.
Это лечится. Достаточно написать свой FORTH и посмотреть, что сколько весит и где удобнее живет.

Автор:  Hishnik [ Сб сен 10, 2016 05:39 ]
Заголовок сообщения:  Re: QUARK-ую

KPG писал(а):
но посты gudleifr навевают мысли о засланном казачке

У меня навевают мысли о человеке, который считает, что его сильно недооценивают и для компенсации неудовлетворенности жизнью создает себе виртуальный мирок, в котором он эксперт. Поскольку создавать такой мирок в голове чревато последствиями, для сохранения психического здоровья создается куча сообщений на форумах, в которых развенчиваются придуманные кем-то глупости. В силу специфики данного личностного состояния диалог бессмысленен. Вне зависимости от фактической правоты или неправоты по конкретным вопросам конечной целью является вывод "вы все неграмотные".

Автор:  Hishnik [ Сб сен 10, 2016 05:41 ]
Заголовок сообщения:  Re: QUARK-ую

Victor__v писал(а):
Ну так это можно разбить на три части
Начало, сам код, конец.

Можно делать по-всякому. Выше я показал три примера кода. Действительно, кому как удобно. Мне удобно, когда локальные объявления выглядят именно как локальные объявления, а механизм их реализации упрятан глубоко, чтобы не заставлять при написании программ вспоминать правильный порядок действий.

Автор:  gudleifr [ Сб сен 10, 2016 10:27 ]
Заголовок сообщения:  Re: QUARK-ую

Hishnik писал(а):
для компенсации неудовлетворенности жизнью создает себе виртуальный мирок
В данном случае "мирок" уже создан до меня. Называется "Форум".
Hishnik писал(а):
для сохранения психического здоровья
Нет, в чисто контактных целях. Вдруг программист зайдет? Да и, как заметил один наш общий знакомый тролль, оживление на Форуме вызывает хоть какой-то интерес к FORTH в Сети. Не хотите выкладывать свои статьи - миритесь с кухонными разборками желающих выложить свои.
Hishnik писал(а):
Вне зависимости от фактической правоты или неправоты
Без комментариев.

P.S. Самое обидное, что у меня куча накопилась куча вопросов, требующих обсуждения, но любая попытка его начать скатывается в спор о терминах с последующим переходом на личности. Я никого не хочу поучать. Меня интересуют ответы. Но здесь всегда отвечают вопросом на вопрос.

P.P.S. И еще один наш коллега понял, что единственный разумный способ использовать эту площадку - потихоньку бложить.

P.P.P.S. И опять скатился в ликбез. Но, ведь, это очевидно?

Автор:  diver [ Сб сен 10, 2016 20:06 ]
Заголовок сообщения:  Re: QUARK-ую

Что-то вы устали уже флудить....многие из...

вопрос по делу - встроенная генерация случайных чисел есть?

Автор:  Hishnik [ Сб сен 10, 2016 20:23 ]
Заголовок сообщения:  Re: QUARK-ую

diver писал(а):
вопрос по делу - встроенная генерация случайных чисел есть?

Есть RND и RANDOM. Кто из них переменная, а кто слово, возвращающее очередное значение (с обновлением переменной), уже забыл. :)

Автор:  diver [ Вс сен 11, 2016 18:11 ]
Заголовок сообщения:  Re: QUARK-ую

Hishnik писал(а):
diver писал(а):
вопрос по делу - встроенная генерация случайных чисел есть?

Есть RND и RANDOM. Кто из них переменная, а кто слово, возвращающее очередное значение (с обновлением переменной), уже забыл. :)


ага... RANDOM - возвращает случайное значение (видимо, из диапазона 0...2^32-1), оно же пишется по адресу RND

Автор:  F-MAP [ Вс сен 11, 2016 22:34 ]
Заголовок сообщения:  Re: QUARK-ую

Может не в тему, зачем нужен генератор? не проще же использовать системный
WINAPI: CoCreateGuid OLE32.DLL

Автор:  Hishnik [ Вс сен 11, 2016 23:01 ]
Заголовок сообщения:  Re: QUARK-ую

F-MAP писал(а):
Может не в тему, зачем нужен генератор? не проще же использовать системный
WINAPI: CoCreateGuid OLE32.DLL

Есть разные алгоритмы, в том числе и встроенные. Я реализовал один из описанных Кнутом, когда самый простой меня не устроил из-за видимых глазом регулярностей в одной из программ.

Автор:  diver [ Чт сен 15, 2016 18:16 ]
Заголовок сообщения:  Re: QUARK-ую

а вот тут еще вопрос возник - при интерпретации файла буфер строки какого размера?

Автор:  Hishnik [ Чт сен 15, 2016 18:25 ]
Заголовок сообщения:  Re: QUARK-ую

diver писал(а):
а вот тут еще вопрос возник - при интерпретации файла буфер строки какого размера?

256. Надо больше?

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