Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт апр 19, 2018 15:54

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 69 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 27, 2007 01:04 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 16, 2006 23:02
Сообщения: 65
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
profiT писал(а):
Во-первых, название темы не соответствует вопросу темы. Более того и вопрос-то размыт сильно.

Прочитав название, можно накидывать пожелания по тому как писать учебник. Отвечая на вопрос, можно начинать вспоминать как я я начинал с SPF, а можно кидаться советами как это лучше делать другим...

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

profiT писал(а):
Во-вторых, кто это такие -- "чайники"?.. Целевую аудиторию надо определить, т.е определить для себя каковы у аудитории, для кого это всё пишется, ТТХ, насколько они знают программирование вообще, какими языками владеют (как программирования, так и вообще), кроме того что только что начали читать Броуди и вбивать примеры.

Ну, например, рассчитывать на некоторый опыт программирования на "попсе" вроде С/С++ или паскаля, может быть, асм. Учить людей программированию - отдельная задача, пусть лучше ей занимаются профессионалы.

profiT писал(а):
Далее надо задать формат "учебника". Под форматом понимается в каком виде он будет представлен: это будет документ, который будет раз написан и больше не изменяем, это будет записи в журнале (блоге), это будут обновляемые страницы в вике, где это всё надо будет размещать и т.д.

В идеале, конечно, вика. Например, на forth.org.ru . Возможность изменения нужна - всё-таки это не увековечивание истории, а учебник. Структура - пожалуй, не следует стремиться к линейности повествования, а сделать один вводный раздел и несколько "продвинутых", чтобы человек имел возможность сам выбирать, что ему читать.

profiT писал(а):
Нужно решить в каком виде будет подаваться материал. Нужно задать для себя соотношение "воды" и кода в тексте.

Главное, чтобы кода было меньше, чем текста.

profiT писал(а):
Кстати, я что-то такое уже делаю...

Посмотрел, там явно не всё, что хотелось бы знать. Наверное, имеет смысл это включить в учебник.

mrack писал(а):
ну я как неофит магу предложить глубоко комментированные исходники того что я делал

Глубоко комментированные исходники - это хорошо.

Mihail писал(а):
Просмотрел исходники СПФ. За исключением средств взаимодействия с базовой ОС,
ничего нового не нашел. Изучать следует с программы INTERPRET в src\compiler\spf_translate.f
посмотреть несколько простых примитивов в spf\src\spf_forthproc.f

Что, прямо исходники читать?? :shock:

Mihail писал(а):
Понимание Фора сводится к трем составляющим: кодофайл, словарная статья, шитый код.

А что такое кодофайл? С таким термином ни разу не сталкивался.

Mihail писал(а):
Я бы посоветовал для освоения СПФ сразу решать с его помощью конкретную задачу.
Тут и появятся конкретные вопросы к участникам форума.

Лично у меня задача - написать виртуальный форт, я про него на форуме уже спрашивал. В свою очередь, виртуальный форт входит как подзадача в более масштабный проект - систему искусственного интеллекта Lamarck@home . Собственно, ради этого проекта я и затеял изучение СПФ - проект предполагается коллективный и масштабный, а единственный форт, который популярен у русскоязычных программистов - это, насколько я понимаю, СПФ. Был ещё вариант делать всё на моём форте - но я подумал и решил, что легче привести Магомета к горе, чем наоборот.

Pretorian писал(а):
Наврятли задача будет решена оптимально, без знания всего СПФ, и по поступлений знаний придется ее постоянно оптимизировать.

Ещё Броуди говорил, что наилучший способ написать программу - это написать её дважды.

Гость писал(а):
Вспоминается, что кто-то уже оформлял первое знакомство
с СПФ за нескольких дней.

Вот я его тоже видел, только не могу вспомнить, где. Было бы интересно в данном контексте почитать.

mrack писал(а):
вот тут мы и подходим к идее учебника, учебник состоит из двух частей, теория и домашние задания, теории хватает помоему, домашних заданий маловато

Теорию вроде Броуди хорошо изложил, не думаю, что следует с ним соревноваться. А в учебнике сделать упор на конкретные приложения и windows-специфические вещи. Возможно, следует просто сделать краткое описание основных библиотек, входящих в дистрибутив СПФ.

Да, кстати, как гласит народная мудрость, как вы яхту назовёте, так она и поплывёт. Предлагаю название для учебника: Starting SP-Forth 8) .

Итак, первая задача для меня и для учебника: написать виртуальную форт-систему. В скором времени займусь.

_________________
Я знаю только то, что я ничего не знаю. /(с) Сократ/
Мой форт | Мой проект ИИ


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 27, 2007 07:17 
Не в сети

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
wormball писал(а):
Ещё Броуди говорил, что наилучший способ написать программу - это написать её дважды.

Чет не вяжется это с майкрррософт :))


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 27, 2007 08:03 
wormball писал(а):
Итак, первая задача для меня и для учебника: написать виртуальную форт-систему. В скором времени займусь.


Могут быть, примерно, такие варианты:

1. Взять одну из форт систем написанную на Си, Java для портированности.
( благо таких форт систем достаточно например gforth) и изменить под свои нужды.
2. Транслировать Форт код, например, в Java байт-код и надеятся
на могущество JIT. ( данный подход тоже используется, например HOLONX )
3. Tранслировать Форт код в ассемблерный для целевого процессора и использовать
соответствующий ассемблер. ( данный подход тоже применяется, например
в FORTHEC, в SPF у Михаила для генерации кода для разных контроллеров
и для начального переноса SPF под линух.
4. Подобрать реализацию подходящей ран тайм VM.

5. ... может кто дополнит еще.

P.S. Доработать, по моему легче, чем изобретать тоже самое.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 27, 2007 08:17 
wormball писал(а):
Гость писал(а):
Вспоминается, что кто-то уже оформлял первое знакомство
с СПФ за нескольких дней.

Вот я его тоже видел, только не могу вспомнить, где. Было бы интересно в данном контексте почитать.

Поисковик выдал пару следующих ссылок:)

http://www.forth.org.ru/~school/
и
www.forth-j.narod.ru

P.S. "Гуглите и будет вам счастье" :)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 27, 2007 09:00 
wormball писал(а):
... а единственный форт, который популярен у русскоязычных программистов - это, насколько я понимаю, СПФ. Был ещё вариант делать всё на моём форте - но я подумал и решил, что легче привести Магомета к горе, чем наоборот.


Использовать SPF хорошо, но не обязательно есть еще много Форт систем
например Win32Forth и другие.

Например AI на форте был уже частично проработа и сделан.

P.S. Все в руках разработчика темы, а надеятся, что использование
SPF привлечет к проекту больше людей, помимо использования
другой форт системы не стоит:)
AI как и Форт довольно специфические темы для приложений.:)
Реализации конкретных подзадач, можно брать из любой
возможной Форт системы, даже при несовместимости их.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 27, 2007 09:42 
wormball писал(а):
Итак, первая задача для меня и для учебника: написать виртуальную форт-систему. В скором времени займусь.


Есть, например, такая Форт виртульная машина.

Alex Kouznetsov
FVM Factory, http://sourceforge.net/projects/c-fvm

P.S. Их довольно много, можно найти еще больше:)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 27, 2007 13:03 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
wormball писал(а):
Ну, например, рассчитывать на некоторый опыт программирования на "попсе" вроде С/С++ или паскаля, может быть, асм. Учить людей программированию - отдельная задача, пусть лучше ей занимаются профессионалы.


Опыт С/С++ или паскаля будет в основном мешать. Придется избавлятся от стереотипов.

Цитата:
Что, прямо исходники читать?? :shock:


Этого боятся не надо. Форт устроен очень просто. Да ты сам написал свой.
Другого пути нет, какие-бы учебники ты не изучал.
Идея Форта в том и заключается, что программист строит программы
изходя из понимания устройства форт-системы. Учебник следует
сделать в виде путиводителя по исходникам СПФ.
Фортсистема представляет собой набор подпрограмм доступных
пользователю в рантайме. Исходники Форт-системы первый и основной набор
примеров для пользователя.

Цитата:
А что такое кодофайл? С таким термином ни разу не сталкивался.


Это самый главный компанент Форта. Кодофайл это область где распологается
сама форт-система за которой обязательно следует свободная область для ее расширения.
Переменная DP содержит указатель на границу между занятой и свободной областями и
называется вершиной кодофафла. Слово HERE кладет на стек значение переменной DP ,
ALLOT продвигает вершину кодофайла. Все определения пользователя располагаются
на вершине кодофайла и представляются в то-же виде в котором представлены все осталные
определения из которых состоит вся форт-система.

Цитата:
В свою очередь, виртуальный форт входит как подзадача в более масштабный проект - систему искусственного интеллекта Lamarck@home . Собственно, ради этого проекта я и затеял изучение СПФ - проект предполагается коллективный и масштабный, а единственный форт, который популярен у русскоязычных программистов - это, насколько я понимаю, СПФ.


На сколько я понял твои замыслы. СПФ следует использовать в качестве
операционной системы для расположения в нем системы виртуальных
форт-машин. В составе http://fpauk.narod.ru/fpauk12.rar
есть такая система ~mak\TELNET\vfm1.f .
Если у тебя будет ориентация на мою систему, то мне легче будет помочь.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 27, 2007 14:09 
wormball писал(а):
Посмотрел, там явно не всё, что хотелось бы знать.

Ну дык в процессе же. О чём и сказал сразу.

Кстати, второй пример я как раз пишу про кодофайл. Ну, и ygrek тоже выразил осторожное желание описать как он решал конкретные задачи.

wormball писал(а):
Наверное, имеет смысл это включить в учебник.

Спасибо за то что "спросил" разрешения.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 27, 2007 19:34 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
wormball писал(а):
Теорию вроде Броуди хорошо изложил, не думаю, что следует с ним соревноваться. А в учебнике сделать упор на конкретные приложения и windows-специфические вещи.

Да, на способы решения "типовых" задач... Факториал там, обход дерева каталогов... ;)
Гость писал(а):
P.S. Доработать, по моему легче, чем изобретать тоже самое.

А изобретать самому - интрееснее и есть "риск" найти новое красивое решение! :)

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 28, 2007 02:52 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 16, 2006 23:02
Сообщения: 65
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Pretorian писал(а):
Ещё Броуди говорил, что наилучший способ написать программу - это написать её дважды.

Чет не вяжется это с майкрррософт

Ну почему же? Они, например, windows в своё время с нуля переписали.

Гость писал(а):
Могут быть, примерно, такие варианты:

1. Взять одну из форт систем написанную на Си, Java для портированности.
( благо таких форт систем достаточно например gforth) и изменить под свои нужды.
2. Транслировать Форт код, например, в Java байт-код и надеятся
на могущество JIT. ( данный подход тоже используется, например HOLONX )
3. Tранслировать Форт код в ассемблерный для целевого процессора и использовать
соответствующий ассемблер. ( данный подход тоже применяется, например
в FORTHEC, в SPF у Михаила для генерации кода для разных контроллеров
и для начального переноса SPF под линух.
4. Подобрать реализацию подходящей ран тайм VM.

У меня подозрение, что это всё будет геморроидально. Хотя бы потому, что к виртуальному форту есть определённые требования, и надо будет детально изучать документацию большого количества сторонних решений, чтобы понять, соответствуют ли они требованиям. А может так статься, что ни одно готовое решение не подойдёт. И вообще, я хочу, чтобы всё было на форте, и чтобы было как можно меньше кода, чтобы было легко вносить изменения.

Гость писал(а):
Поисковик выдал пару следующих ссылок

http://www.forth.org.ru/~school/
и
www.forth-j.narod.ru

Я имел в виду вторую ссылку. Детально пока что не изучал, наверное, буду использовать для обучения.

Гость писал(а):
Есть, например, такая Форт виртульная машина.

Alex Kouznetsov
FVM Factory, http://sourceforge.net/projects/c-fvm

P.S. Их довольно много, можно найти еще больше

Наверняка их много, я думаю, чем искать подходящую - легче самому написать. Данная система мне не нравится хотя бы потому, что она написана на С.

Mihail писал(а):
Опыт С/С++ или паскаля будет в основном мешать. Придется избавлятся от стереотипов.

А у меня при знакомстве с фортом сложилось впечатление, что опыт программирования мне только помогал. Хотя возможно, что мне помог не паскаль, а ассемблер.

Mihail писал(а):
Этого боятся не надо. Форт устроен очень просто. Да ты сам написал свой.

Ну, написал - это я так, ради красного словца :oops: ну, переделал ретрофорт процентов на 80. Дело даже не в этом, а в том, что у СПФа исходников раз в 10 больше. Вот это меня больше всего отпугивает. Видимо, это связано предле всего с полной поддержкой стандарта, многопоточностью и обработкой ошибок. Вот в ретрофорте, наприммер, всего две ошибки - word not found и виндовский general protection fault. :D

Mihail писал(а):
Это самый главный компанент Форта. Кодофайл это область где распологается
сама форт-система за которой обязательно следует свободная область для ее расширения.

Тфу ты, это всего лишь место, куда записывается скомпиленный код? Я-то думал, это нечто страшное.

Mihail писал(а):
На сколько я понял твои замыслы. СПФ следует использовать в качестве
операционной системы для расположения в нем системы виртуальных
форт-машин. В составе http://fpauk.narod.ru/fpauk12.rar
есть такая система ~mak\TELNET\vfm1.f .
Если у тебя будет ориентация на мою систему, то мне легче будет помочь.

Что-то она какая-то большая и монолитная, и документации по ней нет. Плюс наверняка эту систему надо будет довольно серьёзно затачивать под проект, а с учётом того, что она изначально на эту задачу не рассчитывалась - это может быть сложнее, чем написать новую. Если есть желание - присоединяйся к проекту, пиши документацию, дорабатывай систему под проект, я буду очень признателен.

Эх, всю жизнь писал программы без единого комментария, и только сейчас, когда всерьёз задумался об организации коллективного проекта, понял всю важность документации. Так что теперь идёт мучительный прогресс в этом направлении, некоторые успехи уже есть, но до совершенства ещё далеко.

profiT писал(а):
Спасибо за то что "спросил" разрешения.

Да чтобы я, да без согласия автора? Боже упаси.

in4 писал(а):
А изобретать самому - интрееснее и есть "риск" найти новое красивое решение!

Точно, форт вообще - язык изобретателей. Только почему-то в основном получаются велосипеды. :(

_________________
Я знаю только то, что я ничего не знаю. /(с) Сократ/
Мой форт | Мой проект ИИ


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 28, 2007 14:34 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
wormball писал(а):
Дело даже не в этом, а в том, что у СПФа исходников раз в 10 больше. Вот это меня больше всего отпугивает.


Форт не монолит. Это набор именованных программ часть из которых можно
вполне вынести в отдельные библиотеки для дозагрузки в рантайме. INTERPRET_ всего 29 слов.
INTERPRET_ это собственно и есть интерпретатор входного потока.
Многих смущает мой оптимизатор. Клон СПФ без оптимизотора:
http://wiki.forth.org.ru/%D1%E1%EE%F0%E ... F2%20mOleg
или старые версии http://www.forth.org.ru/~ac/spf
был еще sprmac3.rar , но потерялся.

Цитата:
Тфу ты, это всего лишь место, куда записывается скомпиленный код? Я-то думал, это нечто страшное.


Страшного в Форте ничего нет.
Цитата:
Mihail писал(а):
есть такая система ~mak\TELNET\vfm1.f .
Если у тебя будет ориентация на мою систему, то мне легче будет помочь.

Что-то она какая-то большая и монолитная, и документации по ней нет. Плюс наверняка эту систему надо будет довольно серьёзно затачивать под проект, а с учётом того, что она изначально на эту задачу не рассчитывалась - это может быть сложнее, чем написать новую.


Что там монолитного. Можно выкинуть половину и все равно будет работать.
Нужно уметь пользоваться чужим материалом. Для энтузиастов другого пути нет.
Если не можешь полностью использовать программу в качестве прототипа,
умей найти полезные фрагменты.

Цитата:
Если есть желание - присоединяйся к проекту, пиши документацию, дорабатывай систему под проект, я буду очень признателен.


Времени у меня мало.

Цитата:
Эх, всю жизнь писал программы без единого комментария, и только сейчас, когда всерьёз задумался об организации коллективного проекта, понял всю важность документации. Так что теперь идёт мучительный прогресс в этом направлении, некоторые успехи уже есть, но до совершенства ещё далеко.


Сначала, просто перечисли все компоненты своей системы. За тем посмотри
как они реализуются в СПФ. Незацикливайся на документации. Сколько мертвых проектов с огромным
ворохом документации. Лишняя документация вредит. Паралельно нужно что-то реализовывать.
На первом этапе, следует реализовать _максимально_ упрощенную версию системы.
Вернее, некоторые компоненты системы. Считай упрощение самой главной задачей,
иначе вообще не сдвинешься с места.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 08, 2007 19:03 
--


Последний раз редактировалось profiT Сб мар 01, 2008 00:22, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 19, 2007 11:24 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
>: word1 TIB 50 TYPE ;
Ok
>1111 11111111 11111111 1111111
Ok ( 1111 11111111 11111111 1111111 )

>word1
word111111111 11111111 11111111 )

>word1 word_
word1 word_11 11111111 1111111

Вот такая последовательность строк для СПФ...
слово word1 читает входной поток после себя
предположим, оно не только печатает, но и что-то делает
проблема такая: если после ЧИТАЕМОГО слова word_ не сделать специально пробела (сразу "ENTER"), то непонятно, как отделить его в строке от того, что осталось от предыдущего (от единиц)?
традиционное BL WORD не подходит, т.к. оно присоединит к слову word_ две единицы и мы получим word_11
де-нибудь хранится длина последней строки или позиция перевода строки?
>IN будет хранить позицию определяемую последней буквой самого word1 :(

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 19, 2007 16:47 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
вопрос писал(а):
радиционное BL WORD не подходит, т.к. оно присоединит к слову word_ две единицы и мы получим word_11


Может COUNT забыл вставить?

: word1 BL WORD COUNT TYPE ;

Есть еще слова SOURCE PARSE PARSE-NAME


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 19, 2007 22:12 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
спасибо, буду смотреть

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 69 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

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


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

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


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

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