Sergey Dmitriev ([info]sergeydmitriev) wrote,
@ 2003-09-14 20:53:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Entry tags:language_oriented_programming

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

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

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

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

Продолжение следует...



(Post a new comment)


(Anonymous)
2003-09-17 12:34 pm UTC (link)
Однако, редактировать заколебет :)
И ошибки искать.

Немного ссылочек.
http://www.cs.virginia.edu/zephyr/
http://arxiv.org/abs/cs.PL/9810013
http://pirfir.sourceforge.net/file-formats.html
http://compilers.iecc.com/comparch/article/97-05-139

Вот что случается, когда хотят универсальности:
http://www.hardcoreprocessing.com/articles/presentations/tiliaoc/TheDocument.html
http://flint.cs.yale.edu/flint/publications/tcif.pdf

А вот это страходолбище должно умереть:
http://suif.stanford.edu/suif/suif2/doc-2.2.0-4/

(Reply to this)(Thread)


[info]sergeydmitriev
2003-09-22 10:19 am UTC (link)
Спасибо за ссылки! А насчет редактирования - чуть попозже я опубликую прототип - будет яснее что не должно заколебать.

(Reply to this)(Parent)


[info]rajaka
2003-09-22 05:25 am UTC (link)
Идею я считаю красивой и жизнеспособной. Не слишком хорошо разбираюсь в программировании, но, на мой взгляд, хорошие идеи тем и сильны, что даже неспециалист заметит их ценность.

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

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

(Reply to this)(Thread)


[info]sergeydmitriev
2003-09-22 10:24 am UTC (link)
Спасибо за поддержку! Энтузиазм же мой никоим образом не зависит от скептических замечаний. Я публикую свои мысли здесь во первых чтобы найти единомышленников, а во вторых чтобы получить конструктивную критику (вот с конструктивностью то пока есть проблема :().

(Reply to this)(Parent)(Thread)


[info]lnvp
2003-11-07 02:22 pm UTC (link)
Энтузиазм - очень ценное качество, завидую вам. Проблема с отсутствием конструктивной критики связана с тем, что краткого описания ваших идей не хватает, чтобы вообразить систему в деле. Вот, скажем, такая деталь: создаваемый пользователем граф будет расползаться в ширину - или вы собираетесь предусмотреть средства вкладывания/коллапса подграфов?

(Reply to this)(Parent)(Thread)


[info]sergeydmitriev
2003-11-09 07:01 pm UTC (link)
Как я уже говорил, редактор предполагается типа текстового, точнее это будет что-то вроде таблиц внутри таблиц внутри таблиц и т.д. Я прошу немного терпения и через некоторое время выложу прототип и станет все намного понятнее, а пока могу показать скриншот: http://www.sergeydmitriev.com/mps/mps_screenshot.gif

(Reply to this)(Parent)

для двумерного представления графа,
[info]dr_klm
2003-09-22 11:05 am UTC (link)
необходимо, чтобы он был планарным. Далеко не каждый граф является таковым.

К.Л.М.

(Reply to this)(Thread)

Re: для двумерного представления графа,
[info]sergeydmitriev
2003-09-22 12:59 pm UTC (link)
Требование планарности графа необходимо при выполнении одновременно всех следующих условий
1. все вершины и все линки изображены одновременно в одном окне
2. Нет разрывов в линках
3. Нет пересечений линков
4. Каждый узел изображаются только один раз.

В предложенном редакторе графа условия 1, 2, 4 могут и не выполняться.
Можно например изображать только некоторое поддерево графа в заданном окне, а некоторые линки просто показывать как гиперлинки которые ведут к другим окнам (или к другим частям графа)

(Reply to this)(Parent)(Thread)

можно...
[info]dr_klm
2003-09-22 01:04 pm UTC (link)
Справедливости ради хочу только отметить, что насчет окон в исходной записи ничего не было...

"поддерево"

Дерево, конечно, всегда планарный граф... Но не любой планарный граф -- дерево...

К.Л.М.

(Reply to this)(Parent)(Thread)

Re: Новый подход к программированию - продолжение
(Anonymous)
2003-09-30 01:26 am UTC (link)
Спасибо за то, что просветили, многоуважаемый доктор.
Очень рад, что Ваше благожелательное намерение сэкономить Сергею время и указать на явное незнание предмета Вашего изучения (проги, которые Вы писали со школы) не остановило его в интересном начинании.

(Reply to this)(Parent)(Thread)

не за что ! ;-)
[info]dr_klm
2003-09-30 02:42 am UTC (link)
Вы перекручиваете, дорогой анонимоус... У меня не было желания указать Сергею на незнание моего предмета, если я на какое незнание и указал (non-intentially) так это на незнание того, что имеет непосредственное отношение к избранному им подходу...

Упоминал я не "проги, которые я писал со школы", а "проги, которые я писал В школе". Чуете разницу ?

Чем бы ... лишь бы не плакало... ;-)

К.Л.М.

(Reply to this)(Parent)(Thread)


(Anonymous)
2003-10-06 01:41 pm UTC (link)
Зачем, собственно, нужна планарность-то? Пускай себе дуги пересекаются. Это ж все не для красоты.

(Reply to this)(Parent)

Куплю Windows
(Anonymous)
2007-07-17 04:20 am UTC (link)
Куплю Windows Куплю Office -Vista/XP/2003 softovip@mail.ru
и другой ЛИЦЕНЗИОННЫЙ софт
предложения на е-мейл softovip@mail.ru











































(Reply to this)


Create an Account
Forgot your login?
Login w/ OpenID
English • Español • Deutsch • Русский…