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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 46 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пн янв 25, 2010 02:44 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
danbst писал(а):
Но теперь появились вопросы с целесообразностью его применения (это относиться ко всем интерпретирующим языкам). Всмысле, вставка такого кода между определениями слов (или переменных).

Ну обычно этот код между слова выполняет служебные функции - например инициализации вектора или что-то еще. Обычно сначала пишется много маленьких определений, а конце производится запуск главного слова или сохранение программы в ехе.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн янв 25, 2010 10:15 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
danbst писал(а):
Хочу узнать, правильно-ли то, что они меня раздражают.

Существует ли единственно правильное понимание жизни?
:D

вот, вам пример того, как в частности можно использовать систему в режиме интерпретации:
<pre>
8 1 DO I CONSTANT LOOP понедельник вторник среда четверг пятница суббота воскресенье
</pre>
приведенный выше код породит 7 слов констант, каждая из которых будет соответствовать дню недели.
И, хотя, привденный код будет работать только на форке, делать подобные вещи можно на практически любом Форте (надо только небольшую либу добавить)

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


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

Зарегистрирован: Пн ноя 23, 2009 16:12
Сообщения: 64
Откуда: Київ, Івано-Франківськ
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
mOleg писал(а):
8 1 DO I CONSTANT LOOP понедельник вторник среда четверг пятница суббота воскресенье

даааа, в других языках нужно еще создать тип enum... Все-таки Форт - это нечто.

Но теперь появились вопросы с реализацией .EXE . Наличие слов, которые выбирают следующее слово из входного потока, наводит на мысль, что создание исполняемого файла без записи в него исходной программы невозможно! Если бы таких слов не было - тогда шитий код представлял собой обычный байт-код.

Или возможно?


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

Зарегистрирован: Вт сен 11, 2007 11:07
Сообщения: 187
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
danbst писал(а):
...Наличие слов, которые выбирают следующее слово из входного потока, наводит на мысль, что создание исполняемого файла без записи в него исходной программы невозможно!


ну а как ты с базой данных работаешь?

transact
bla-bla-bla
commit

так и тут, возможно структурирование. и для программы разделяются времена жизни на "до save-image" и "после save-image". а уж что и как ты реализуешь - отдельный разговор.

например: тяжелый сложный формат словарной статьи с хешами, флагами и т.п.
....какая-то-программа-времени-компиляции..... save-image xxx.exe ....какая-то-программа-времени-выполнения.....

в получившемся файле xxx.exe словаря не будет (его превратят в бинарные сегменты кода, данных и файл карты имён),
а новые слова будут создаваться в простом односвязном списке.

ты сначала для себя требования сформулируй - что тебе надо.


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

Зарегистрирован: Пн ноя 27, 2006 22:09
Сообщения: 115
Откуда: Ростов-на-Дону
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.
danbst писал(а):
Но теперь появились вопросы с реализацией .EXE . Наличие слов, которые выбирают следующее слово из входного потока, наводит на мысль, что создание исполняемого файла без записи в него исходной программы невозможно! Если бы таких слов не было - тогда шитий код представлял собой обычный байт-код.

Или возможно?


Путаешь понятия.

Входной поток - это исходник, поступающий на вход форта, который преобразуется в ШК (шитый код).

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

Во многих современных версиях форта (включая SPF) ШК - это просто специальным образом организованный машинный код (так называемый подпрограммный ШК). А поскольку многие форты ещё и содержат различные оптимизаторы, то декомпилировать (восстановить исходник по бинарнику) такой ШК немногим проще, чем код программы на C++ (а по сравнению, скажем, с Delphi, и просто не проще). В gForth шитый код — это именно шитый код, но опять же, оптимизированный - один в один уже исходник никак не восстановишь.

А байткод — это по сути лишь одна из разновидностей ШК, не самая оптимальная по скорости исполнения (зато более переносимая между реализациями).

Исходников в двоичном образе форт системы (которым, обычно, является скомпилированная форт-программа) нет.


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

Зарегистрирован: Пн ноя 27, 2006 22:09
Сообщения: 115
Откуда: Ростов-на-Дону
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.
зы. Другое дело, что и SPF, и gForth лицензированы под 100% GPL. Так что юридически, чтобы распространять программу без исходников, ты должен либо получить разрешение авторов, либо искать форт с более мягкой лицензией. BSD/MIT (делай что хочешь, но не забудь упомянуть, чей продукт ты использовал), MPL (позволяет статическую линковку с закрытым кодом, если исходный продукт оставлен без изменений) или LGPL, со смягчающим исключением, позволяющим такую статическую линковку. Чтобы следовать букве чистого LGPL, ты должен хранить результат компиляции своей программы отдельно от образа исходной форт-системы, и подгружать его динамически (это не так сложно сделать, но всё лишняя морока).

Законопослушный Андрей Черезов (автор SPF версий < 4) поскольку пользуется в своём коммерческом веб/прокси-сервере SPF4, в котором он уже не основной автор, сделал исходный код своего проекта доступным... Но не легко доступным, то есть там есть веб доступ к репозитарию исходных текстов, каждый файлик можно просмотреть, но скачать весь проект целиком — весьма нетривиальная задача.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн янв 25, 2010 11:36 
Не в сети

Зарегистрирован: Пн ноя 23, 2009 16:12
Сообщения: 64
Откуда: Київ, Івано-Франківськ
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
garbler писал(а):
ты сначала для себя требования сформулируй - что тебе надо.

Нету требований. Есть проблемы с пониманием.

be_nt_all писал(а):
А байткод — это по сути лишь одна из разновидностей ШК, не самая оптимальная по скорости исполнения (зато более переносимая между реализациями).

Запомню. Спасибо.

Можна ссылки по поводу компиляции бинарных файлов Форта? Пока еще не до конца понятно, какая магия используется при этом.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн янв 25, 2010 11:41 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
danbst писал(а):
Можна ссылки по поводу компиляции бинарных файлов Форта? Пока еще не до конца понятно, какая магия используется при этом.

ссылок не дам, магии никакой нет.
сохраняется в файл текущее состояние форт-системы (только статическая часть).
то есть делается моментальный слепок.

Если надо передать после старта управление на какое-нибудь определение, то пишется

' MyWork MAINX !
S" MyWork.exe" SAVE

Хотя есть и Форты с "шаманствами", например SMAL32 умеет сохранять в исполнимый файл только используемые слова (так называемый Turnkey).

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн янв 25, 2010 11:45 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
danbst писал(а):
mOleg писал(а):
8 1 DO I CONSTANT LOOP понедельник вторник среда четверг пятница суббота воскресенье

даааа, в других языках нужно еще создать тип enum... Все-таки Форт - это нечто.

кстати, можете глянуть еще один пример
там интересно сделано построение списка морзе последовательностей ;)

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


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

Зарегистрирован: Пн ноя 27, 2006 22:09
Сообщения: 115
Откуда: Ростов-на-Дону
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.
ззы. Все эти заморочки с лицензиями касаются и других языков, в которых выполняемый модуль — суть сохранённый образ системы: Common Lisp, Smalltalk. Хотя некоторые лиспы позволяют генерировать C-код с последующей его компиляцией. Forth так тоже, теоретически, может, Михаил даже что такое для SPF форт делал (asm он точно генерировал), но в поставке большинства фортов ты это не найдёшь. Что касается языка Factor — его это касалось бы так же, как и форта, но его единственная "эталонная" реализация лицензирована под BSD.

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

Вот. Такой краткий экскурс про саморасширяющиеся системы программирования в плане их лицензирования и доступности исходников в готовом модуле.


Последний раз редактировалось be_nt_all Пн янв 25, 2010 13:31, всего редактировалось 2 раз(а).

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

Зарегистрирован: Пн ноя 27, 2006 22:09
Сообщения: 115
Откуда: Ростов-на-Дону
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.
danbst писал(а):
Можна ссылки по поводу компиляции бинарных файлов Форта? Пока еще не до конца понятно, какая магия используется при этом.


А просто по поводу компиляции в разные разновидности шитого кода по русски лучше всего написано у Баранова "Язык форт и его реализация", см. тут в разделе литература. Книжка такая же старая, как и Броуди, кое что сейчас изменилось (железо другое, стандарт форта другой), но суть форта - та же.

mOleg писал(а):
Хотя есть и Форты с "шаманствами", например SMAL32 умеет сохранять в исполнимый файл только используемые слова (так называемый Turnkey).


Из открытых фортов такого шаманства не умеет никто (только совсем старые, 16-разрядные FPC и предшественник SMAL-32 gp-forth). Сам SMAL32 - продукт закрытый. WF32, его реинкарнация под винду от другого автора — тоже.

Ну, и как я написал — это умеет делать Factor. В старых фортах, делалось несколько по другому, а в Factor-е это разновидность _целевой компиляции_. То есть сначала определяются используемые программой слова, а потом начинается сборка _новой_ форт системы, содержащей только то, что нужно. Медленно, но для сборки готового продукта это не важно. Это можно написать для любого форта, но кроме Славы Пестова никто из мэйнтейнеров (держателей) форт-систем сейчас этим не заморачивается. (Но, с другой стороны, таких больших форт-систем как Factor больше и нету)

upd. Маленькое уточнение, в Факторе минимальная единица компиляции не слово, но один исх. файл. Но они там достаточно мелкие, особенно по сравнению с объёмом фактор-библиотеки. Этим решается проблема с объявлением глобальных переменных и тому подобной ерундой, которая делается вне определения через двоеточие.


Последний раз редактировалось be_nt_all Пн янв 25, 2010 12:20, всего редактировалось 1 раз.

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

Зарегистрирован: Пн ноя 27, 2006 22:09
Сообщения: 115
Откуда: Ростов-на-Дону
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.
зы. Но зато если сделать TURNKEY для SPF, отTURNKEYеные программы можно будет абсолютно легально распространять без исходников, под коммерческой лицензией.

upd. хотя нет, если мы используем те же GPL-ные исходники SPF — продукт будет всё равно GPL-ный.


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

Зарегистрирован: Пн ноя 23, 2009 16:12
Сообщения: 64
Откуда: Київ, Івано-Франківськ
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
mOleg писал(а):
ссылок не дам, магии никакой нет.
сохраняется в файл текущее состояние форт-системы (только статическая часть).
то есть делается моментальный слепок.

теперь понятно, спасибо.
be_nt_all писал(а):

Спасибо за дополнительную информацию )


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

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
be_nt_all писал(а):
зы. Другое дело, что и SPF, и gForth лицензированы под 100% GPL. Так что юридически, чтобы распространять программу без исходников, ты должен либо получить разрешение авторов, либо искать форт с более мягкой лицензией.

Неверно. Результат компиляции не попадает под лицензию компилятора. Для того чтобы пресечь дальнейшие спекуляции предлагаю ознакомиться с чётко обозначенной позицией авторов. Кстати это недвусмысленно описано и в docs/README.

be_nt_all писал(а):
Законопослушный Андрей Черезов (автор SPF версий < 4) поскольку пользуется в своём коммерческом веб/прокси-сервере SPF4, в котором он уже не основной автор, сделал исходный код своего проекта доступным... Но не легко доступным, то есть там есть веб доступ к репозитарию исходных текстов, каждый файлик можно просмотреть, но скачать весь проект целиком — весьма нетривиальная задача.

Читайте документацию.
cvs -d :pserver:anonymous@acweb.cvs.sourceforge.net:/cvsroot/acweb co -d acweb -P .

_________________
http://forth.org.ru/~ygrek


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

Зарегистрирован: Пн ноя 27, 2006 22:09
Сообщения: 115
Откуда: Ростов-на-Дону
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.
ygrek писал(а):
Неверно. Результат компиляции не попадает под лицензию компилятора. Для того чтобы пресечь дальнейшие спекуляции предлагаю ознакомиться с чётко обозначенной позицией авторов. Кстати это недвусмысленно описано и в docs/README.


А, ну тогда хорошо. Пр правилам, вроде бы, полагается явное исключение в виде примечания к лицензии писать, но это мелочи. А так, какой же программист не только читает документацию, но читает её до конца:shuffle;?!

А на программы, вроде nnCron (он то на SPF3, который LGPL), это тоже распространяется? Т. е. если пользователю моего продукта я открыл для скриптования практически весь spf, со своими расширениями, но ядро и основные библиртеки spf я не патчил, я не обязан открывать исходник?

С gForth тоже надо бы мне уточнить ситуацию, может я и тут не прав...

ygrek писал(а):
Читайте документацию.
cvs -d :pserver:anonymous@acweb.cvs.sourceforge.net:/cvsroot/acweb co -d acweb -P .


Посыпаю пеплом свою неседеющую голову. Оправдывает меня лишь то, что eserv'ом интересовался только постольку-поскольку.


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

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


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

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


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

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