ДРАКОН, блок-схемы, как их рисовать ?
От: PSV100  
Дата: 27.06.12 15:35
Оценка: 46 (3)
Эта тема возникла из-за обсуждаемого рядом ДРАКОНа
Автор: Владимир Паронджанов
Дата: 23.05.12
. Решил задать вопрос в новой теме, ибо в том разделе уже накидали много сообщений, и тема фактически уже неактивна.

Мне (и коллегам) иногда приходится рисовать схемки для обсуждения алгоритмов, причём часто со специалистами в прикладной области (которые не программисты), иногда и они сами рисуют алгоритмы. Раньше рисунки напоминали типовые советские блок-схемы. Были попытки применять псевдо-программный язык — не прижилось, не нравится ни кому — ни программистам, ни остальным. Не помню сколько лет назад я встретил информацию о ДРАКОНе, рисунки в его стили оказались реально приятнее классических блок-схем, хотя синтаксис и правила соблюдаются не идеально (пару слов по этому поводу здесь
Автор: PSV100
Дата: 25.06.12
). Действительно, ДРАКОН облегчает восприятие алгоритмов, но он тоже "не безгрешен", здесь есть пример. В соответствующей теме про ДРАКОН всплыла интересная забытая Р-технология, как реальная альтернатива блок-схемам и ДРАКОНу тоже (здесь
Автор: FR
Дата: 21.06.12
, здесь, здесь, здесь). Что лучше/удобнее/нагляднее: блок-схемы/ДРАКОН/Р-технология — пока сказать сложно без практического опыта. Но эта Р-технология опять заставила задуматься над самим процессом создания схем.

Основная проблема визуальной алгоритмизации — много возни для рисования схем. Иногда реально возникает желание иметь какой-то транслятор, ибо задалбывает сначала всё разрисовать, а потом ещё и запрограммировать (правда, всё-равно программируется лишь "по мотивам" схем). Сейчас всем проще рисовать вручную на бумаге, "рефакторинг" реально напрягает. Доступные графические редакторы неудобны в работе. Были попытки попробовать рисовать в псевдо-графике, например, по таким мотивам:
    +-----------+        +---------+  
    |    PLC    |        |         |                
    |  Network  +<------>+   PLC   +<---=---------+ 
    |    cRED   |        |  c707   |              | 
    +-----------+        +----+----+              | 
                              ^                   | 
                              |                   | 
                              |  +----------------|-----------------+
                              |  |                |                 |
                              v  v                v                 v
      +----------+       +----+--+--+      +-------+---+      +-----+-----+       Windows clients
      |          |       |          |      |           |      |           |      +----+      +----+
      | Database +<----->+  Shared  +<---->+ Executive +<-=-->+ Operator  +<---->|cYEL| . . .|cYEL|
      |   c707   |       |  Memory  |      |   c707    |      | Server    |      |    |      |    |
      +--+----+--+       |{d} cGRE  |      +------+----+      |   c707    |      +----+      +----+
         ^    ^          +----------+             ^           +-------+---+
         |    |                                   |                        
         |    +--------=--------------------------+                    
         v                                                             
+--------+--------+                                                         
|                 |                                                         
| Millwide System |            -------- Data ---------                      
| cBLU            |            --=----- Signals ---=--                      
+-----------------+


что превращается в:



Это пример отсюда, так можно рисовать и для ДРАКОНа. Но в псевдо-графике схемы не так наглядны и более громоздки, чем "рисованные". К тому же нужно осваивать эмакс (вариант не для всех) или писать плагины для других редакторов (псевдо-графику тоже нужно удобно вводить).

Были мысли сделать текстовое описание для схем, что-то вроде:
digraph G {
  size="8,6"
  ratio=expand
  edge [dir=both]
  plcnet [shape=box, label="PLC Network"]
  subgraph cluster_wrapline {
    label="Wrapline Control System"
    color=purple
    subgraph {
    rank=same
    exec
    sharedmem [style=filled, fillcolor=lightgrey, shape=box]
    }
    edge[style=dotted, dir=none]
    exec -> opserver
    exec -> db
    plc -> exec
    edge [style=line, dir=both]
    exec -> sharedmem
    sharedmem -> db
    plc -> sharedmem
    sharedmem -> opserver
  }
  plcnet -> plc [constraint=false]
  millwide [shape=box, label="Millwide System"]
  db -> millwide

  subgraph cluster_opclients {
    color=blue
    label="Operator Clients"
    rankdir=LR
    labelloc=b
    node[label=client]
    opserver -> client1
    opserver -> client2
    opserver -> client3
  }
}


что даёт:



Но подобное описание является, фактически, своим языком программирования, от чего, собственно, и избавляются в нашей задаче. Хотя для "плоских" схем, вида диаграммы последовательности, текстовое описание можно "переварить":
title Example Sequence Diagram
activate Client
Client -> Server: Session Initiation
note right: Client requests new session
activate Server
Client <-- Server: Authorization Request
note left: Server requires authentication
Client -> Server: Authorization Response
note right: Client provides authentication details
Server --> Client: Session Token
note left: Session established
deactivate Server
Client -> Client: Saves token
deactivate Client


результат:



Но такое текстовое описание всё-таки уступает в наглядности рисунку схемы, и, в любом случае, это ещё одно "программирование", хоть DSL и не сложный.

Вот в "древней" Р-технологии схемы специально заточены для возможности работы в текстовом представлении. Вот пример:



Сейчас есть мысли попробовать такие схемы на практике, но прежде, чем ломать голову над тем, как приспособить текстовый редактор для них, всё-таки хотелось бы познать, какие есть варианты для несложного создания схем. Поэтому вопросик такой. Может кто-то из своей практики поделится успешным опытом удобного и быстрого создания каких-то визуальных схем? Интересуют любые способы: как графический редактор с мышкой (может и тачскрин), так и текстовое "программирование". Тип схем не важен: блок-схемы, всякие диаграммы и пр., возможно что-то есть реально удобное среди инструментария для инженерных систем (в этой сфере у меня опыта нет).

Спасибо.
Re: ДРАКОН, блок-схемы, как их рисовать ?
От: Владимир Паронджанов Россия http://drakon.su/ Форумы сайта http://forum.drakon.su
Дата: 27.06.12 17:03
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>... я встретил информацию о ДРАКОНе, рисунки в его стили оказались реально приятнее классических блок-схем,


Согласен.

PSV>хотя синтаксис и правила соблюдаются не идеально


Не согласен. Мне неизвестны опровергающие примеры.

PSV>(пару слов по этому поводу здесь
Автор: PSV100
Дата: 25.06.12
).


Не понял. В этой "паре слов" я не обнаружил опровергающих примеров.

PSV>Действительно, ДРАКОН облегчает восприятие алгоритмов,


Согласен.

PSV>но он тоже "не безгрешен", здесь есть пример.


Не согласен. Данный пример НЕ является опровергающим. Участники дискуссии пытались "нарушить" правила ДРАКОНа.
Вывод простой: ПРАВИЛА ДРАКОНа НЕ НАДО НАРУШАТЬ. Тогда не будет никаких проблем.

PSV>Основная проблема визуальной алгоритмизации — много возни для рисования схем.


Согласен. Но если пользоваться дракон-редакторами Геннадия Тышова или Степана Митькина, то ситуация меняется.
Возни будет гораздо меньше.

PSV>Сейчас всем проще рисовать вручную на бумаге,


Не согласен. Редакторы Тышова и Митькина изменяют ситуацию.
Кроме того, они могут доработать редакторы, если Вы их уговорите. Попробуйте.
С уважением В. Паронджанов
Re: ДРАКОН, блок-схемы, как их рисовать ?
От: Владимир Паронджанов Россия http://drakon.su/ Форумы сайта http://forum.drakon.su
Дата: 27.06.12 18:21
Оценка: :))
Здравствуйте, PSV100, Вы писали:

PSV>Мне (и коллегам) иногда приходится рисовать схемки для обсуждения алгоритмов, причём часто со специалистами в прикладной области (которые не программисты), иногда и они сами рисуют алгоритмы.


PSV>В соответствующей теме про ДРАКОН всплыла интересная забытая Р-технология, как реальная альтернатива блок-схемам и ДРАКОНу тоже...


PSV>Что лучше/удобнее/нагляднее: блок-схемы/ДРАКОН/Р-технология — пока сказать сложно без практического опыта.


Для Вашего случая Р-технология Игоря Вельбицкого не подойдет. Хотите попробовать — пробуйте. По моему мнению, Вы зря потеряете время.

Для Вашего случая альтернативы Дракону нет.
К сожалению, Вы используете "самодельный", испорченный Дракон. К тому же Вы работаете вручную.

Чтобы поправить дело, могу рекомендовать Вам книгу

Паронджанов В. Д. Учись писать, читать и понимать алгоритмы. Алгоритмы для правильного мышления. Основы алгоритмизации. – М.: ДМК Пресс, 2012. – 520 с. — Иллюстаций 272.

http://www.dmk-press.ru/catalog/computer/programming/978-5-94074-800-7/
http://www.dmk-press.ru/catalog/computer/programming/978-5-94074-800-8_ebook/
С уважением В. Паронджанов
Re: ДРАКОН, блок-схемы, как их рисовать ?
От: VladZharinov  
Дата: 28.06.12 09:57
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>Эта тема возникла из-за обсуждаемого рядом ДРАКОНа
Автор: Владимир Паронджанов
Дата: 23.05.12
. Решил задать вопрос в новой теме, ибо в том разделе уже накидали много сообщений, и тема фактически уже неактивна.

Некоторые мысли и по Вашему топику в той ветке, и здесь — без цитирования для быстроты.

1. По упрощению синтаксиса — такое уже сделал Дмитрий_ВБ для своих сред графпрограммирования УВК — в ДАЛВЯЗ-решении. Мне это кажется ограничением возможностей графов — но есть и свои резоны для конкретных условий (Вы их во многом повторили).

2. По связке с текстом — да, есть и такие разработки. Не для техноязыка, но как "техзадание" — наверное, этот редактор. Для ДАЛВЯЗ тоже проводятся эксперименты в этом направлении. Считаю совершенно правильным — схема должна отражать некий текстовый формат один в один.
Связывать можно и не графы, а те самые упрощённые представления. Но тут надо продумывать, как они будут выглядеть. Некоторые мысли здесь — там же в ветке видно, что народ думает и что-то уже реализует...

3. По опыту — есть такой. Примеры можно найти на этой странице и на связанной хотя бы. Именно чтобы не осваивать что-то помимо офисных пакетов и/или знакомых редакторов диаграмм...

Вот так пока...
Re: ДРАКОН, блок-схемы, как их рисовать ?
От: Nikita123 Россия  
Дата: 28.06.12 12:37
Оценка: +1
Здравствуйте, PSV100, Вы писали:

PSV>Эта тема возникла из-за обсуждаемого рядом ДРАКОНа
Автор: Владимир Паронджанов
Дата: 23.05.12
. Решил задать вопрос в новой теме, ибо в том разделе уже накидали много сообщений, и тема фактически уже неактивна.


PSV>Мне (и коллегам) иногда приходится рисовать схемки для обсуждения алгоритмов, причём часто со специалистами в прикладной области (которые не программисты), иногда и они сами рисуют алгоритмы.

<skipped>
UML спасет отца русской демократии! UML — это общепризнанный мировой стандарт. Есть много разных редакторов для рисования UML-диаграмм.
Книг по UML тоже издано много. Не связывайтесь с доморощенными драконами и прочей ерундой. Только время потеряете.
Желаю успеха,
Никита.
Re[2]: ДРАКОН, блок-схемы, как их рисовать ?
От: Mamut Швеция http://dmitriid.com
Дата: 28.06.12 20:44
Оценка: +1
PSV>>но он тоже "не безгрешен", здесь есть пример.

ВП>Не согласен. Данный пример НЕ является опровергающим. Участники дискуссии пытались "нарушить" правила ДРАКОНа.

ВП>Вывод простой: ПРАВИЛА ДРАКОНа НЕ НАДО НАРУШАТЬ. Тогда не будет никаких проблем.

Без надежды на ответ. По ссылке показан пример, который при использовании Дракона становится более запутанным и менее наглядным.

В частности, тут: http://forum.oberoncore.ru/viewtopic.php?f=78&amp;t=3184&amp;start=20#p60536 и тут: http://forum.oberoncore.ru/viewtopic.php?f=78&amp;t=3184&amp;start=40#p61677

Вы способны не цитировать текст десятками страниц, а привести правильно решение этих вопросов?


dmitriid.comGitHubLinkedIn
Re[2]: ДРАКОН, блок-схемы, как их рисовать ?
От: PSV100  
Дата: 29.06.12 17:46
Оценка:
Здравствуйте, Владимир Паронджанов, Вы писали:

ВП>Для Вашего случая Р-технология Игоря Вельбицкого не подойдет. Хотите попробовать — пробуйте. По моему мнению, Вы зря потеряете время.


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

ВП> К сожалению, Вы используете "самодельный", испорченный Дракон. К тому же Вы работаете вручную.


"Самодеятельность" в Драконе вынужденная, это следствие упрощения работы вручную. К сожалению, доступные графические ДРАКОН-редакторы, как и многие универсальные "рисовалки" различных схем, неудобны в работе, особенно на фоне программистских редакторов/IDE. Дракон-редакторы тоже используются, в основном, чтобы нарисовать схемку "красивенько". К тому же, иногда использование программ для рисования затруднительно, например, схемки рисуются на бумаге по ходу дела во время коллективного обсуждения какой-то проблемы, или когда требуется от какого-нибудь специалиста изложить свои мысли, при этом "украсть" его драгоценное время можно не более получаса.

Вот сейчас и ищется вариант продуктивного создания схем алгоритмов.
Re[2]: ДРАКОН, блок-схемы, как их рисовать ?
От: PSV100  
Дата: 29.06.12 18:27
Оценка:
Здравствуйте, VladZharinov, Вы писали:

VZ>1. По упрощению синтаксиса — такое уже сделал Дмитрий_ВБ для своих сред графпрограммирования УВК — в ДАЛВЯЗ-решении. Мне это кажется ограничением возможностей графов — но есть и свои резоны для конкретных условий (Вы их во многом повторили).


VZ>2. По связке с текстом — да, есть и такие разработки. Не для техноязыка, но как "техзадание" — наверное, этот редактор. Для ДАЛВЯЗ тоже проводятся эксперименты в этом направлении. Считаю совершенно правильным — схема должна отражать некий текстовый формат один в один.


VZ>Связывать можно и не графы, а те самые упрощённые представления. Но тут надо продумывать, как они будут выглядеть. Некоторые мысли здесь — там же в ветке видно, что народ думает и что-то уже реализует...


VZ>3. По опыту — есть такой. Примеры можно найти на этой странице и на связанной хотя бы. Именно чтобы не осваивать что-то помимо офисных пакетов и/или знакомых редакторов диаграмм...


Большое спасибо за мысли и ссылки, по возможности всё посмотрю. На первый быстрый взгляд пока не увидел что-то желанное для себя, например, что-то вроде org-mode для эмакс (органайзер, структурные документы, таблицы, псевдографика и пр.) — удобно и продуктивно, всё в текстовом виде (а это даёт возможность использовать всю мощь и эффективность текстового редактора, а также это — сравнение файлов, контроль версий и т.д.).

Пока вывод такой: "квадратики" и линии — тяжело рисовать. "Будем искать..."
Re[2]: ДРАКОН, блок-схемы, как их рисовать ?
От: PSV100  
Дата: 29.06.12 18:37
Оценка:
Здравствуйте, Nikita123, Вы писали:

N>UML спасет отца русской демократии! UML — это общепризнанный мировой стандарт. Есть много разных редакторов для рисования UML-диаграмм.

N>Книг по UML тоже издано много. Не связывайтесь с доморощенными драконами и прочей ерундой. Только время потеряете.

Пока Бог миловал "uml-ить", дальше образовательных целей я с ним не связывался и большого счастья я там не вижу.
В общем, можно и свои квадратики со стрелочками выдумать, сейчас не в этом суть. Тут больше банально техническая проблема — как легко, быстро, наглядно их создавать.
Re[3]: ДРАКОН, блок-схемы, как их рисовать ?
От: Mamut Швеция http://dmitriid.com
Дата: 29.06.12 19:46
Оценка:
N>>Книг по UML тоже издано много. Не связывайтесь с доморощенными драконами и прочей ерундой. Только время потеряете.

PSV>Пока Бог миловал "uml-ить", дальше образовательных целей я с ним не связывался и большого счастья я там не вижу.


Но при этом в исходном сообщении приведены схемы, которые в UML давно стандартизированы, например.

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


Нанимаем иллюстратора — и вперед


dmitriid.comGitHubLinkedIn
Re: ДРАКОН, блок-схемы, как их рисовать ?
От: Cyberax Марс  
Дата: 29.06.12 20:58
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>Эта тема возникла из-за обсуждаемого рядом ДРАКОНа
Автор: Владимир Паронджанов
Дата: 23.05.12
. Решил задать вопрос в новой теме, ибо в том разделе уже накидали много сообщений, и тема фактически уже неактивна.

PSV>Основная проблема визуальной алгоритмизации — много возни для рисования схем. Иногда реально возникает желание иметь какой-то транслятор, ибо задалбывает сначала всё разрисовать, а потом ещё и запрограммировать (правда, всё-равно программируется лишь "по мотивам" схем). Сейчас всем проще рисовать вручную на бумаге, "рефакторинг" реально напрягает.
У нас учёные рисуют на iPad'ах в OmniGraffle. Не на формальном языке, а просто в виде стрелочек с квадратиками для упрощения понимания (или в процессе обсуждения).

Но формальные документы пишем чистым текстом, с алгоритмами на псевдоязыке.
Sapienti sat!
Re[3]: ДРАКОН, блок-схемы, как их рисовать ?
От: Privalov  
Дата: 30.06.12 06:16
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>Наш технологический процесс позволяет попробовать даже иероглифы . В любом случае, неудача — это тоже опыт. А вот конструктивная критика Р-технологии была бы полезной.


Я нашел критику Р-технологии в этом документе. В нем на странице 13 говорится:

Использование P-схем для графического описания УА РВ затрудняет тот факт [30], что она не предусматривает средств адаптации к специфике конкретной БЦВМ, а также отсутствие возможностей для описания параллельного функционирования программ в режиме реального времени.

Это весь конструктив. Кстати, при описании ДРАКОНа в этом документе снова использовалась схема с рыбалкой.
Re[4]: ДРАКОН, блок-схемы, как их рисовать ?
От: Владимир Паронджанов Россия http://drakon.su/ Форумы сайта http://forum.drakon.su
Дата: 30.06.12 11:19
Оценка:
Уважаемый PSV100!

Учитывая Ваш интерес к Р-технологии Вельбицкого, я не поленился
и заглянул в архивы ЦРУ (CIA USA), разумеется, рассекреченные.
http://www.foia.cia.gov/docs/DOC_0000498691/DOC_0000498691.pdf

Отчет ЦРУ выпущен в мае 1990 года, рассекречен через 10 лет — в 2000 году.
См. стр. 7. Там написано следующее:


R-technology: A structured-design software engineering methodology developed in the early 1970s.

R-technology has been used by software developers in the USSR’s strategic missiles industries.

The Soviets claim that R-technology enables software professionals to electronically “draw” on a computer screen the algorithmic design of the software, which is then automatically mapped to a compiler that generates executable object code.


Вот и все. Как видите, совсем не много. Но, как говорится, с паршивой овцы хоть шерсти клок. Я имею в виду ЦРУ, а не Р-технологию.

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

По моему мнению, Вельбицкий — пионер, основоположник и первопроходец. Он создал первую в истории нашей страны визуальную технологию программирования. Но этим не ограничился.

Обладая неукротимой энергией и гигантской пробивной силой, он пошел дальше. Игорь Вячеславович попытался вывести Р-технологию на мировой уровень. Он мечтал завоевать весь мир. Не получилось.

В любом случае, это был научный подвиг. За это честь ему и хвала.
И низкий поклон.

Вместе с тем, надо честно признать, что Вельбицкий потерпел неудачу. Такой, увы, часто бывает судьба первопроходцев. Главное, что дело, которому он посвятил жизнь, не пропало. Оно продолжается. Пусть в другой форме. Но на том же краеугольном камне.

На краеугольном камне, который заложил Игорь Вячеславович Вельбицкий.
С уважением В. Паронджанов
Re[4]: ДРАКОН, блок-схемы, как их рисовать ?
От: VladZharinov  
Дата: 01.07.12 08:57
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Кстати, при описании ДРАКОНа в этом документе снова использовалась схема с рыбалкой.

Дык возможно, это весь ассортимент, что был на тот момент (2008/09) доступен... автор ведь не из НПЦ АП...
Кстати, по этому же — не так давно обсуждалась по крайней мере одна ГРАФИТ-ФЛОКС-схема — начиная отсюда: http://forum.oberoncore.ru/viewtopic.php?p=43805#p43805 (ну и там практически до конца ветки). Там и подход к параллелизму обсуждался. Также была небольшая ветка по технологии в целом: http://forum.oberoncore.ru/viewtopic.php?f=62&amp;t=1091.

Ещё по вопросам укладки графа маршрутов. Замечание Mamut
Автор: Mamut
Дата: 29.06.12
по этому поводу можно прокомментировать так. Для упорядочения маршрутов в техноязыке взят как приоритетный принцип "по шампуру (крайний слева, строго по прямой) — самый главный (в смысле какого-то критерия, вводимого по смыслу задачи)". Для иллюстрации отличий от побочных можно использовать развёртку — скажем, приведённую в этом пункте.
В показанных случаях есть пересечения, которые можно устранить рокировкой (обменом выходов ветвлений — и соответственно начинаемых ими маршрутных участков). Но. При этом главный маршрут может оказаться не "по шампуру"... Заметим, что это можно установить только по конкретному содержанию схемы — а там обсуждаются т.н. литеральные схемы, в которых тексты вершин абстрагированы индексами. Но для сути вопроса это неважно.
И вот вопрос — а как сохранить "правило главного" и при этом избежать пересечений? Получается, что надо вводить дополнительные средства — конструкции перехода условного (переключатели) или безусловного ("петля" силуэта).
В ряде случаев, IMHO, есть и другой путь — изначально строить логику маршрутов иначе. Здесь могут помочь конструкции Дейкстры. И прежде всего его цикл — как иная форма, так сказать, "универсальной программы", чем силуэт. Можно видеть на примерах для обычной и автоматной программ. Разумеется, так же приложимо и к алгоритмам материальных процессов — хотя бы здесь.
Как сказал PSV100, в некотором смысле переход к ЦД можно понимать как "упрощение" графовой записи алгоритма. Да, тут условия выбора единиц структуры "вытаскиваются" в "шапку" схемы (принцип рассмотрен здесь). И перехды между единицами остаются тлько условные — веточные соединители не нужны. Но главная цель другая — выделять единицы структуры и условия их выбора по смыслу процесса.
Разумеется, и здесь возможна критика... Прежде всего — из условий не всегда понятен смысл веток. Для этого вводятся комментарии (на схемах отделены знаком тождества).
Re: ДРАКОН, блок-схемы, как их рисовать ?
От: os24ever
Дата: 01.07.12 13:13
Оценка:
PSV>Сейчас есть мысли попробовать такие схемы на практике

Р-технология исходит из того, что циклы создаются с помощью оператора перехода вверх по программе, как в Алголе.

Как выяснилось недавно, циклы — те же функции, но над ними построены т.н. замыкания
Автор: Mamut
Дата: 11.06.12
: это безымянные функции, которые имеют доступ к переменным, созданным на один уровень выше.

Технически, циклы можно строить точно так же, как функции, с помощью стека адресов возврата, убрав из набора команд процессора goto вверх по программе и оставив только переходы вперёд.

Так же выглядели циклы в Фортране, Паскале и ПЛ/1. И в Рексе и позднем Бейсике. Я вот думаю, когда же сдохнет последний приверженец Алгола, наконец.

Кстати, ДРАКОН представляет циклы как замыкания, т.е. как функции внутри функций.
замыкания и циклы
Re[2]: ДРАКОН, блок-схемы, как их рисовать ?
От: Владимир Паронджанов Россия http://drakon.su/ Форумы сайта http://forum.drakon.su
Дата: 01.07.12 13:49
Оценка: 8 (1)
Уважаемый PSV100!

Сообщаю Вам материал об Р-технологии, который отчасти можно рассматривать как критические замечания.
Чтобы отвлечься от моих личных оценок, буду приводить цитаты.

Передо мной журнал «Управляющие системы и машины» (УСиМ) за 1988 год, №4. В нем есть статья

Соболев В.Е. Вопросы интеграции метода МСПП и Р-технологии.



Поясню:
МСПП — метод многоуровневого структурного проектирования программ.
САА — система алгоритмических алгебр

Статья начинается так:

К числу прогрессивных методов разработки программ относятся метод многоуровневого структурного построения программ (МСПП) и Р-технология. По методу МСПП алгоритмы создаются в терминах операций модифицированной системы алгоритмических алгебр (САА) на формализованном языке, близком к естественному (в САА-схемах), а по Р-технологии — на Р-языке (в Р-схемах).


Даю выдержку из средины статьи:


САА-схемы ориентированы на подробное описание алгоритмов на языке, близком к естественному. Размер названий операторов и условий практически не ограничен. Предусмотрены средства повышения наглядности текста и комментарии, в которых могут быть записаны, например, детальные спецификации модуля и процедур.

Далее, Р-схемы отражают логику алгоритмов в удобной для зрительного восприятия форме. Их основные отличительные особенности — хорошая наглядность и компактность — отчетливо проявляются в сравнении с текстами на ЯП.

Однако попытка разместить на дугах содержательные тексты больших размеров (или вынести подробные комментарии) приводит, как правило, к потере этих качеств из-за роста «габаритов» рисунка и ухудшению его обозримости.

Кроме того, вероятно рассредоточение цельной информации по нескольким кадрам проектирования, если принять во внимание технологический аспект.

Что же касается функциональных описаний составных (элементарных) операторов и условий в области спецификаций (абстракций) чертежа, то они оторваны от мест расположения соответствующих алгоритмических элементов в Р-схеме.

Напротив, смысл операторов и условий САА-схемы воспринимается по ходу ее чтения.

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

Если же необходимо более детальное содержательное описание этих шагов, следует рассмотреть возможность применения САА-схем.

Допускается также сочетание текстовых и графических средств: на верхних уровнях проектирования алгоритма используется САА-схема, а для конкретизации ее элементарных операторов и условий — чертежи.



Про МСПП и САА можно, в частности, более подробно прочитать в книге:

Многоуровневое структурное проектирование программ. Теоретические основы, инструментарий / Е.Л. Ющенко, Г.Е. Цейтлин, В.П. Грицай, Т.К. Терзян. — М.: Финансы и статистика, 1989. — 208с.

С уважением В. Паронджанов
Re[2]: ДРАКОН, блок-схемы, как их рисовать ?
От: batu Украина  
Дата: 01.07.12 14:50
Оценка:
Здравствуйте, Nikita123, Вы писали:

N>UML спасет отца русской демократии! UML — это общепризнанный мировой стандарт. Есть много разных редакторов для рисования UML-диаграмм.

N>Книг по UML тоже издано много. Не связывайтесь с доморощенными драконами и прочей ерундой. Только время потеряете.
Там кроме квадратиков еще много чего есть.. Но чукча не читатель. Чукча писатель..
Re: ДРАКОН, блок-схемы, как их рисовать ?
От: _Obelisk_ Россия http://www.ibm.com
Дата: 01.07.12 16:03
Оценка:
Здравствуйте, PSV100, Вы писали:


PSV>Но подобное описание является, фактически, своим языком программирования, от чего, собственно, и избавляются в нашей задаче. Хотя для "плоских" схем, вида диаграммы последовательности, текстовое описание можно "переварить":

PSV>
PSV>title Example Sequence Diagram
PSV>activate Client
PSV>Client -> Server: Session Initiation
PSV>note right: Client requests new session
PSV>activate Server
PSV>Client <-- Server: Authorization Request
PSV>note left: Server requires authentication
PSV>Client -> Server: Authorization Response
PSV>note right: Client provides authentication details
PSV>Server --> Client: Session Token
PSV>note left: Session established
PSV>deactivate Server
PSV>Client -> Client: Saves token
PSV>deactivate Client
PSV>


Есть такой формальный язык MSC
http://www.sdl-forum.org/MSC2000/index.htm



Душа обязана трудиться! (с) Н.Заболоцкий.
Re: ДРАКОН, блок-схемы, как их рисовать ?
От: PSV100  
Дата: 02.07.12 23:25
Оценка: 38 (3)
У всех прошу прощения, не было возможности оперативно реагировать на сообщения в форуме. Попробую в одном посте дать ответы.

Здравствуйте, Privalov, Вы писали:

P>Я нашел критику Р-технологии в этом документе. В нем на странице 13 говорится:

P>

P>Использование P-схем для графического описания УА РВ затрудняет тот факт [30], что она не предусматривает средств адаптации к специфике конкретной БЦВМ, а также отсутствие возможностей для описания параллельного функционирования программ в режиме реального времени.

P>Это весь конструктив. Кстати, при описании ДРАКОНа в этом документе снова использовалась схема с рыбалкой.

То, что в Р-схемах нет привязки к специфики какой-то ЭВМ — так это плюс. И авторы Р-технологии, если я не ошибаюсь, изначально закладывали возможность указания параллельных процессов: если дуги графа не имеют условия своего выполнения, значит действия в этих дугах выполняются одновременно, и я предполагаю, что в точке, где сходятся дуги, процессы будут ждать завершения друг друга. В любом случае, можно придумать как начертить свое нужное видение параллельности. Одним словом, конструктива в той статье действительно нет.


Здравствуйте, Владимир Паронджанов, Вы писали:

ВП>Уважаемый PSV100!

ВП>Учитывая Ваш интерес к Р-технологии Вельбицкого, я не поленился
ВП>и заглянул в архивы ЦРУ (CIA USA), разумеется, рассекреченные.
ВП>[...]
ВП>По моему мнению, Вельбицкий — пионер, основоположник и первопроходец. Он создал первую в истории нашей страны визуальную технологию программирования. Но этим не ограничился.
ВП>Обладая неукротимой энергией и гигантской пробивной силой, он пошел дальше. Игорь Вячеславович попытался вывести Р-технологию на мировой уровень. Он мечтал завоевать весь мир. Не получилось.
ВП>[...]

ВП>Сообщаю Вам материал об Р-технологии, который отчасти можно рассматривать как критические замечания.

ВП>Чтобы отвлечься от моих личных оценок, буду приводить цитаты.
ВП>Передо мной журнал «Управляющие системы и машины» (УСиМ) за 1988 год, №4. В нем есть статья
ВП>[...]

Владимир Даниелович, спасибо за "шпионские" сведения и остальные материалы. С некоторыми предположениями я соглашусь (об этом ниже), но вызывает сомнение то, что Вельбицкий с Р-технологией пытался завоевать весь мир — как-то незаметны следы такой попытки.


Я немного пощупал Р-схемы, и, так как в этой теме опять есть небольшое обсуждение ДРАКОНа и к нему добавилась и Р-технология, то могу поделиться своими мыслями по этому поводу.

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

Так вот, всплыли некоторые нюансы Р-схем:

— небольшое общение с "непрограммистами" пока показало, что блок-схемы для них как-то нагляднее, понятнее, проще. Р-схемы для них — это уже что-то "инженерное", они напоминают принципиальные электрические схемы. Т.е. "попса" — квадратики и стрелки — им милее. Короче говоря, попсовость и гламурность у Р-схем несколько занижена.

— В Р-схемах сделан упор на текстовое содержание над и под дугами (а также и в именованных вершинах), т.е. основной смысл схемы задаётся текстом. К тому же это похоже на школьные математические рисунки, когда над/под геометрическими фигурами или отрезками писались формулы. В результате Р-схемы лучше адаптированы для "вписания" в них математических формул или программного текста, т.е. указание присваивания переменных, операторов, вызов функций (со скобками в том числе) и пр. в таком же виде, как и в текстовом языке программирования. В блок-схемах и ДРАКОНе используется различие во внешнем виде икон, которые сами по себе несут определенную смысловую нагрузку. Поэтому блок-схемы гораздо приятнее, когда внутри икон указывается только краткий поясняющий текст. Здесь на форуме совершенно справедливо указали, что такие ДРАКОН-схемы, как здесь — алгоритм быстрой сортировки, когда программа на Питоне "вписана" в графическую схему — для программистов ненаглядны: это что-то вроде зарисовки математических формул вместо их прямого написания, что, возможно, пригодно лишь для образовательных целей. Имхо, Паронджанову лучше начинать знакомство программистов с ДРАКОНом на примере таких инженерных схем, как эта: http://forum.oberoncore.ru/viewtopic.php?p=43805#p43805 (ссылку здесь на форуме предоставил VladZharinov). Здесь ДРАКОН во всей своей красе. Затем показательные выступления лучше перенести на алгоритмы уровня рыбалки и поездки на автобусе — это стихия ДРАКОНа, и, как бонус, для тех, кому нужно, можно заявить о "гибридности" ДРАКОНа с языками С, Pascal и пр. (где самая вкусность: ДРАКОН-АДА ).

— Р-схемы несколько компактнее по сравнению с блок-схемами и ДРАКОНом, но не на много, особенно если рисовать комментарии сверху/снизу дуг. В текстовой псевдо-графике Р-схемы лучше, чем квадратики блок-схем, но тоже "не ахти". Также в Р-схемах несколько слабо выделяются переходы на именованные дуги, и есть некий визуальный шум из-за наличия явных знаков "стрелка" и кружочков/крестиков-вершин. Возможно, что-то можно доработать напильником, но вряд ли получатся кардинальные сдвиги.

— Имхо, Р-схемы несколько проще составляются, чем ДРАКОН-схемы. Они имеют меньше требований, допускают пересечение линий (что "проглатывается" лучше, чем в блок-схемах). В ДРАКОНе нужно больше напрягаться, чтобы нарисовать наглядную схему. Здесь на форуме уже говорилось об этом (например, здесь
Автор: Mamut
Дата: 29.06.12
или здесь
Автор: VladZharinov
Дата: 01.07.12
).

— В Р-схемах можно придумать, как задать силуэт ДРАКОНа, только шампура будут расположены горизонтально. Получим "мангал-метод"


Р-схемы и ДРАКОН, как и многие графические языки, имеют общие недостатки, например:

— наглядность схем снижается, когда они довольно громоздкие;
— схемы плохие, когда указано много содержательного текста внутри иконы или над/под дугами графа;
— понимание схем затрудняется, когда схема не видна целиком, например, на мониторе при работе в графическом редакторе. К тому же, как-то неудобно или непривычно работать в режиме поэтапного или циклического создания схем: где-то тут нарисовал кусочек, затем там и т.д. Очень много зависимостей от инструментальных средств.

При этом я не затрагиваю тему отсутствия или неразвитости в графических технологиях таких средств, как сравнение схем, ведение истории версий, отладчик, профилировщик, анализатор кода (выявление неиспользованного кода и пр.), слабые базовые операции для модификации схем (отключение/комментирование участков схем, различные преобразования, да и копирование, вставки, автодополнение и т.д и т.п. — всё слабо развито или не так удобно по сравнению с текстовыми редакторами/IDE).

Что удобнее/лучше — ДРАКОН или Р-схемы — однозначно ответить нельзя. Для "рядовых смертных" доступнее "попса" — квадратики и стрелки, для программистов, инженеров и прочих "продвинутых" — Р-схемы вполне могут себя оправдать.


И пока ещё не нашлось удобного способа создания схем. Здесь на форуме затронули гугловский Blockly и Scratch, они напомнили о диаграммах Насси — Шнейдермана (или здесь), что-то общее у них есть, это ещё одна альтернатива блок-схемам. Попробую покурить бамбук с мыслями прикрутить к ним силуэтное программирование от ДРАКОНа. Если удастся добиться адекватного внешнего вида для схем, то есть шанс что-то придумать для ввода данных некий аналог таблиц в org-mode эмакса. Хотя очень сомневаюсь, что будет толк.
Re[2]: ДРАКОН, блок-схемы, как их рисовать ?
От: VladZharinov  
Дата: 06.07.12 07:16
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>То, что в Р-схемах нет привязки к специфики какой-то ЭВМ — так это плюс. И авторы Р-технологии, если я не ошибаюсь, изначально закладывали возможность указания параллельных процессов: если дуги графа не имеют условия своего выполнения, значит действия в этих дугах выполняются одновременно, и я предполагаю, что в точке, где сходятся дуги, процессы будут ждать завершения друг друга.


Пожалуй, совпадает со сказанным здесь.

PSV> Имхо, Паронджанову лучше начинать знакомство программистов с ДРАКОНом на примере таких инженерных схем, как эта: http://forum.oberoncore.ru/viewtopic.php?p=43805#p43805. Здесь ДРАКОН во всей своей красе. Затем показательные выступления лучше перенести на алгоритмы уровня рыбалки и поездки на автобусе — это стихия ДРАКОНа, и, как бонус, для тех, кому нужно, можно заявить о "гибридности" ДРАКОНа с языками С, Pascal

PSV>В любом случае, можно придумать как начертить свое нужное видение параллельности.
Кстати, ветка, в которой появилась та инженерная схема, как можно видеть, в основном как раз посвящена была именно этому. Сам ВП в дальнейшем предложил решение, основанное на операторах синхронизации — см. эту ветку.

PSV>- В Р-схемах можно придумать, как задать силуэт ДРАКОНа, только шампура будут расположены горизонтально. Получим "мангал-метод"

Есть такое — "синт-силуэт" — можно видеть здесь. Кстати, применение в такой схеме, наряду с "синт-переключателями", ОС-узлов (суть IDEF3-"перекрёстков"), может помочь адекватному представлению непрограмvно строгих описаний (скажем, текстовых НД) — говорил здесь.

PSV>- В Р-схемах сделан упор на текстовое содержание над и под дугами (а также и в именованных вершинах), т.е. основной смысл схемы задаётся текстом. К тому же это похоже на школьные математические рисунки, когда над/под геометрическими фигурами или отрезками писались формулы. В результате Р-схемы лучше адаптированы для "вписания" в них математических формул или программного текста, т.е. указание присваивания переменных, операторов, вызов функций (со скобками в том числе) и пр. в таком же виде, как и в текстовом языке программирования. В блок-схемах и ДРАКОНе используется различие во внешнем виде икон, которые сами по себе несут определенную смысловую нагрузку. Поэтому блок-схемы гораздо приятнее, когда внутри икон указывается только краткий поясняющий текст. Здесь на форуме совершенно справедливо указали, что такие ДРАКОН-схемы, как здесь — алгоритм быстрой сортировки, когда программа на Питоне "вписана" в графическую схему — для программистов ненаглядны: это что-то вроде зарисовки математических формул вместо их прямого написания, что, возможно, пригодно лишь для образовательных целей.

А что будет нагляднее? Возможно, структурные скобки, как здесь?..
PSV>- наглядность схем снижается, когда они довольно громоздкие;
PSV>- схемы плохие, когда указано много содержательного текста внутри иконы или над/под дугами графа;
Да, тот же Усов (alexus) высказывался в том смысле, что для решения этих проблем можно двигаться по пути традиционных систем документации — вынося часть атрибутов графоэлементов в спецификации — см. его сообщение.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.