Визуальный язык ДРАКОН

Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность/Надёжность

Инструменты пользователя

Инструменты сайта


jazyk:soobschenija_o_jazyke_i_metode_ischislenija_ikon:drakon_shampur_ocenka

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
jazyk:soobschenija_o_jazyke_i_metode_ischislenija_ikon:drakon_shampur_ocenka [2012/03/10 13:43]
Владислав Жаринов [Разметка схем и гибридные техноязыки] - ссылки, формат
jazyk:soobschenija_o_jazyke_i_metode_ischislenija_ikon:drakon_shampur_ocenka [2012/03/22 17:13] (текущий)
Владислав Жаринов [Разметка схем и гибридные техноязыки: ДРАКОН начинает, ГРАФИТ выигрывает]
Строка 1: Строка 1:
 Эта страница только формируется. Эта страница только формируется.
-====== Оценка техноязыка и шампур-метода ====== 
  
-Безусловно,​ ДРАКОН-визуализация отличается от традиционной визуализации потоков управления блок-схемами. Сам Паронджанов указал на это следующим образом:​ 
  
-Задача формализации и унификации множества профессиональных языков с целью обеспечить эффективное взаимопонимание между специалистами любых профессий,​ включая программистов,​ является,​ хоть и важной,​ но, увы, неразрешимой. Положение в корне меняется,​ если ограничиться императивными профессиональными знаниями. Именно эту задачу решает язык ДРАКОН. Он построен путём формализации,​ неклассической структуризации и эргономизации блок-схем алгоритмов и программ,​ описанных в стандартах ГОСТ 19.701-90 и ISO5807-85. (Паронджанов В.Д. Как улучшить работу ума, с. 36) 
  
-Смысл сказанного можно раскрыть через «формулу новизны»,​ как это и принято для официального описания существа изобретений. Напомним,​ что она имеет вид: «<​Предлагаемый сабж>​ отличается от <​такого-то существующего сабжа>​ тем, что имеет <​такие-то новые фичи>​ и/или <​такие-то фичи>,​ имевшиеся в <​существующем сабже>,​ здесь реализованы с <​такими-то отличиями>​». 
  
-Здесь можно сказать,​ что техноязык отличается от языка, заданного стандартами на блок-схемы (далее - БС), тем, что: 
  
-  * устанавливает требования к графике вершин и линий схем с учётом удобства восприятия «слепыша» и компоновки содержания вершин; ​ 
-    
-  * использует понятие вложения для применения принципов исчисления к графам;​ 
-    
-  * упорядчивает схемы за счёт принципов шампура и главной/​побочной вертикалей;​ 
-    
-  * использует соединители,​ принятые для блок-схем как межстраничные,​ в новом качестве — как внутрисхемные для укладки схемы на плоскости без пересечений цепей и с возможностью структуризации содержания;​ 
-    
-  * даёт возможности выразить топологии потоков управления,​ характерные как для структурной,​ так и для неструктурной алгоритмизации (программирования),​ также через операции исчисления;​ 
-    
-  * предлагает некоторые правила разметки вершин и линий. 
  
-Можно раскрыть эти отличия (а также сходства,​ оставшиеся с БС) и одновременно оценить шампур-метод (далее - ШМ) и язык, возможности его развития. 
  
-На рисунках далее мы будем пользоваться элементами когнитивной графики,​ как принятой у Паронджанова,​ так и новой. Словарь обозначений можно найти [[http://​grafit-basis.narod.ru/​L3/​usl_obozn.html#​Pril1-n12|здесь]]. 
  
-===== Графика вершин ===== 
  
-По идее когнитивной формализации знаний,​ в ШМ она должна прежде всего удобно вмещать текст (и/или таблицы,​ если они допустимы как содержание вершины некоторого типа). Поэтому из БС-графики заимствуются только такие формы икон и их частей,​ которые и наглядны сами по себе, и удобно и экономично вмещают текст. 
  
-Как следствие,​ по сравнению с блок-схемами некоторые формы блоков получают новые значения (к примеру, ​форма-трапеция ​– как ​основа хронизаторов реального времени), а другие (скажемромб) не используются.+==== Доалгоритмическая формализация: хороший командир указываетЧТО, но не указывает, КАК ====
  
-В то же время композиция многофигурных вершин м.б. более стройной,​ если ввести общие законы их построения. Возможны следующие:​ 
-вертикалей окружения — вводятся условные оси, параллельные шампуру схемы и представляющие совокупные потоки управления процессов,​ взаимодействующих с алгоритмическим процессом,​ описываемым схемой;​ 
-событийного следования — фигуры в вершине и/или части её содержания упорядочиваются по шампуру в порядке исполнения. 
  
-В части первого нужно раздельно представлять процессы того же исполнителя и процессы его внешней среды; поэтому следует ввести оси по обе стороны шампура;​ фигуры,​ представляющие связь с соответствующей категорией процессов,​ для удобства чтения нужно сделать как по форме направленными на ось, так и по положению смещёнными к ней. 
  
-В части второго предшествующие события представляются фигурамирасположенными ближе к началу шампура; кроме того, можно использовать уровни глубиныесли допускать частичное ​перекрытие фигур в вершине.+Это правило (своего рода неформальное военное поучение) ​для нашей темы отражает важное обстоятельство — алгоритмизация (и последующее программирование/инструктирование) требуют ​от сочинителя понимания постановки задачи (что «дано» решателю и что «надо» от него — включая различные ​начальные и граничные ​условия). А эта постановка, в свою очередь, отражается ​на соответствующих языках представления отчуждаемых знаний — дескриптивных — по своей сути ​ничего общего с императивными языками не имеющих. И решение в этом ​случае тоже отражается дескриптивно — какие отношения и сущности надо преобразовать ​и что для этого надо сделать (формально — какие логико-математические ​операции, ​функции ​и где применить).
  
-Можно видеть, что в ШМ принято единственное ​правило — располагать ​фигуры вершины «лесенкой» всегда справа налево и направленные формы фигур направо - более простое, но менее информативное.+«ЧТО»-язык ​отражает ​некие сущности решаемой задачи и её предметной области (не обязательно объекты алгоритма) ​и некие отношения между ​ними. Такие языки тоже бывают как чисто текстовыми, так и графитными. Пример последнего — язык информационного моделирования IDEF1X. Он отражает только систему отношений между сущностями. Для записи преобразований (отдельно или вместе с сущностями-отношениями) существуют ​другие языки — скажем, т.н. функционального или логического ​программирования. Ряд таких языков имело бы смысл «графитизировать» — но делать это нужно по иным принципам, чем для императивных языков. Примером могут служить языки схем зависимостей,​ потоков данных, такие как [[http://​grafit-basis.narod2.ru/​L3/​mental-vspom.html#​Pril2-n38|функциональные схемы, ДПД]], [[http://​forum.oberoncore.ru/​viewtopic.php?​f=28&​t=3884|Анимо]]. Следует выработать эргономические оптимальные ​правила ​организации таких схем. В чём-то может помочь опыт эргономизации системных схем, частично зафиксированный в стандартах на такие схемы (типа ЕСКД).
  
-Также алфавит БС функционально шире, чем ​в ДРАКОНе. Блок-схемы предназначены для представления содержания всей ​программы (в смысле расширенного тезиса Вирта). Поэтому,​ кроме подалфавита импер-части (называемой в БС «схема алгоритма»),​ предусмотрен также подалфавит для деклар-части («схемы данных»). Имеются также средства для ​представления материальных действий («техпроцессов» по Паронджановуи структур (актив-части). Однако назначение ДРАКОНа — представлять только императивные знания; поэтому остальной алфавит здесь не нужен.+Условия применения «ЧТО»писаний хорошо сформулированы ​у Кауфмана:
  
-===== Вложение и структурные изменения на графах =====+//​Людей как исполнителей характеризует прежде всего ​наличие у них модели реального мира, в достаточной мере согласованной с моделью мира у создателя плана <т.е. описания ​поведения исполнителя>​. Поэтому в плане для людей можно указывать цели, а не элементарные действия. ([[http://​forum.oberoncore.ru/​download/​file.php?​id=3066|ЯП. Концепции и принципы,​ с. 31]])//
  
-В текстовом программировании известны применения вложения в той или иной форме (например,​ в архитектуре и программировании отечественных машин семейства «Эльбрус»;​ см. [[http://​forum.oberoncore.ru/​viewtopic.php?​p=52411#​p52411|это сообщение]]).  +Такую возможность как раз даёт аппарат мышления человека. Не случайно идут поиски объяснений механизмов мышления,​ попытки их формализации.
- +
-В рамках ШМ это понятие было применено к графам. При этом среди рёбер графа выделяются такие, что допускают замену на тот или иной подграф — т.н. //​рёбра ввода//​. Этот подграф называется //​атомом//​ и всегда имеет один вход и один выход; оба они представлены рёбрами ввода, между которыми располагается смысловая часть — так сказать,​ «ядро» атома. Оно м.б. единственной вершиной или также подграфом (для ДРАКОНа - типа ветвления или цикла). Во втором случае рёбра ввода также м.б. в «ядре». +
- +
-В исходном ШМ на ребре ввода определена т.н. //​валентная точка//​ — вспомогательная вершина,​ на месте которой ребро как бы можно разорвать и вставить в разрыв атом так, что части разорванного ребра становятся продолжениями рёбер вставляемого атома. +
- +
-В процессе обсуждения ШМ было предложено называть валентные точки //​точками ввода//,​ а также отказаться от определения этих точек как вершин и считать само ребро допускающим ввод. +
- +
-Принцип вложения (ввода атома) показан на рисунке ниже. +
- +
-{{ :​jazyk:​soobschenija_o_jazyke_i_metode_ischislenija_ikon:​proekt_statja_-_ocenka_texnojazyka_i_ishm_kak_razvitija_stbs_html_m5d093cb2.gif?​ |}} +
- +
-===== Операция ввода атома в шампур-методе ===== +
- +
-Для исчисления схем на конкретном шампур-языке задаются множества атомов и заготовок схем. На каждом определяются рёбра ввода. При этом для более удобного представления ветвления на множество вариантов Паронджановым предложена атомарная структура «переключатель». +
- +
-Кроме вложения,​ в ШМ определены также операции изменения топологии схемы, не нарушающие структурности. Это добавление/​удаление варианта переключателя,​ удаление конца схемы («зацикливание» алгоритма в целом — от начала до конца),​ боковое присоединение (добавление вершины-модификатора к другим вершинам). +
- +
-Схематически можно представить сказанное о вершинах,​ атомах и заготовках,​ как на следующих рисунках. +
- +
-{{ :​jazyk:​soobschenija_o_jazyke_i_metode_ischislenija_ikon:​proekt_statja_-_ocenka_texnojazyka_i_ishm_kak_razvitija_stbs_html_f52ad4a.gif?​ |}} +
- +
-{{ :​jazyk:​soobschenija_o_jazyke_i_metode_ischislenija_ikon:​proekt_statja_-_ocenka_texnojazyka_i_ishm_kak_razvitija_stbs_html_30622066.gif?​ |}} +
- +
-{{ :​jazyk:​soobschenija_o_jazyke_i_metode_ischislenija_ikon:​proekt_statja_-_ocenka_texnojazyka_i_ishm_kak_razvitija_stbs_html_1fc6b470.gif?​ |}} +
- +
-Здесь также представлены основные структурные операции (кроме удалений). +
- +
-===== Упорядочение маршрутов ===== +
- +
-Принципы ШМ эргономически выгодно отличаются от принятого в блок-схемах порядка,​ при котором:​ +
- +
- +
-  * выходы развилок (предикатных вершин) обычно направлены в разные стороны от оси входа;​ +
- +
- +
-  * вход и выход вершин следования не требуется располагать на одной оси (а обычно даже их оси составляют прямой угол, т.е. вершина в то же время является точкой излома следования;​ часто это делают,​ чтобы «сэкономить» на звене вертикали перед/​после излома);​ +
- +
- +
-  * возможны наклонные линии связей,​ часто «ступеньки» на них, порой даже «обратное следование» - загиб вертикали против направления от начала к концу схемы. +
- +
-Иногда такую организацию блок-схем называют «анархической». Она критикуется рядом авторов,​ скажем,​ Б. Мейером в [[http://​forum.oberoncore.ru/​viewtopic.php?​p=69170#​p69170|"​Почувствуй класс",​ Гл. 7]]. +
- +
-По сути, в стандартах на БС и не существует чётких правил упорядочения элементов и подсхем. ​Тогда как ШМ, в общем-то,​ и есть система таких правил,​ только данная в математическом смысле не формально («что есть правильная схема»),​ а конструктивно («как построить правильную схему из правильной заготовки»). +
- +
-В сравнении с БС упорядоченность шампур-схемы можно видеть на рисунках ниже. +
- +
-{{ :​jazyk:​soobschenija_o_jazyke_i_metode_ischislenija_ikon:​part_viz_know_html_m5dd068a.gif?​ |}} +
- +
-{{ :​jazyk:​soobschenija_o_jazyke_i_metode_ischislenija_ikon:​part_viz_know_html_2ef165be.gif?​ |}} +
- +
-Шампур-схема закономерно асимметрична. Это даёт ​возможность ​показать упорядоченность маршрутов по какому-то ​критерию. Не всегда такой критерий нужно или можно определить по смыслу схемы; в этом случае порядок м.б. произвольным или введён сочинителем по какому-то абстрактному правилу. +
- +
-В то же время запрещение ступенек и загибов сужает возможности компоновки схемы в конкретном формате. Однако это можно понимать как плату за упорядоченность схемы. +
- +
-===== Укладка схемы на плоскости ===== +
- +
- +
-Структуру связей предмета описания не всегда можно показать двумерно без пересечений. В математике схему типа представляющей структуру императивного знания — маршрутов деятельности,​ потоков управления — называют **//​аранжируемым/​устремлённым/​сводимым графом//​**,​ а если в этом графе нет ​пересечений — говорят,​ что он также **//планарный//​**. +
-В текстовой форме связи подразумеваемы совпадением имён начал и концов,​ и пересечения неявны. В форме же схемы они становятся явными. Как считает Паронджанов,​ это затрудняет восприятие структуры. Для исключения этого на шампур-схему как аранжируемый граф как раз и накладывается ограничение планарности. Непланарный же устремлённый граф нужно «уложить» на плоскости,​ устранив пересечения. Как это делается по шампур-методу?​ +
- +
-Непланарная аранжированная схема с пересечениями (в терминах ШМ — //​примитив//​) разделяется веточными соединителями на блоки-единицы укладки — //ветки// — так, что из каждой пары пересекающихся цепей одна оказывается проходящей через подсхему связи веток — своего рода **//​кросс//​** (по аналогии с сетями связи; в проводке компьютерных сетей часто называется «патч-панель»). Тем самым пересечение устраняется. Уложенная на плоскости аранж-схема в ШМ называется //​силуэтом//,​ а кросс-подсхема — //​петлёй силуэта//​. +
- +
-Силуэт можно и получать сразу — выводом из заготовки (ШМ-аксиомы). Только такой путь и допустим в ШМ; поэтому Паронджанов рекомендует мало-мальски сложный алгоритм визуализировать сразу как силуэт — чтобы избежать его вывода заново. Заготовка имеет исходно минимальноое число веток (две); определены операции добавления/​удаления ветки в силуэт. +
- +
-Пример укладки показан ниже (для той же схемы, на которой демонстрировалась упорядоченность маршрутов). +
- +
-{{ :​jazyk:​soobschenija_o_jazyke_i_metode_ischislenija_ikon:​st_drakonsu_-_ocenka_texnojazyka_i_ishm_html_468e7188.gif?​ |}} +
-Видно, что в петлю силуэта можно уложить и петлю цикла. Так образуется т.н. //​веточный макроцикл//​ (далее — ВМЦ). +
-{{ :​jazyk:​soobschenija_o_jazyke_i_metode_ischislenija_ikon:​part_viz_know_html_260e06df.gif?​ |}} +
- +
-Паронджановым доказаны теоремы о представимости любой структуры маршрутов алгоритма (т.е. фактически любой устремлённой схемы) как силуэта. Т.е. силуэт есть т.н. универсальная программа. +
- +
-Силуэтная укладка есть физическое подразделение структуры маршрутов. Петля силуэта представляет связи веток как совокупность возвратных переходов с выходных соединителей на входные. В императивном смысле (для дракон-силуэта) это простые безусловные переходы. Достоинство их силуэтного употребления — в том, что передачи возможны не в произвольные места схемы, а лишь в заданные делением на ветки. Тем самым допускается goto, но также ограниченный — только на начала веток. Недостаток — в том, что переходы явные, и в терминах программирования дракон-силуэт м.б. представлен только на языках с явным БП (на ЯВУ с goto и на машинах с командой jmp-типа). +
- +
-Недостаток можно преодолеть,​ если перейти к логической укладке маршрутов. Имеется в виду, что вход в единицу укладки определяют не соединители,​ а условия выбора. Проще говоря,​ нужно перейти от деления схемы соединителями к делению разветвителями. Фактически они присутствуют в «петле силуэта»,​ но их условия (т.н. охраны) имеют смысл ​исключительно проверок совпадения значений адреса целевой ветки и имени текущей. +
- +
-===== Атомарные и лианные структуры ===== +
- +
-Известно,​ что минимально для представления любой структуры маршрутов достаточно только следования и цикла; менее строго к этому добавляется также ветвление. По ШМ такое представление очевидно выводимо одним вложением соответствующих атомов. Поэтому можно называть получаемые структуры //​атомарными//​ — такими,​ что тело схемы всегда можно «без остатка» подразделить на атомы языка этой схемы (и без перекрытия границ подразделений — только с плным вхождением,​ если подразделяется «матрёшка»). Другие упомянутые выше ШМ-операции атомарности тела схемы не нарушают. +
- +
-Все теоретически возможные структуры маршрутов не всегда можно получить только вложением. Имеются в виду структуры с БП — произвольным внутри программы (goto) и изнутри цикла на его начало/​конец (т.н. break/​continue-заменители). Для их представления Паронджановым было введено понятие лианной структуры маршрутов и операция ''​пересадки лианы''​. В результате в техноязыке возможно представить структуры циклов с заменителями,​ и сверх того — некоторые случаи goto в разветвлённых алгоритмических структурах (на ближайшие слева/​справа вертикали). Как результат пересадок лианы могут возникать связи, нарушающие атомарность тела примитива (ветки силуэта),​ и их соединения тоже требуют представления явными БП. +
- +
-В силуэте у ветки возможны и побочные выходы. Они получаются как в результате укладки примитива с пересечениями,​ так и при изначальном сочинении силуэта. Для создания побочных выходов в ШМ включена операция ''​заземления лианы''​. +
- +
-Примерное выполнение этих операций показано на рисунках. +
- +
-{{ :​jazyk:​soobschenija_o_jazyke_i_metode_ischislenija_ikon:​proekt_statja_-_ocenka_texnojazyka_i_ishm_kak_razvitija_stbs_html_m78d9ffef.gif?​ |}} +
- +
-{{ :​jazyk:​soobschenija_o_jazyke_i_metode_ischislenija_ikon:​proekt_statja_-_ocenka_texnojazyka_i_ishm_kak_razvitija_stbs_html_m139b893d.gif?​ |}} +
- +
-Очевидное достоинство такого подхода — техноязык практически нейтрален к структурности алгоритмов («войне языков» высокого уровня по поводу goto и заменителей). Если принять подход противников явных БП в ЯВУ — можно отказаться от операций с лианой и алгоритмизовать только атомарными структурами. Если принять подход сторонников — разрешить лианные операции и структуры. +
- +
-Недостаток разрешения лианных структур — тот же, что в случае силуэтной укладки схемы — необходимость в явных БП для представления соединителей. Аналогично он и преодолевается. +
- +
-===== Структурная алгоритмизация и шампур-метод ===== +
- +
-Недостаток силуэтной укладки как физической можно преодолеть,​ если перейти к логической укладке маршрутов. Имеется в виду, что вход в единицу укладки определяют не соединители,​ а условия выбора. Часто об условных переходах говорят,​ что их условие «охраняет» выход, соответствующий истинности (или просто называют условное выражение //​**охраной**//​). Тогда любой набор значений входящих в это выражение величин,​ при котором условие истинно,​ можно называть «паролем» охраны. Понятно,​ что паролей м.б. и больше одного — это зависит от выражения (вида условий,​ значений входящих переменных и констант). +
- +
-Проще говоря,​ нужно перейти от деления схемы соединителями к делению разветвителями. Фактически они присутствуют в «петле силуэта»,​ но их условия (охраны) имеют смысл исключительно проверок совпадения значений адреса целевой ветки и имени текущей. Возможность и логической укладки (исключения межветочных БП), и отказа от явных БП в теле схемы даёт //​**цикл Дейкстры**//​ (далее - ЦД) как иная форма универсальной программы. Это можно видеть на схемах ниже. +
- +
-{{ :​jazyk:​soobschenija_o_jazyke_i_metode_ischislenija_ikon:​st_drakonsu_-_ocenka_texnojazyka_i_ishm_html_6ead9a8e.gif?​ |}} +
- +
-Для упрощения силуэт мы показали одноадресным и без дополнительных входов. +
- +
-Здесь фактически вводится новый тип устремлённого планарного графа, называемый //​дейкстралом//​. Он обеспечивает универсальность за счёт того, что ЦД-ветви можно выбирать в любом порядке (пока мы не вышли из цикла). Если представить,​ что телом каждой ветви служит простой шампур-блок (отдельный линейный участок) схемы алгоритма — скажем,​ примитива,​ — то это значит,​ что мы можем организовать в ЦД любой из порядков выбора,​ возможный в этой схеме. +
- +
-В силуэте реален как циклический (действительно идёт против шампура) только один переход — с конца на начало силуэта,​ когда он «зацикленный» (реагирующий). Остальные переходы на главном маршруте силуэта реально идут по шампуру. Поэтому разветвления для выбора их в петле силуэта фиктивны — никаких условных переходов на самом деле для этой цели не нужно. Как следствие,​ адрес перехода с главного выхода ветки предопределён — всегда на следующую справа ветку. Можно считать — хотя в шампур-методе это не оговорено,​ ибо он исходно определён только для «слепышей» — что тексты икон Адрес для главных выходов веток назначаются автоматически по правилу «чем правее,​ тем позже» — соответственно и циклы по этим выходам невозможны.  +
- +
-В многоадресном силуэте побочные выходы,​ возможные в любой неконечной (т.е. заземлённой по шампуру) ветке, могут давать как прямые,​ так и возвратные переходы — всё зависит от желания сочинителя,​ т.к. он имеет право ввести в икону Адрес любое имя ветки данного силуэта. Если это имя текущей или более левой ветки — образуется ВМЦ. Вообще говоря,​ такие циклы тоже нельзя образовывать произвольно,​ если хотя бы два из них охватывают более, чем по одной ветке. Поскольку тогда возможно пересечение циклов,​ что в структурной алгоритмизации не допускается. +
- +
-В дейкстрале каждый переход между его ветвями реально циклический — т.е. идущий против шампура. Потому и выбор ветви реальный — каждый раз надо проверять условие на входе каждой ветви, начиная слева, пока не обнаружится первое истинное — в эту ветвь и войдёт исполнитель на очередной итерации цикла. Задача сочинителя — так сформулировать выражения охран, чтобы выбирались ветви, нужные по условию задачи. Конечно,​ и тела ветвей дейкстрала не обязаны быть линейными — в них также м.б. развилки (плечи которых не выходят за пределы тела ветви).  +
- +
-В принципе можно организовать внутри ветви и один или больше локальных циклов — но часто бывает удобнее замкнуть все циклы алгоритма через кросс дейкстрала. Тогда тело простого цикла целиком будет телом какой-то ветви, а тело гибридного — двух ветвей (для ДО- и ПОКА-частей). +
- +
-Принцип практической реализации всех упомянутых типов схем можно показать совмещённо,​ как на следующем рисунке. +
- +
-{{ :​jazyk:​soobschenija_o_jazyke_i_metode_ischislenija_ikon:​st_drakonsu_-_ocenka_texnojazyka_i_ishm_html_7405715d.gif?​ |}} +
- +
-Здесь можно видеть,​ чем представляются вершины кросса в системе команд типичного исполнитля алгоритмов — машины с адресной архитектурой. Это команды БП — простого и с возвратом. +
- +
-Использование ЦД возможно двумя путями:​ +
- +
- +
-  * вывода тела дракон-схемы или его части как ЦД в рамках ШМ-правил (как варианта вложенного цикла);​ +
- +
- +
-  * модификации метода для использования ЦД-организации схем, начиная с аксиом. +
- +
-Первый путь требует только единообразного порядка вложения при выводе схемы как примитива — новая ветвь ЦД добавляется вводом дракон-атома обычного цикла как ДО-подтела цикла предыдущего уровня вложенности. +
- +
-Второй путь предполагает определение заготовки для вывода схемы как ЦД, ЦД-атома,​ а также операций добавления/​удаления ветви (аналогично добавлению/​удалению ветки силуэта). +
- +
-Определённая сложность логической укладки в том, что структуру нужно логически выводить изначально,​ пользуясь методами т.н. доказательного программирования. Для неподготовленного сочинителя это может представлять известную проблему. Возможны следующие пути её решения:​ +
- +
- +
-  * пользоваться известными методами формальной спецификации задачи,​ хорошо разработанными и допускающими эргономизацию;​ +
- +
- +
-  * приводить разработанные силуэты и/или лианные макроблоки к форме ЦД. +
- +
-Среди первых можно выделить т.н. [[http://​forum.oberoncore.ru/​viewtopic.php?​p=52313#​p52313|автоматное программирование]]. Спецификации конечными автоматами естественны для задач управляющего (реагирующего) рода и рядом специалистов считаются наглядными. +
- +
-Показано,​ что дракон-силуэт можно преобразовать в ЦД-схему. Тем самым ЦД-укладка обратно совместима с силуэтной. Т.е. можно переводить «силуэтно-унаследованные» визуализации алгоритмов и потоков управления программ в ЦД-запись. +
- +
-Важное преимущество ЦД как замены силуэта в том, что его ветви имеют один выход. Тем самым отпадает нужда в ШМ-операции «заземление лианы». Кроме того, в рамках доказательного программирования Дейкстрой,​ Виртом и другими исследователями было показано,​ что в теле ЦД также не нужно употреблять явных БП, чтобы получить те же маршруты,​ что и с их использованием;​ соответственно не требуется операция «пересадка лианы». Как следствие,​ редактор,​ реализующий только логическую укладку,​ м.б. упрощён в плане как алгоритмов,​ так и структур данных;​ очевидно,​ это даст большую его производительность. +
- +
-Другое преимущество в том, что доказательность достигается с участием текста вершин. Тем самым сочинитель уходит от частичной корректности программы в визуализированной форме (которую только и обеспечивает ШМ, как указывал Паронджанов) к полной. Но визуализация может облегчать правильное построение программы и проверку корректности. +
- +
-===== Разметка схем и гибридные техноязыки ===== +
- +
-В ШМ она, по сути, не рассматривается. По определению это исчисление «слепышей»,​ т.е. неразмеченных графов (без учёта текстоэлементов синтаксиса схем). Однако на практике возникает необходимость по крайней мере в двух типах разметки шампур-схем:​ +
- +
- +
-  * для выходов развилок — надписями «да»/​«нет» при выходных рёбрах;​ +
- +
- +
-  * для веточных макроциклов (ВМЦ) — какими-нибудь индексами,​ позволяющими отличить разные ВМЦ в одном силуэте. +
- +
-Первый тип можно реализовать и иначе — вершинами,​ несущими надписи. Такое решение можно видеть в предложениях Рэйлвей Кагена для его ПРОТОН-нотации. По сути, такие вершины — эквиваленты икон ''​Вариант''​ в макроиконе ''​Переключатель''​. +
- +
-Второй тип может иметь синтаксис,​ предложенный некоторыми пользователями техноязыка и показанный у Паронджанова(см. выдержку в [[http://​forum.oberoncore.ru/​viewtopic.php?​p=57898#​p57898|этом сообщении]]). В веточные соединители добавляется поле индекса ВМЦ. +
- +
-По Паронджанову предлагается разделять шампур- и гибридную формализацию императивных знаний. В первом случае определён т.н. маршрутный граф-язык «слепышей»,​ представляющий только управляющие знания — т.е. структурную часть императивной составляющей знания — для любых существующих и мыслимых чисто текстовых языков (узко императивных или содержащих императивную составляющую). В этом понимании маршрутный язык есть полиязык для текстовых. Во втором определяется гибридный техноязык путём:​ +
- +
- +
-  - выделения в чисто текстовом языке управляющей части и замены её на маршрутный язык (синтаксис «слепышей»);​ +
- +
- +
-  - разметки остальным содержанием текстового языка вершин и рёбер «слепыша». +
- +
-Выделение управляющей части может оказаться нетривиальной задачей;​ её наличие определяется высотой абстракции языка от алгоритмического исполнителя (машины или арифметической модели алгоритма). +
- +
-Управляющие знания логически есть одна часть из двух (структурной и атрибутивной) в одной составляющей из четырёх (императивной,​ декларативной,​ активностной и обобщающей). Это следует из известного тезиса Н. Вирта (программа = алгоритм + структура данных + систематическое представление об исполнителе;​ см. в [[http://​forum.oberoncore.ru/​download/​file.php?​id=1881|этой статье]]),​ а также из факта существования т.н. [[http://​ru.wikipedia.org/​wiki/​Парадигма_программирования#​.D0.A0.D0.B0.D0.B7.D0.BB.D0.B8.D1.87.D0.BD.D1.8B.D0.B5_.D0.BE.D0.BF.D1.80.D0.B5.D0.B4.D0.B5.D0.BB.D0.B5.D0.BD.D0.B8.D1.8F|парадигмы программирования]] как способа увязки частей описания программы (по Вирту) в единое целое. Однако синтаксический ​объём этих частей в разных ​языках не обязательно одинаков. Существует и [[http://​forum.oberoncore.ru/​viewtopic.php?​p=71247#​p71247|подход В.Ш. Кауфмана]] — язык программирования определяет данные, операции и их связывание. +
- +
-Проще говоря,​ любой язык программно строгой формализации распадается на ряд подъязыков,​ один из которых играет интегрирующую роль. И нужно определить синтаксис каждого языка. Создатель техноязыка указывает на необходимость единых правил построения объектных имён, информативных и удобных для восприятия;​ для этого нужна и достаточная длина имени:  +
- +
-«...множество 32-символьных идентификаторов образует весьма выразительный,​ хотя и своеобразный,​ язык, законы и правила оптимизации которого ещё предстоит открыть,​ обсудить и подвергнуть экспериментальной проверке.» /Как улучшить работу ума, с.163/. +
- +
-В то же время командная часть императивного подъязыка (так сказать,​ «имена действий») также должна иметь текстовый синтаксис. Нужен и синтаксис их сочетания ​в дракон-вершинах. +
- +
-Определённое достоинство такого пути (можно сказатьчастной гибридизации) в его ​простоте — определение гибридного языка можно получить без больших видимых усилий. На практике же проявляются недостатки. Их можно объяснить,​ исходя из сказанного выше при обосновании языка и метода. +
- +
-Во-первых,​ неуправляющее содержание языка, полного в смысле Вирта и парадигмы программирования,​ как нетрудно видеть,​ логически составляет семь восьмых от всего содержания любого описания на этом языке. Поэтому объём разметки м.б. весьма значительным. Практически в любом случае возникает «перекос» в сторону текста в гибридной схеме, что может умалять эргономический эффект ​от визуализации маршрутов. +
- +
-Во-вторых,​ для некоторых парадигм, не императивных по своей сути, возможность выделить управляющую часть вообще неопределённа. Это возможно для языков высокой ​абстракции, тяготеющих к дескриптивности («ЧТО-формализации»). В частности,​ тех или иных языков спецификации программ/​задач. +
- +
-В-третьих,​ существует часть знания,​ отражаемая в формальном тексте неявно. На это, в частности,​ указывал И. Ермаков при обсуждении визуализации [[http://​forum.oberoncore.ru/​viewtopic.php?​p=68824#​p68824|здесь]]. При буквальном переводе части текстового синтаксиса в графику нет оснований полагать,​ что эта часть станет явной. +
- +
-Преодолеть недостатки частной гибридизации можно следующим образом:​ +
- +
- +
-  * визуализировать в каждой составляющей текстового языка её структурную часть;​ +
- +
- +
-  * рассматривать парадигмы «ЧТО-формализации» на предмет выделения их структурной части и нахождения структур графов,​ формально и эргономично представляющих эту часть;​ +
- +
- +
-  * выявлять содержание,​ не отражённое в конкретном языке явно, и находить средства его выражения. +
- +
-Тем самым определение гибридного языка на базе только дракон-схем для языка программирования или спецификации м.б. лишь началом гибридизации. +
- +
-Безусловно,​ путь, намеченный Ермаковым,​ требует и теоретических изысканий,​ на что он [[http://​forum.oberoncore.ru/​viewtopic.php?​p=26640#​p26640|также указывал]].+
  
 +В более практическом смысле дескриптивные языки можно применять для более качественной постановки задач. А их графические разновидности — и для эргономизации представления «ЧТО»-описаний.
jazyk/soobschenija_o_jazyke_i_metode_ischislenija_ikon/drakon_shampur_ocenka.1331372587.txt.gz · Последние изменения: 2012/03/10 13:43 — Владислав Жаринов