Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 20:50

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Маленькие хитрости
Автор Сообщение
  Заголовок сообщения:  Re: Маленькие хитрости  Ответить с цитатой
------> .
Сообщение Добавлено: Пт янв 13, 2017 23:00
  Заголовок сообщения:  Re: Маленькие хитрости  Ответить с цитатой
Jelsay писал(а):
Просто я люблю смотреть в суть вещей.. а суть мне говорит что только один раз в жизни я смог с помощью написания программы на Форте немного заработать.. и то случайно потому что Паскаль или Вайсика было лень искать.
А кто мешает писать по-FORTH-овски на Паскалях и Васец-ах? FORTH - это всего-лишь отказ строить интерпретатор проблемно-ориентированного языка "по-научному" (lex-ами и yacc-ами), ограничившись лишь тем, что "само вылазит" - стеком и шитым кодом. FORTH получается сам!
См. Керниган и Пайк "UNIX... гл.8", Уэзерелл "Этюды... TRAC", Скотт "VB... EXPRESSOR"...
Сообщение Добавлено: Чт янв 12, 2017 23:51
  Заголовок сообщения:  Re: Маленькие хитрости  Ответить с цитатой
На этот раз, антихитрость.
Допустим, есть слово, которое что-то выводит на экран. Изначально, понятно, оно носит глубоко отладочный характер, но, по мере взросления проекта, обрастает форматированиями, выравниваниями и прочей визуальной фигней.

Например, изначально:

0 СТРАНИЦА ." [1] ВВЕДЕНИЕ" CR CR
." Игра Cold War Naval Battles (Морские сражения холодной" CR
." войны) была впервые опубликована как Modern Naval Battles" CR
." (Современные морские сражения) - в виде серии из трех" CR
." карточных игр для двух-шести игроков, опиравшаяся на" CR
." морскую мощь (тех дней) великих держав. Она была" CR
." разработана в конце 1980х компанией 3W, Inc. из Камбрии" CR
." (штат Калифорния)." CR CR
... ;

Как заменить ." и CR на что-то красивое?

Можно заменить эти слова операцией "Замена" вашего текстового редактора.
Можно охватить этот фрагмент словарем, в котором они имеют другое значение.
Можно перелопатить шитый код слова, заменяя коды этих слов.

Все эти три решения требуют точного знания заранее всех заменяемых слов и границ области замены, а также готовности разрешать коллизии.

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

Но, ведь, такое хранилище у фортеров было! Абсолютно бесплатное, структурированное и индексированное. Блоковая память! Но злые манагеры от программирования решили, что блоки не нужны, ведь, файлы проще. Как будто они понимают, что такое файл...
Сообщение Добавлено: Пт дек 30, 2016 13:44
  Заголовок сообщения:  Re: Маленькие хитрости  Ответить с цитатой
Victor__v писал(а):
Работающее имеется
С этого и начинайте. Пока Ваши примеры выглядят как что-то совершенно ненужное, сделанное через задницу. Мол, что бы еще успеть повесить на FORTH, пока он не рухнет.

Victor__v писал(а):
Смешно
Нет, грустно. Значит, Вы совершенно не понимаете того, что я пишу.

Я думаю, Ваш путь в программирование когда-нибудь начнется словами: "Выкинем этот негодный костыль - СПФ".
Сообщение Добавлено: Сб окт 29, 2016 12:29
  Заголовок сообщения:  Re: Маленькие хитрости  Ответить с цитатой
Цитата:
Если Вам не надо написать что-то работающее

Работающее имеется. доделываю оптимизатор исходного текста форт-программ. Со списками всё гораздо проще получается.
Цитата:
Но нам, практикам, не до этого

Смешно
Сообщение Добавлено: Сб окт 29, 2016 11:33
  Заголовок сообщения:  Re: Маленькие хитрости  Ответить с цитатой
Victor__v писал(а):
Из своего малюсенького опыта построения и работы со списками скажу, что к ним должны прилагаться лямбды, операции над списками, над элементами списков и т.д.
Если Вам не надо написать что-то работающее - да. Можно даже пригласить коллегу true-grue и поговорить с ним за общую теорию преобразователей. Но нам, практикам, не до этого. Я скажу так - 1) если мы имеем FORTH, лямбды нам не нужны, 2) если нам не нужна унификация - списки можно реализовать без списков.
Сообщение Добавлено: Пт окт 28, 2016 19:45
  Заголовок сообщения:  Re: Маленькие хитрости  Ответить с цитатой
Добавим немножечко реальности...
Из своего малюсенького опыта построения и работы со списками скажу, что к ним должны прилагаться лямбды, операции над списками, над элементами списков и т.д.
Как у вас с организацией всего этого?
Лично у меня сейчас такая проблема:
Т.к. список создаётся на стеке возвратов, то надо поддерживать актуальность построения, если элемент определяется в другом слове.
Есть несколько путей:
А) определить элемент в хипе. Но надо будет организовывать учёт, и сборщик мусора в конечн.итоге
Б) Вытащить весь стек возвратов до встречи последнего элемента, сделать тёмные дела :twisted: и возвратить как было. Но куда его стряхивать? В хип? В стек данных? А потом восстанавливать его.
В поисках самого элегантного решения.
Кто подсобит великой фортовской мыслёй? :)
Сообщение Добавлено: Пт окт 28, 2016 19:34
  Заголовок сообщения:  Re: Маленькие хитрости  Ответить с цитатой
gudleifr писал(а):
Я как раз сейчас над этим думаю.
И, пока наиболее естественным видится "списковый СЛОВАРЬ". При этом СИМВОЛ должен давать на выходе последовательность селекторов, ВЫПОЛНИТЬ и КОМПИЛИРОВАТЬ производить унификацию.
Сообщение Добавлено: Чт окт 27, 2016 21:04
  Заголовок сообщения:  Re: Маленькие хитрости  Ответить с цитатой
Цитата:
по времени их жизни

Да, забыл упомянуть.
Время жизни у данного подхода к списку как-раз и есть время существования слова.
Не для всех случаев, естественно, но для некоторых может подойти прям идеально.
Сообщение Добавлено: Пт окт 21, 2016 21:43
  Заголовок сообщения:  Re: Маленькие хитрости  Ответить с цитатой
Victor__v писал(а):
Пробовал ли кто-нибудь организовать список
Я как раз сейчас над этим думаю. Не в смысле, тут есть над чем думать, а в смысле, списки на FORTH реализуются до смешного легко (и как и на нормальном LISP не требуют сборки мусора), но их применение порождает кучу ненужных структурных операций.
Victor__v писал(а):
на стеке возвратов
А зачем? Стек возвратов - естественное место для локальных переменных. Проводить деление между хранящимися там и глобальными данными следует не по типу данных, а по времени их жизни.
Сообщение Добавлено: Пт окт 21, 2016 21:24
  Заголовок сообщения:  Re: Маленькие хитрости  Ответить с цитатой
Т.к. тему по спискам не нашёл на форуме, а заводить, да ещё с неизвестным результатом, как-то лень, то пишу сюда.
Пробовал ли кто-нибудь организовать список на стеке возвратов?
Наверное, единственное преимущество хранения ячеек списка на стеке - это отсутствие необходимости создавать сборщик мусора, вставил указатель на удаляющее слово и всё :wink: При завершении работы произойдёт самоочищение стека от лисповкой скверны 8)
Вроде неплохой вариант, да и реализуется легко.

P.S.
Товарищи форумчане, если что, не надо подзатыльников, лучше направляющий пендаль :D
P.P.S.
Для тех, кто считает, что это хак (что в целом верно) и так делать нельзя, напоминаю, что стек используется, потому что способен к самоочищению
Сообщение Добавлено: Пт окт 21, 2016 21:07
  Заголовок сообщения:  Re: Маленькие хитрости  Ответить с цитатой
Полностью согласен, но свою программу можно
Сообщение Добавлено: Вт окт 11, 2016 16:03
  Заголовок сообщения:  Re: Маленькие хитрости  Ответить с цитатой
Понаблюдав за разговорами последнего месяца, могу сформулировать главную FORTH-хитрость: "Не надо пытаться улучшать FORTH!"
Сообщение Добавлено: Вт окт 11, 2016 11:52
  Заголовок сообщения:  Re: Маленькие хитрости  Ответить с цитатой
Victor__v писал(а):
пробовал ли кто-нибудь делать развёртку ( раскрутку) цикла?
Это имеет смысл только в кодовых словах, но там есть макросы.
Сообщение Добавлено: Пн окт 10, 2016 22:39
  Заголовок сообщения:  Re: Маленькие хитрости  Ответить с цитатой
время от времени требуются циклы с известным числом итераций. 12 0 do ... и далее по тексту
пробовал ли кто-нибудь делать развёртку ( раскрутку) цикла?
Сообщение Добавлено: Пн окт 10, 2016 21:04

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


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