Forth http://fforum.winglion.ru/ |
|
расширенные операторами стековые манипуляторы http://fforum.winglion.ru/viewtopic.php?f=2&t=2740 |
Страница 22 из 27 |
Автор: | chess [ Сб июн 02, 2012 22:06 ] |
Заголовок сообщения: | Re: расширенные операторами стековые манипуляторы |
Хищник писал(а): Надо ли ожидать еще одной технологии, призванной разрешить эту важную проблему? Весь процесс решения задач с помощью выч. систем это дрейф в направлении сближения языка мышления с языками управления. Вектор направления этого движения четко просматривается. Загоняется сложность задач в модели из большого набора сложных, но постоянных объектов и оперируем на каждом этапе решения небольшим количеством этих объектов(назовем это методом 'гуманистического' перераспределения сложности задачи). Реализации могут отражать какие-то личные предпочтения авторов(вкус, цвет...) |
Автор: | chess [ Пн июн 04, 2012 15:48 ] |
Заголовок сообщения: | Re: расширенные операторами стековые манипуляторы |
chess писал(а): Язык мышления определяется информационным устройством человека, поэтому и устройство языка управления должно определяться информационным устройством человека, а не компьютера. Тут надо уточнить, что устройство языка управления должно определяться информационным устройством человека в первую очередь, и лишь во вторую очередь должно определяться устройством компьютера. В компьютере основное на сегодняшний момент это его вычислительная структура и связанная с ней структура памяти, на базе которых с помощью языка управления должны строиться модели алгоритмов языка мышления. Ориентация на компьютер в языках управления на сегодня худо-бедно отработана, а вот основное - ориентация на устройство человека, до сих пор, нет. Основное, что касается восполнения пробела в этой части, это разработка методов профилирования сложности решаемых задач под решения человека и автоматизация этого процесса. К примеру, раньше процедуру извлечения кубического корня могли делать только продвинутые математики, а теперь понятно, что этому можно было бы научить и ребенка. На начальном этапе из языка нужно выкинуть все, что мешает профилированию сложности задач под человека и добавить то, что как уже видно такому профилированию способствует. К примеру для Форта, выбросить эквилибристику на стеке, списки порядка поиска, флаг IMMEDIATE и тп., добавить концепцию локального словаря(локальные слова), ввести универсальное представление для данных и кода и тп. |
Автор: | chess [ Чт июн 14, 2012 12:53 ] |
Заголовок сообщения: | Re: расширенные операторами стековые манипуляторы |
Манипуляторы даже при малом количестве параметров могут быть очень большими, и при этом требуемый объем оперативного внимания остается в допуске. Но 'видеобуфер' перестает помогать при длинной строке манипулятора. Для разбивки одного манипулятора на куски, которые могут быть размещены в нескольких строках, а не в одной можно склеивать куски манипулятора через символ склеивания. В данном случае пусть это будет символ '?'. Демонстрационный пример реализации такого склеивания: Код: \ Склеивание нескольких лексем в одну через суффикс склеивания лог компиляцииUSER-VALUE dps 0 TO dps USER-CREATE bufs 1024 USER-ALLOT USER-VALUE pr? 0 TO pr? : NOTFOUND ( a u ) u! a! a u + 1- C@ '?' = DUP TO pr? IF a bufs dps + u 1- MOVE dps u 1- + TO dps ELSE pr? 0= IF a bufs dps + u MOVE dps u + TO dps bufs dps TYPE CR 0 TO dps 0 TO pr? THEN THEN ; STARTLOG : s ttt? rrr? yyy 666? www ppp ; Код: tttrrryyy
666www ppp Ok |
Автор: | chess [ Пт июн 22, 2012 13:56 ] |
Заголовок сообщения: | Re: расширенные операторами стековые манипуляторы |
Реализовал возможность разрывать манипуляторы с помощью суффикса '?': ( https://github.com/chess2007/-chess/blob/master/LIB/manipulators.spf ) Код: USER-VALUE dpstr 0 TO dpstr USER-CREATE buffstr 1024 USER-ALLOT USER-VALUE flsym? 0 TO flsym? : NOTFOUND ( a u ) u! a! a u + 1- C@ '?' = IF a buffstr dpstr + u 1- MOVE dpstr u 1- + TO dpstr 1 TO flsym? ELSE flsym? IF a buffstr dpstr + u MOVE dpstr u + TO dpstr buffstr dpstr NOTFOUND 0 TO dpstr EXIT ELSE a u NOTFOUND 0 TO flsym? EXIT THEN THEN ; Тестовая задачка для проверки: Реализация быстрой сортировки массива байтов Код: quicksortbytes: ( a u -- a u ) 1024 acb] \ создание массива счетчиков байтов acb 1024 4/23+2D`0IwL? \ обнуление массива счетчиков байтов 01+0DIb`4*2+[1+!]L? \ заполнение массива счетчиков байтов 0'4!23+2DI@`0GJ2-`4/4w4`1+'4!L`4N01 ; \ запись отсортированных байт в исходный массив \ EOF T: arrb 34334547667dfsfgjh54356rtrtrfuyyuihGHDRFGDRTgfghfggf2122fdrtetreghdfhg354asdfdfd 7667dfsfgjh54356rtrtrfuyyopihjdjl;jy674597987986764rrdfjfgjhhojhokl-0=9=-9978655 fseghgujlklp9t67rupop]oopu78t5r56tuiop[opouiut6r56er56r6tyu0u09ii90u89y78ty78t87 guytuyguytyftrrt674547gjhjkuyfTGGYGIRTTRWErfygukhlkjopjuiotertrwetrfiuyouuuyt567 iuguiguyyrf354355476587698ygjhffsddfvbvnmlkopikpujkughuyrtgjhoiytuyguhuihiut6878 ; STARTLOG arrb quicksortbytes TYPE tst: arrb quicksortbytes ; METER0 tst log Код: --00001222333333334444444444445555555555555555555666666666666666666666777777777777777 7777788888888888899999999999;==DDEFGGGGGHIRRRRTTTTWY[]abdddddddddddeeeeeeffffffffffffffff ffffffffggggggggggggggggggggghhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiijjjjjjjjjjjjjjjjkkkkkkkkllll llmnoooooooooooooopppppppppprrrrrrrrrrrrrrrrrrrrrrrsssssttttttttttttttttttttttttuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuuuvvwyyyyyyyyyyyyyyyyyyyyyy 8025 nsec Ok ps. 8 мксек для моего Core 2 Duo 3.00 GHz, это быстро. |
Автор: | Alex [ Пт июн 22, 2012 18:24 ] |
Заголовок сообщения: | Re: расширенные операторами стековые манипуляторы |
chess писал(а): Для разбивки одного манипулятора на куски, которые могут быть размещены в нескольких строках, а не в одной В моей версии подобную функцию могут выполнять м-блоки ( группа символов терминируемая символом _ )можно склеивать куски манипулятора через символ склеивания. В данном случае пусть это будет символ '?'. разница в том, что у Вас части собираются вместе через буфер и далее интерпретируются как единый манипулятор, а у меня каждый м-блок интерпретируется независимо как манипулятор. |
Автор: | VoidVolker [ Пт июн 22, 2012 18:36 ] |
Заголовок сообщения: | Re: расширенные операторами стековые манипуляторы |
Что-то мне подсказывает, что идея стековых манипуляторов зашла слишком далеко и их сложность слишком велика для практического применения. Зачем вся эта сложность? Какие она дает преимущества перед обычной записью словами? |
Автор: | WingLion [ Пт июн 22, 2012 19:10 ] |
Заголовок сообщения: | Re: расширенные операторами стековые манипуляторы |
chess писал(а): 34334547667dfsfgjh54356rtrtrfuyyuihGHDRFGDRTgfghfggf2122fdrtetreghdfhg354asdfdfd 7667dfsfgjh54356rtrtrfuyyopihjdjl;jy674597987986764rrdfjfgjhhojhokl-0=9=-9978655 fseghgujlklp9t67rupop]oopu78t5r56tuiop[opouiut6r56er56r6tyu0u09ii90u89y78ty78t87 guytuyguytyftrrt674547gjhjkuyfTGGYGIRTTRWErfygukhlkjopjuiotertrwetrfiuyouuuyt567 iuguiguyyrf354355476587698ygjhffsddfvbvnmlkopikpujkughuyrtgjhoiytuyguhuihiut6878 Осталось написать форт-систему одним 8-килобайтным стековым манипулятором... |
Автор: | Antender [ Пт июн 22, 2012 19:33 ] |
Заголовок сообщения: | Re: расширенные операторами стековые манипуляторы |
Если в самом начале реализация стековых манипуляторов удобней казалась чем написание тех же действий словами,то теперь выглядит как инопланетный язык. |
Автор: | вопрос [ Пт июн 22, 2012 22:03 ] |
Заголовок сообщения: | Re: расширенные операторами стековые манипуляторы |
Цитата: Реализовал возможность разрывать манипуляторы с помощью суффикса '?' Но ведь вначале была цель получить наглядные, те, которые видны одним взглядом? |
Автор: | vikt [ Вс июн 24, 2012 05:11 ] |
Заголовок сообщения: | Re: расширенные операторами стековые манипуляторы |
Только сейчас сообразил, довольно удобно ввоодить программы в форт для мобильных телефонов. Попробую реализовать основные операции стековых манипуляторов. |
Автор: | Alex [ Вс июн 24, 2012 18:25 ] |
Заголовок сообщения: | Re: расширенные операторами стековые манипуляторы |
VoidVolker писал(а): Зачем вся эта сложность? Какие она дает преимущества перед обычной записью словами? да читать немного сложно, нужно внимание и концентрация. При некоторомнавыке и опыте записи манипуляторов облегчается чтение, глазу уже видны штампы и клише. При записи манипулятора иногда попадаешь в "поток" (chess а как часто у Вас это получается?) экономная выборка ячеек манипулятора (1 символ) + краткая запись операции (1-2 символа) позволяет писать программу символ за символом, не отвлекаясь на группировку и перемещения слов, нет нужды в копи-пасте. Скорость записи манипулятора высока и позволяет фиксировать мысль (алгоритм,программу) в соответствии с ее временным течением и разворачиванием. Я пару раз попадал в "поток" и получил позитивные и приятные ощущения, можно сказать поймал кайф. WingLion писал(а): chess писал(а): 34334547667dfsfgjh54356rtrtrfuyyuihGHDRFGDRTgfghfggf2122fdrtetreghdfhg354asdfdfd 7667dfsfgjh54356rtrtrfuyyopihjdjl;jy674597987986764rrdfjfgjhhojhokl-0=9=-9978655 fseghgujlklp9t67rupop]oopu78t5r56tuiop[opouiut6r56er56r6tyu0u09ii90u89y78ty78t87 guytuyguytyftrrt674547gjhjkuyfTGGYGIRTTRWErfygukhlkjopjuiotertrwetrfiuyouuuyt567 iuguiguyyrf354355476587698ygjhffsddfvbvnmlkopikpujkughuyrtgjhoiytuyguhuihiut6878 vikt писал(а): Попробую реализовать основные операции стековых манипуляторов. Удачи и успеха!
|
Автор: | Hishnik [ Вс июн 24, 2012 20:52 ] |
Заголовок сообщения: | Re: расширенные операторами стековые манипуляторы |
Alex писал(а): Это же несортированный входной массив, а манипулятор чуть выше Ну, еще не вечер! |
Автор: | Alex [ Вт июн 26, 2012 18:32 ] |
Заголовок сообщения: | Re: расширенные операторами стековые манипуляторы |
Хищник писал(а): Alex писал(а): Это же несортированный входной массив, а манипулятор чуть выше Ну, еще не вечер! да в каждой шутке есть только доля шутки. не хотелось бы чтобы манипулятор превращался в случайный набор несортированных букв, Вот тут я думаю тоже есть доля шутки Чем лучше читабельность, тем хуже усваивается текст |
Автор: | chess [ Пн июл 16, 2012 15:31 ] |
Заголовок сообщения: | Re: расширенные операторами стековые манипуляторы |
Alex писал(а): В моей версии подобную функцию могут выполнять м-блоки ( группа символов терминируемая символом _ ) Для визуальной совместимости заменил суффикс '?' на '_'. вопрос писал(а): Но ведь вначале была цель получить наглядные, те, которые видны одним взглядом? Ну так эта цель и осталась. Когда манипулятор становится длинным, то видеобуфер перестает работать(манипулятор не укладывается весь в "поле зрения", которое и есть видеобуфер). Текущая мысленная картинка перестает опираться на видимую картинку и темп набивания текста программы одним пальцем снижается. Поле зрения оно где-то, наверное, ближе к квадратному, поэтому делим манипулятор на части, которые располагаем одна под другой. Alex писал(а): При записи манипулятора иногда попадаешь в "поток" (chess а как часто у Вас это получается?) экономная выборка ячеек манипулятора (1 символ) + краткая запись операции (1-2 символа) позволяет писать программу символ за символом, не отвлекаясь на группировку и перемещения слов, нет нужды в копи-пасте. Скорость записи манипулятора высока и позволяет фиксировать мысль (алгоритм,программу) в соответствии с ее временным течением и разворачиванием. Я пару раз попадал в "поток" и получил позитивные и приятные ощущения, можно сказать поймал кайф. Если алгоритм представляю четко, то в "поток" попадаю всегда. Но все-таки манипуляторы это только технологический прием, который эффективен в сочетании с другими средствами ( фортом, лок. словами, ассемблером и тп ). |
Автор: | Alex [ Чт дек 20, 2012 13:19 ] |
Заголовок сообщения: | Re: расширенные операторами стековые манипуляторы |
уважаемый chess растолкуйте мне один моментик, ранее я полагал ( читал ) стековый манипулятор 1 2 3 3\ так -- положить в ячейку номер 1 значение 1, в ячейку 2 значение 2, в ячейку 3 значение 3. В последних постах параллельной темы я увидел, что сейчас у Вас это трактуется так 1 2 3 3\ -- положить значение 1 в ячейку 0, значение 2 в ячейку 1 значенние 3 в ячейку 2. Да раньше мы не могли загрузить ячейку 0 напрямую, так как задействован спец. случай - манипуляторы начинающиеся с 0\ и 0| не берут параметров со стека. сейчас в новой нотации ( индексации ) мы не можем загрузить ячейку 9 напрямую. так ли это? а то надо будет переделать в своей реализации этот момент. и еще прошу Вас зарезервировать за мной набор 'd* команд. |
Страница 22 из 27 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |