Описание проекта

Конструктор программ

(проект ищет кодеров и спонсоров)
- Динамическое программирование
- Кармическое программирование
- Редактор объектов

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

В настоящий момент почти все программы являются достаточно жесткими. Вы не можете просто взять и скопировать из нее понравившуюся Вам функцию или кнопку или другой элемент дизайна.
А хотелось бы . Взять, например, спелчекер или pop3-клиент, почему бы просто не взять и перетащить его мышкой из Word-а или Thundebird-a в свою программу.

Создание динамической программы
  1. выбрать папку
  2. В контекстном меню выбрать пункт "создать" - "программу" (появиться файл с расширением ".программа", ввести имя)
  3. двойным щелчком открыть программу. Откроется окно похожее на explorer.

диспетчер.jpg
Рис.1 Окно Диспетчера

редактор.jpg
Рис.2 Окно Редактора объекта

Использование программы
  1. можно добавлять экземпляры объектов в программу, либо путем копирования из другой динамической программы, либо путем создания новых экземпляров
  2. теперь можно вручную устанавливать значения полей, свойств, запускать методы
  3. установить связи между объектами
  4. настроить параметры запуска "активных" объектов (аналогично службам Windows)
  5. запустить "активные" объекты
Внесение изменений в программе автоматически сохраняются на диск. История изменений также накапливается, так что можно откатить изменения.
Закрытие программы сохранит список объектов и их текущее состояние.
Повторный запуск программы приведет к восстановлению объектов и связей между ними, запустит требуемые методы ("активные" объекты).
Программа может работать и одновременно редактироваться.



Динамическое программирование

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


Архитектура динамической программы

Ядро программы достаточно маленькое, с весьма несложной функциональностью. Оно похоже на отдел кадров на предприятии. Ее цель хранить объекты и предоставлять объектам возможность поиска друг друга.
Вся начинка программы содержится в файле конфигурации "*.программа" - это файл данных. Однако копирование этого файла приводит к созданию новой программы. Но в этой новой программе будут содержаться объекты старой программы, объекты будут совместными. (Хотя в момент запуска новой программы, можно проверить местоположение и в случае несовпадения создать клоны всех объектов)
Ядро -это Диспетчер программы.
Главную функциональность программы составляют содержащиеся в ней экземпляры объектов.
Объекты программы могут запускаться внутри процесса Диспетчера, в раздельных процессах, на удаленных компах.
Объекты динамической программы должны быть определенным образом спроектированы, чтобы поддерживать динамическое связывание.


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

Первая цель создать динамический конфигуратор объектов (Диспетчер) .
Вторая, более сложная, создать динамический конфигуратор типов. Поскольку тип - тот же список полей и методов, представленных объектами типа CodDom. Только теперь необходимо описать отношения между классами, полями, свойствами, и т.д. по меньшей мере используя язык Онтологий (OWL). Для описания связей с методами необходимо расширить список шаблонов до шаблонов предложений естественного языка, последовательности команд, до шаблонов монологов и диалогов.
Проект, в том числе код, пишется на русском, поскольку имена типов, полей и методов нужны для непрофессиональных программистов. Кроме того, имена всех Framework типов, вместе с пространствами требуют перевода на русский. Для других стран, соответственно на их языки.
Проект по созданию базы переводов будет включен в проект.

Полагаю что весь код уже когда-то кем-то написан. И программисты во всем мире каждый день переписывают, то что уже существует.

Справка


Last edited Sep 26, 2012 at 7:54 AM by vad8888, version 42