Моя история находится
здесь на РСДН.
Здесь её финал на сегодня. Кратко в двух словах. Мне приходится рисовать ДРАКОН-схемки алгоритмов различных расчётов и иногда отображать материальные процессы. Потребность возникает редко, и схемы, в основном, набрасываются вручную на бумаге, из-за этого диаграммы лишь похожи на ДРАКОН (по второй ссылке есть наглядный пример). И иногда схемки приходится рисовать "нормально" в граф-редакторе. В принципе, исходная тема на РСДН и возникла из-за очередной попытки поиска удобного способа создания диаграмм, и пока результаты не успешны. Известные доступные ДРАКОН-редакторы недостаточно удобны в работе, во всяком случае, для программистов. В качестве компромисса (в плане применимости среди широкой аудитории пользователей), например, им не хватает функционала на уровне "вимператора" (известного плагина для FireFox), но это отдельная тема и сейчас не об этом. И вот относительно недавно (благодаря обсуждению ДРАКОНа на РСДН) я познакомился с Р-схемами, которые заставили призадуматься над "алго-рисованием", пришлось кроме вопросов относительно инструментария в очередной раз исследовать и потенциал различных графических нотаций для своих нужд. На данный момент Р-схемы показались мне вполне конкурентоспособными относительно ДРАКОНа (и др. языков).
Материалы для тех, кто не знаком с Р-схемами И.В. Вельбицкого:
-
статья И.В. Вельбицкий "Визуальное программирование графическими структурами";
-
Выборка из выше указанной статьи;
-
статья Вельбицкий И.В., Ковалёва А.Л. "Графический стиль программирования для персональной ЭВМ", Журнал "Микропроцессорные средства и системы" N4 1985г., стр.46-51;
-
книга Вельбицкий И.В., Ходаковская В.Н., Шолмов Л.И. - Технологический комплекс производства программ на машинах ЕС ЭВМ и БЭСМ-6 (1980);
-
пример из книги;
-
официальный сайт по Р-технологии;
-
немного истории;
- журнал
Кибертония за 01/2012 (с.46);
-
РТК - информация о комплексе;
- сведения об РТК на этом форуме:
*
здесь;
*
здесь;
- ГОСТ:
* 19.005-85
HTML PDF* 8631-94
HTML PDFИнформации о Р-технологии крайне мало, а о практическом применении толком ничего и не найти. Я позволю себе здесь указать несколько рисунков, чтобы можно было быстро понять сущность Р-схем.
Примерчик из статьи Вельбицкого:
![Изображение](http://emag.iis.ru/arc/infosoc/emag.nsf/5312565765062e8cc32575c2004f59bf/e72abd849fe68a7dc32576eb0034c090/Body/95.44CC?OpenElement&FieldElemFormat=gif)
Очевидно, что схемы кроме графического отображения могут иметь абсолютно идентичную форму текстовой записи. Удачная нотация, которая позволяет задавать не только алгоритмы в виде императива, но и в функциональном или декларативном стиле, даже "зарисовать" Пролог:
![Изображение](http://emag.iis.ru/arc/infosoc/emag.nsf/5312565765062e8cc32575c2004f59bf/e72abd849fe68a7dc32576eb0034c090/Body/109.40EE?OpenElement&FieldElemFormat=gif)
Кроме алгоритмов через одну и ту же нотацию можно задавать и различные структурные, активностные и пр. диаграммы:
![Изображение](http://emag.iis.ru/arc/infosoc/emag.nsf/5312565765062e8cc32575c2004f59bf/e72abd849fe68a7dc32576eb0034c090/Body/111.1322?OpenElement&FieldElemFormat=gif)
А здесь видно, что через один стиль схем указывается и алгоритмика, и сетевые графики и др. К тому же Р-схемы хорошо сочетаются с табличными данными, в т.ч. и когда таблицы "вписаны" во внутрь схем:
![Изображение](http://emag.iis.ru/arc/infosoc/emag.nsf/5312565765062e8cc32575c2004f59bf/e72abd849fe68a7dc32576eb0034c090/Body/105.2102?OpenElement&FieldElemFormat=gif)
Продублирую свой рисунок с РСДН. Можно считать, что это некая альтернатива попыткам описать бизнес-процессы, которые можно встретить, например, в
этой теме, или
здесь (прошу прощения за ручную мазню, но это вынужденная мера):
![Изображение](http://files.rsdn.ru/91237/r_koph.PNG)
Это попытка задать шампура от ДРАКОНа, но горизонтально ("мангал-метод"
![Smile :)](./images/smilies/icon_smile.gif)
, при необходимости вполне применимо драконовское правило "чем правее, тем хуже", но здесь "чем ниже мясо свисает с шампура, тем оно сильнее подгорает" ). Здесь нет полноценного графа, формально необходимо рисовать по таким мотивам:
![Изображение](http://files.rsdn.ru/91237/r_syl.PNG)
Засорять этот пост дальше не буду. Кратко мои выводы. По сравнению с ДРАКОНом Р-схемы имеют плюсы:
- уникальная простая нотация, позволяющая в одном стиле задать диаграммы разного типа (алгоритмические, структурные, отношений и т.д.);
- в алгоритмических схемах кроме маршрутной логики выделяется и структурная составляющая, например, хорошо видно, что входит в цикл;
- схемы растут горизонтально, что удобно при широкоформатных мониторах;
- механизм предикатов (условий над дугами) и возможность что-то декларировать в вершинах графа позволяют наглядно задавать неудобные для ДРАКОН-нотации вещи, как, скажем, обработка исключительных ситуаций, или указать сущность расщепления/соединения процессов в доалгоритмических схемах;
- Р-схемы имеют адекватное отображение и в текстовом виде, что имеет плюс в техническом плане (кроме среды/редактора есть возможность использовать сторонний инструментарий, как контроль версий, поиск и манипулирование текстом и пр.);
- правила составления схем, имхо, даже проще, чем в ДРАКОНе. Формально, в ГОСТе, есть и произвольные переходы, могут быть и пересечения (которые, кстати, здесь как-то "проглатываются" терпимо). Но "экстрим" пока можно не обсуждать, его можно и не допускать.
Обратная сторона медали. Во-первых, возникает вопрос насчёт наглядности. Вельбицкий в своей статье утверждал, что Р-схемы, прежде всего, непривычны по сравнению с типовыми блок-схемами, и, возможно, действительно чуть менее наглядны, но они более компактны, гибче и функциональны. После небольшой возни с Р-схемами я с такой позицией соглашусь. К ним привыкаешь быстро, и даже "тяжёлые" случаи, как двойная дуга, через которую могут задаваться циклы - осваиваются без заморочек. Несколько непривычно воспринимается произвольный текст в схемах (как в алгоритмах про рыбалку), но и этот момент быстро переваривается. А текст в виде некоего программного кода смотрится как родной, к этому нас приучили с детства рисунки на уроках геометрии, физики и пр. Одним словом, однозначно сказать, что наглядность "ниже плинтуса", я не могу, наоборот, вполне нормально глаз цепляется за рисунок.
Во-вторых, Р-схемы имеют больше претензий к качественной отрисовке. В них важно надписи и подписи визуально прикреплять к своей дуге, избегать хаоса из сумбурного текста. Поэтому Р-схемы требуют для себя места, так сказать, с запасом воздуха, при этом, что несколько обидно, в Р-схемах как бы меньше "квадратиков" по сравнению с блок-схемами благодаря предикатам, но в итоге пространства "сжирают" не на много меньше. К тому же Р-схемы не подходят в тех случаях, когда нужны гламурные диаграммы с градиентными заливками и тенями (правда, обычно сущность содержимого таких диаграмм на самом деле не имеют никакой пользы, кроме самого факта их наличия). В идеале, Р-схемы необходимо оформлять по ЕСКД, с рамочкой и штампом, ровненько чертить с "красивым почерком". Тогда и для "попсы" схемы приобретут оттенок инженерной солидности, и "большому начальнику" их не стыдно показать. Если схемки красивенько чертить, то в них вполне нормально вписывается содержательный (немалый) текст, особенно, если его оформлять как встроенную табличку (но с едва заметными разделительными линиями).
В общем, можно и ещё что-то сказать. В какой-то степени, эту тему форума можно считать дальнейшим развитием
этой темы, там, кстати, есть пару слов и про Р-схемы, но ничего существенного. Интересно мнение жителей OberonCore, особенно тех, кто ДРАКОН использует на практике и прочувствовал неудобства с ним в разных вопросах (а вопросы есть). Видит ли кто-то для себя альтернативу рисункам (ДРАКОН-схемам) в виде Р-чертежа алгоритма (и не только алгоритма) ?