Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 01:19

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: цветные стековые манипуляторы
СообщениеДобавлено: Вс мар 29, 2015 20:24 
Не в сети

Зарегистрирован: Ср июл 05, 2006 14:44
Сообщения: 236
Благодарил (а): 0 раз.
Поблагодарили: 7 раз.
предлагаю вниманию цветной вариант манипуляторов. попытался использовать цвет
и юникоды символы для записи манипуляторов, с целью избежать префиксов, забеганий
вперед и механизма NOTFOUND. Нет генерации кода из манипулятора, есть преобразование
из манипуляторной формы записи текста в обычный форт-текст, который можно
использовать почти в любой форт-системе.

для зкспериментов надо запустить два приложения веб-сервер и браузер (хром).
веб-сервер немного переделанный сервер от ~day, csm80.exe слушает на 80 порту,
а если он занят можно использовать csm86.exe для 86 порта или поправить на
необходимый в csmserver.f и скомпилировать.

в браузере открыть страничку localhost (или localhost:86)
используется покоцаный по цветовой палитре и минимизированным меню веб-редактор wysiwyg.js
(http://wysiwygjs.github.io/ https://github.com/wysiwygjs/wysiwyg.js)
контекстное меню вызывается при выделении текста и при клике правой кнопкой.
действуют копи/паста (ctrl+C/ctrl+V), перемещения выделенного блока мышкой.
выделенный текст перетаскивается (копируется) и между вкладками браузера.
Иногда наблюдаются артефакты с изменением размера шрифта, пробуйте откатиться
назад с помощью ctrl+Z. open/save открыть/сохранить текст в файл, code -
преобразовать манипулятор в чистый форт-текст, здесь надо внимательно, перед
преобразованием текст сохраняется автоматически в файл и повторное нажатие code
(два раза подряд) приведет к потере исходного манипулятора.

Для структур ветвления и циклов используется набор юникод символов в виде
кружков с латинскими буквами внутри (аналогия - дорожные знаки), цвета для
этих символов тоже задействованы светофорные.
Все правила преобразования в файле makecode.f и можно добавить либо изменить
что-либо в нем и не перезагружая веб-сервер, командой в его консоли
makecode.f загрузить изменения и сразу протестировать.
Для выполнения полученного кода надо подключить файл csm-var.f или csm-usr.f
можно определения не используемых переменных и векторов выкинуть.
Думаю хорошо продуманный и факторизированный код будет напоминать хайку.
удачного хайкинга!


Вложения:
csm.rar [474.02 Кб]
Скачиваний: 811


Последний раз редактировалось Alex Чт апр 09, 2015 20:41, всего редактировалось 3 раз(а).
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: цветные стековые манипуляторы
СообщениеДобавлено: Пн мар 30, 2015 12:02 
Ну, то что на FORTH можно писать языки - не новость. Пусть, даже, эзотерические и системно-зависимым способом.
Но, вопрос о применимости манипуляторов как был подвешен, так и висит.
Кто-нибудь написал на них хоть что-то, кроме специально придуманных арифметических примеров?


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: цветные стековые манипуляторы
СообщениеДобавлено: Пн мар 30, 2015 15:44 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Ср дек 06, 2006 09:23
Сообщения: 660
Благодарил (а): 7 раз.
Поблагодарили: 25 раз.
весна....все расцветает..... :roll:


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: цветные стековые манипуляторы
СообщениеДобавлено: Пн мар 30, 2015 16:49 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
То есть все свелось к тому, что из манипуляторов опять получается форт-текст? Тогда какую задачу решали манипуляторы?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: цветные стековые манипуляторы
СообщениеДобавлено: Пн мар 30, 2015 17:15 
Hishnik писал(а):
Тогда какую задачу решали манипуляторы?
Боюсь, никакую. Ставилась лишь задача написания манипуляторов. И FORTH опять справился! Ура!


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: цветные стековые манипуляторы
СообщениеДобавлено: Вт мар 31, 2015 22:35 
Не в сети

Зарегистрирован: Ср июл 05, 2006 14:44
Сообщения: 236
Благодарил (а): 0 раз.
Поблагодарили: 7 раз.
разместил проект на гитхабе ( https://github.com/kgforth/csm ) , изменения:
a) цветные стековые манипуляторы сохраняются и открываются в/из директории csm.
b) при команде code исходный текст сохраняется в переменной, а при команде back
восстанавливается из переменной, файл не затрагивается.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: цветные стековые манипуляторы
СообщениеДобавлено: Сб апр 04, 2015 00:58 
Не в сети

Зарегистрирован: Ср июл 05, 2006 14:44
Сообщения: 236
Благодарил (а): 0 раз.
Поблагодарили: 7 раз.
сделал экспорт манипуляторов в BBcode для возможности публикации на форуме

пример из C.L.F. https://groups.google.com/forum/#!topic ... 8Dyp2z1Rfg

задача: given 3 numbers, produce the sum of the squares of the biggest 2 of 3

некоторые форт решения приведенные в теме:

Код:
: sumofsquare 2dup > if swap then over max dup * >r max dup * r> + ;

: sumofsquare 2dup > if swap then dup * >r max dup * r> + ;


: ?swap ( a b -- smaller bigger ) 2dup > if swap then ;
: 2biggest ( a b c -- n n ) ?swap >r ?swap nip r> ;
: ^2 ( n -- n ) dup * ;
: sos ( a b c -- n ) 2biggest ^2 swap ^2 + ;


: 2SORT 2DUP < IF SWAP THEN ;
: 2MAX 2SORT ROT 2SORT DROP ;
: SQSUM 2MAX DUP * SWAP DUP * + ;


: sqr ( a -- a^2 ) dup * ;
: suosq ( a b c -- d )
  sqr swap sqr rot sqr 3dup ( -- a^2 b^2 c^2 a^2 b^2 c^2 )
  + >r + r> max
    >r + r> max ;


: SQR ( a -- a^2 ) dup * ;
: suosq ( z y x -- a )
  2dup
  MAX SQR -rot ( -- z u^2 y x )
  MIN rot   
  MAX SQR + ;


: sq ( n -- n? ) dup * ;
: g ( a b c -- n )  2dup max sq >r min max sq r> + ;

: g { a b c -- d } b c max dup * b c min a max dup * + ;

на цветных манипуляторах:


mmax dup *; :g ( a b c -- n ) 2minm12m+;


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: цветные стековые манипуляторы
СообщениеДобавлено: Сб апр 04, 2015 01:06 
Пардон, повторю:
gudleifr писал(а):
Кто-нибудь написал на них хоть что-то, кроме специально придуманных арифметических примеров?


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: цветные стековые манипуляторы
СообщениеДобавлено: Сб апр 04, 2015 01:17 
Не в сети

Зарегистрирован: Ср июл 05, 2006 14:44
Сообщения: 236
Благодарил (а): 0 раз.
Поблагодарили: 7 раз.
Увы, нет. потому и молчу.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: цветные стековые манипуляторы
СообщениеДобавлено: Сб апр 04, 2015 10:59 
P.S.
Alex писал(а):
задача: given 3 numbers, produce the sum of the squares of the biggest 2 of 3

Это какая-то болезнь гольф-программирования.
Когда такая задача возникает в реальном программировании, практически никогда не возникает надобности ее оптимизировать (тогда проще ее сразу в коды перегнать. Кстати, понятнее будет). Гораздо чаще потребность будет в том, чтобы прикинуть, соответствует ли эта формула решению "большой задачи"? как ее контролировать? подправить, если надо? не забыть, зачем и как это сделано?
Например, так:
Код:
: КВАДРАТ ( n -- n2) DUP * ;
: КОТОРЫЙ ( x,y -- x,y|y,x) 2DUP < 0= IF SWAP THEN ;
: ОТЛОЖИМ ( x,y -- y2,x|x2,y) КОТОРЫЙ КВАДРАТ SWAP ;
: ИЗ-ТРЕХ ( x,y,z -- n) ОТЛОЖИМ ROT ОТЛОЖИМ DROP + ;

Т.е. разбиение задачи на минимальные осмысленные кусочки, а не желание сэкономить (которое наверняка обернется потерями часов и мегабайтов).


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: цветные стековые манипуляторы
СообщениеДобавлено: Вт апр 07, 2015 18:05 
Не в сети

Зарегистрирован: Ср июл 05, 2006 14:44
Сообщения: 236
Благодарил (а): 0 раз.
Поблагодарили: 7 раз.
что-то не могут найти источник, где-то читал что Мур решение и разбиение задачи
на форте сравнивал (или проводил аналогию ) с процессом зипования (сжатия).
Тут не мудренно свалится в сжатие, если упустить что кусочки должны обладать смыслом.

А вот позже, когда он сделал colorforth то говорил уже об тетрисе (со слов Фокса)
http://www.ultratechnology.com/blog.htm#010408

добавил еще в манипуляторную IDE фичу: если расширение файла html, то
содержимое редактора обернуть правильными тегами, и можно открывать напрямую
браузерами. смотреть на гите или обновляю архив в стартовом сообщении.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: цветные стековые манипуляторы
СообщениеДобавлено: Вт апр 07, 2015 19:07 
Alex писал(а):
Тут не мудренно свалится в сжатие, если упустить что кусочки должны обладать смыслом.
Но, ведь, манипуляторы изначально являются чисто вспомогательными элементами, лишенными самостоятельного смысла. Их роль - только помогать осмысленным словам.

Если угодно, в этом и состоит Ваша основная ошибка. Мое деление на "атомы" соответствует моему видению задачи и, хотя, и кажется избыточным в столь простой задаче, оно будет работать и на уровне "большой задачи" (слова "вычислить-одну-штуку", "выбрать-следующую", "отложить-вычисленную" универсальны). А Ваши манипуляторы могут быть применены только на самом нижнем, никому не интересном уровне.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: цветные стековые манипуляторы
СообщениеДобавлено: Чт апр 09, 2015 20:42 
Не в сети

Зарегистрирован: Ср июл 05, 2006 14:44
Сообщения: 236
Благодарил (а): 0 раз.
Поблагодарили: 7 раз.
очередные изменения:
команда {+} показать/свернуть директорию csm с рабочими файлами
убрана команда back, теперь нажатие forth показывает текст на
форте, повторное нажатие возвращает исходный манипулятор,
аналогично и с bbcode.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

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


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

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