OpenForth
Основатель движения за свободное ПО Ричард Столлман разъясняет свою позицию следующим образом: «Чтобы управлять программами, пользователям нужны четыре свободы. Для порядка я их пронумерую. Свобода номер ноль - это свобода запускать программу так, как вам этого хочется. Свобода номер один - это свобода изучать исходный код программы и изменять его так, чтобы программа работала в соответствии с вашими пожеланиями. Свобода номер два - это свобода помогать остальным, свобода распространять точные копии программы среди других пользователей. Свобода номер три - это свобода вносить вклад в сообщество. Это свобода распространять модифицированные копии программ, если вам этого хочется.»
Рассматривая свободу вносить вклад в сообщество, нельзя ограничиваться только свободой отправить в сеть результаты своего труда. Не менее важно иметь саму возможность внести весомый вклад в развитие программной технологии, добавляя к проекту то, что действительно представляет интерес и улучшает его характеристики. Для этого необходимо обладать глубоким пониманием основ разрабатываемой программы, уметь реализовывать основные алгоритмы и согласовывать их с общей структурой проекта. Ситуация, сложившаяся с Фортом, достаточно показательна. При возможности получить доступ к исходным текстам многих форт-систем не все программисты все же имеют практическую свободу «вносить вклад в сообщество», поскольку исходные тексты не разъясняют методику создания и модификации программы, а также не формируют легко понимаемой структуры, которую программист мог бы изменить в требуемую ему сторону. Проект OpenForth ставит целью развитие Форт-технологий путем распространения базовых алгоритмов и простых форт-систем, которые служили бы методологической основой для изучения Форта и могли бы стать отправной точкой для получения более эффективных реализаций. Программные решения проекта предполагается распространять по полностью свободной модели, включая возможность использования, добавления, изменения существующих продуктов, а также свободу безвозмездного использования в коммерческих системах любых частей или целых продуктов, в том числе без предоставления исходных текстов и без ссылки на OpenForth. Не предполагается создание коммерческих или некоммерческих групп, регистрации участников, или иных форм ограничения свободы принять участие в проекте или выйти из него. В качестве практического решения предлагается шаблон Форт-машины, реализованный на языке C в виде заголовочного файла. Файл openforth.h содержит имена функций, реализующих слова Форт-машины. Такая машина может быть статически скомпилирована с проектом на базе С, выполняя строки Форта, передаваемые функции Evaluate. Работоспособность данной машины (с учетом заполненных шаблонов) была протестирована в проекте Quark Virtual Machine, собранном в QtCreator 2.4.1. В предоставляемом для OpenForth файле не специфицируется вид кода, способ реализации стеков, доступа к памяти, файлам, оборудованию и т.п. Предполагается, что самостоятельное заполнение структуры файла, приведенной в openforth.h, позволит, с одной стороны, реализовать различные подходы к компиляции, формированию структуры словарной статьи, организации стека и т.п., что снимает основную остроту противоречивых требований к этим характеристикам; с другой стороны, самостоятельная реализация простых функций способствует практическому освоению программирования Форт-машин. Прикрепленный файл openforth.h может свободно использоваться (или не использоваться) в учебных, коммерческих или иных целях, со свободой предложить любую реализацию того или иного слова при любой степени завершенности системы. Предлагается реализация ряда оболочек, демонстрирующих интеграцию Форт-машины в продукт верхнего уровня. Простейшим примером такой оболочки может быть оконное приложение, позволяющее отправить текстовую строку на исполнение в Форт-машину и показать ее состояние (стек, память, виртуальный текстовый или графический экран в различных сочетаниях).
|