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. Насколько с этим удобно постоянно работать? Вопросы риторические. В целом - на очень малую величину. Ведь в других языках как-то организованы локальные объявления, правильно? Если в Форте предлагается организовывать с массой сильно связанных и редко используемых слов, то это не облегчение работы, а дополнительная точка отладки и проверки. Я бы при взгляде на все это и не стал такое часто использовать. Ну так это можно разбить на три части Начало, сам код, конец. Будет понятней. Завести соответствующие слова и всё будет чики-пуки Частота использования зависит от нужд и характера программиста. Я вообще смесь хомяка и разведчика. Часть моих наработок для форта "вообще в нём не отсвечивает" Мол, есть, но без ИК хрен поймёшь как сделано. Да и жаба давит по поводу памяти. Тот же стек возвратов. размер где-то мегабайт. Используется, дай бог, тысяча или две ячеек. А с остальным что делать? Что добру пропадать |
Автор: | 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/ |