От: | Mamut | http://dmitriid.com | |
Дата: | 15.06.12 18:28 | ||
Оценка: |
Если я скажу, что ниша эффективного применения ДРАКОН-схем, как минимум, перекрывается с нишей программирования на основе конечных автоматов, это разрешит какие-то из Ваших вопросов?
Из личных примеров могу привести вот эти схемы: http://forum.oberoncore.ru/viewtopic.php?f=78&t=1148
Правда, это спецификация, а не программа.
На замечание по поводу того, что "чем это лучше блок-схем" можно сказать, как минимум, что ДРАКОН — один из немногих визуальных языков, которые регламентируют взаимное положение элементов схемы (т.е. если мы нарисуем граф вершин и связей, то его можно разместить на плоскости автоматически). Т.е. индивидуальные выкрутасы типа "а я вот это помещу сюда, а это сюда" полностью исключены.
M> ЧТо будет, если у нас будет не КА?
Речь о классе алгоритмов, которые определяют поведение (в широком смысле, как "грамматику возможных последовательностей событий"). И это очень широкий класс. Алгоритмы этой категории обычно хорошо описываются через введение состояний, они обычно имеют много развилок. И здесь ДРАКОН хорошо визуализует.
Если говорить об алгоритмах обработки данных (т.е. любая часть программы, смысл которой заключается не в вычислении чего-либо, в обработке структуры данных и т.п.; где одной и той же цели можно достичь разными способами), то там преобладает мелкая декомпозиция на функции, в основном циклы, много IF в одной функции, как правило, стараемся избегать — и здесь лично я у ДРАКОНа никаких преимуществ не вижу.
Ну, например, из личного опыта, опять же: система онлайн-кредитов в электронных деньгах. В ней есть верхний уровень — сценарии, которые решают "дать — не дать кредит", проводят все транзакции, связанные с этим. Там ДРАКОН хорош. При том, что уровнем ниже — в техническом коде — ему делать особенно было нечего...