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

...
Google Search
Forth-FAQ Spy Grafic

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




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

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

Обзор темы - Интерпретация и компиляция в Форте
Автор Сообщение
  Заголовок сообщения:   Ответить с цитатой
be_nt_all писал(а):
А на программы, вроде nnCron (он то на SPF3, который LGPL), это тоже распространяется? Т. е. если пользователю моего продукта я открыл для скриптования практически весь spf, со своими расширениями, но ядро и основные библиртеки spf я не патчил, я не обязан открывать исходник?

Конечный пользователь должен получить достаточно информации, чтобы подключить к приложению пересобранную/модифицированную библиотеку (в данном случае ядро SPF). Если он сумеет это сделать (используя штатный дистрибутив SPF), исходник (SPF) ему не нужен.
Сообщение Добавлено: Ср янв 27, 2010 16:46
  Заголовок сообщения:   Ответить с цитатой
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'ом интересовался только постольку-поскольку.
Сообщение Добавлено: Ср янв 27, 2010 02:50
  Заголовок сообщения:   Ответить с цитатой
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 .
Сообщение Добавлено: Ср янв 27, 2010 01:54
  Заголовок сообщения:   Ответить с цитатой
mOleg писал(а):
ссылок не дам, магии никакой нет.
сохраняется в файл текущее состояние форт-системы (только статическая часть).
то есть делается моментальный слепок.

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

Спасибо за дополнительную информацию )
Сообщение Добавлено: Пн янв 25, 2010 12:28
  Заголовок сообщения:   Ответить с цитатой
зы. Но зато если сделать TURNKEY для SPF, отTURNKEYеные программы можно будет абсолютно легально распространять без исходников, под коммерческой лицензией.

upd. хотя нет, если мы используем те же GPL-ные исходники SPF — продукт будет всё равно GPL-ный.
Сообщение Добавлено: Пн янв 25, 2010 12:09
  Заголовок сообщения:   Ответить с цитатой
danbst писал(а):
Можна ссылки по поводу компиляции бинарных файлов Форта? Пока еще не до конца понятно, какая магия используется при этом.


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

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


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

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

upd. Маленькое уточнение, в Факторе минимальная единица компиляции не слово, но один исх. файл. Но они там достаточно мелкие, особенно по сравнению с объёмом фактор-библиотеки. Этим решается проблема с объявлением глобальных переменных и тому подобной ерундой, которая делается вне определения через двоеточие.
Сообщение Добавлено: Пн янв 25, 2010 12:00
  Заголовок сообщения:   Ответить с цитатой
ззы. Все эти заморочки с лицензиями касаются и других языков, в которых выполняемый модуль — суть сохранённый образ системы: Common Lisp, Smalltalk. Хотя некоторые лиспы позволяют генерировать C-код с последующей его компиляцией. Forth так тоже, теоретически, может, Михаил даже что такое для SPF форт делал (asm он точно генерировал), но в поставке большинства фортов ты это не найдёшь. Что касается языка Factor — его это касалось бы так же, как и форта, но его единственная "эталонная" реализация лицензирована под BSD.

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

Вот. Такой краткий экскурс про саморасширяющиеся системы программирования в плане их лицензирования и доступности исходников в готовом модуле.
Сообщение Добавлено: Пн янв 25, 2010 11:46
  Заголовок сообщения:   Ответить с цитатой
danbst писал(а):
mOleg писал(а):
8 1 DO I CONSTANT LOOP понедельник вторник среда четверг пятница суббота воскресенье

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

кстати, можете глянуть еще один пример
там интересно сделано построение списка морзе последовательностей ;)
Сообщение Добавлено: Пн янв 25, 2010 11:45
  Заголовок сообщения:   Ответить с цитатой
danbst писал(а):
Можна ссылки по поводу компиляции бинарных файлов Форта? Пока еще не до конца понятно, какая магия используется при этом.

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

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

' MyWork MAINX !
S" MyWork.exe" SAVE

Хотя есть и Форты с "шаманствами", например SMAL32 умеет сохранять в исполнимый файл только используемые слова (так называемый Turnkey).
Сообщение Добавлено: Пн янв 25, 2010 11:41
  Заголовок сообщения:   Ответить с цитатой
garbler писал(а):
ты сначала для себя требования сформулируй - что тебе надо.

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

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

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

Можна ссылки по поводу компиляции бинарных файлов Форта? Пока еще не до конца понятно, какая магия используется при этом.
Сообщение Добавлено: Пн янв 25, 2010 11:36
  Заголовок сообщения:   Ответить с цитатой
зы. Другое дело, что и SPF, и gForth лицензированы под 100% GPL. Так что юридически, чтобы распространять программу без исходников, ты должен либо получить разрешение авторов, либо искать форт с более мягкой лицензией. BSD/MIT (делай что хочешь, но не забудь упомянуть, чей продукт ты использовал), MPL (позволяет статическую линковку с закрытым кодом, если исходный продукт оставлен без изменений) или LGPL, со смягчающим исключением, позволяющим такую статическую линковку. Чтобы следовать букве чистого LGPL, ты должен хранить результат компиляции своей программы отдельно от образа исходной форт-системы, и подгружать его динамически (это не так сложно сделать, но всё лишняя морока).

Законопослушный Андрей Черезов (автор SPF версий < 4) поскольку пользуется в своём коммерческом веб/прокси-сервере SPF4, в котором он уже не основной автор, сделал исходный код своего проекта доступным... Но не легко доступным, то есть там есть веб доступ к репозитарию исходных текстов, каждый файлик можно просмотреть, но скачать весь проект целиком — весьма нетривиальная задача.
Сообщение Добавлено: Пн янв 25, 2010 11:30
  Заголовок сообщения:   Ответить с цитатой
danbst писал(а):
Но теперь появились вопросы с реализацией .EXE . Наличие слов, которые выбирают следующее слово из входного потока, наводит на мысль, что создание исполняемого файла без записи в него исходной программы невозможно! Если бы таких слов не было - тогда шитий код представлял собой обычный байт-код.

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


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

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

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

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

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

Исходников в двоичном образе форт системы (которым, обычно, является скомпилированная форт-программа) нет.
Сообщение Добавлено: Пн янв 25, 2010 11:14
  Заголовок сообщения:   Ответить с цитатой
danbst писал(а):
...Наличие слов, которые выбирают следующее слово из входного потока, наводит на мысль, что создание исполняемого файла без записи в него исходной программы невозможно!


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

transact
bla-bla-bla
commit

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

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

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

ты сначала для себя требования сформулируй - что тебе надо.
Сообщение Добавлено: Пн янв 25, 2010 10:57
  Заголовок сообщения:   Ответить с цитатой
mOleg писал(а):
8 1 DO I CONSTANT LOOP понедельник вторник среда четверг пятница суббота воскресенье

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

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

Или возможно?
Сообщение Добавлено: Пн янв 25, 2010 10:25
  Заголовок сообщения:   Ответить с цитатой
danbst писал(а):
Хочу узнать, правильно-ли то, что они меня раздражают.

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

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

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


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