Sergey Dmitriev (sergeydmitriev) wrote,
Sergey Dmitriev
sergeydmitriev

Новый подход к программированию - продолжение

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

До написания редактора я строил граф в виде набора вызовов Java методов.
Выглядело это все очень громоздко и нечитабельно. (В моем примере такой код занял раз в пять больше места, чем сам код моделируемого примера программы)
Кстати, такая попытка набивать граф в виде java кода показала еще один пример неэффективности универсального императивного языка для описания на нем данных. XML, представлялся лучшим вариантом, поскольку его основная цель – как раз описание данных, Однако, XML тоже весьма неэкономный язык.
(Например, попробуйте представить на XML те же арифметические выражения или SQL запросы.) Причина здесь – в универсальности языка XML. На самом деле XML – это метаязык, в котором грамматика задается схемой или DTD.

Я рассчитываю, что мой подход решит обе проблемы: удобное представление как данных любого типа, так и программ на разных языках.

Кратко – о редакторе. В общем речь идет о том чтобы иметь во первых, редактор любого узла графа. Я представляю этот редактор как набор прямоугольных ячеек, собранных в некое подобие таблицы. Каждая ячейка либо является некоторй константой, либо соответствует какому-нибудь свойству соответствующего семантического типа, либо линку на другой узел. Ячейка - редактор линка в свою очередь состоит либо из редактора ссылки на его целевой узел, либо из самого редактора целевого узла (который, по рекурсии, имеет такую же структуру).
Для каждого семантического типа задается раскладка (layout) его ячеек разных типов, а также информация, какие линки иметь в виде ссылок, а какие – в виде встроенных (in place) редакторов.
Во время редактирования одна из ячеек является текущей (выделенной). Ячейку можно выделить путем простой навигации по таблице с помощью клавиатуры. После выделения ячейки ее содержимое редактируется с клавиатуры и/или происходит выбор из списка возможных значений. Из любого места можно специальной клавишей добавить новый линк заданного типа.

Продолжение следует...
Tags: language_oriented_programming
  • Post a new comment

    Error

    default userpic
  • 12 comments