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

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

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

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


texnojazyk_i_shampur-metod_-_suschnost_preemstvennost_razvitie

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
texnojazyk_i_shampur-metod_-_suschnost_preemstvennost_razvitie [2012/04/07 13:35]
Владислав Жаринов [Упорядочение маршрутов: чем правее, тем... придумай сам]
texnojazyk_i_shampur-metod_-_suschnost_preemstvennost_razvitie [2012/12/25 10:58] (текущий)
Владислав Жаринов [Отступление об исполнителях: «наши машины» и люди - «винтики» и «творцы»]
Строка 83: Строка 83:
  
 Вообще каждый формальный язык подразумевает какую-то модель исполнителя. Если она соответствует какому-то реальному исполняющему устройству — то говорят,​ что это язык низкого уровня. Если же модель абстрагирует (т.е. отвлекается от несущественных деталей,​ скрывает их за укрупнённым представлением) реального исполнителя — то говорят,​ что язык, соответствующий ей, высокого уровня.На рисунках далее мы будем пользоваться элементами когнитивной графики,​ как принятой у Паронджанова,​ так и новой. Словарь обозначений можно найти [[http://​grafit-basis.narod.ru/​L3/​usl_obozn.html#​Pril1-n12|здесь]]. Вообще каждый формальный язык подразумевает какую-то модель исполнителя. Если она соответствует какому-то реальному исполняющему устройству — то говорят,​ что это язык низкого уровня. Если же модель абстрагирует (т.е. отвлекается от несущественных деталей,​ скрывает их за укрупнённым представлением) реального исполнителя — то говорят,​ что язык, соответствующий ей, высокого уровня.На рисунках далее мы будем пользоваться элементами когнитивной графики,​ как принятой у Паронджанова,​ так и новой. Словарь обозначений можно найти [[http://​grafit-basis.narod.ru/​L3/​usl_obozn.html#​Pril1-n12|здесь]].
 +
 +==== Отступление о синтаксисе:​ эргономично — не всегда неформально ====
 +
 +
 +Далее как в графике,​ так и в тексте мы будем пользоваться новыми для читателя обозначениями. Дадим некоторые пояснения в дополнение к упомянутым ранее определениям.
 +
 +В общем случае содержание можно описать с привлечением метаязыка РБНФ, что и сделано в этой статье. Определение принятой версии РБНФ можно найти среди условных обозначений,​ к которым Вас отсылали ранее.
 +
 +РБНФ у нас применяется не только к текстам,​ но и к графике. Принцип простой — в индексе части вводятся РБНФ-скобки,​ если часть необязательна в данном месте схемы. А если скобки задают возможность повтора,​ то очередное место указывается там же стрелочками. Если в одну сторону — то новая часть должна входить в схему всегда с этой стороны (получается,​ что после предыдущей введённой части с таким же индексом — ряд растёт по стрелке). А если в обе — то можно выбирать место в ряду — с левого края, правого или где-то посередине (если в ряду уже больше двух частей — между любыми двумя). Нельзя только выйти за место самого ряда в схеме. Сами индексы,​ если необязательно приводить их полностью,​ замещаем знаком '#'​ (кстати,​ знаки как элементы структуры текста везде берутся в апострофы).
 +
 +В графике мы тоже акцентируем возможность отсутствия фигур и/или связей — пунктиром линий. Если надо зрительно объединить разные части схемы — используем цвет линий и/или фона, толщину контуров и/или связей. Применяем и специальные операторы выбора частей. При этом на схеме выделяются позиции частей,​ к которым выбор применяется. Здесь интуитивно д.б. понятно следующее правило — когда в результате выбора данная часть отсутствует,​ отсутствуют и её внешние связи. Обычно индексы выбора мы даём для вершин — связанные с ними рёбра выбираются,​ так сказать,​ автоматически.
 +
 +Конечно,​ для чтения этих обозначений нужен некоторый навык. Поэтому мы часто кое-что поясняем по их употреблению. В дальнейшем читатель,​ думается,​ сможет и сам пользоваться ими.
 +
 +Может возникнуть вопрос — а зачем они? Одна из основных ролей — сокращать объём представления. Если рисовать/​писать всё, что может повторяться — то при большом числе повторов получится чересчур «габаритное» описание. Помимо его большой площади (и трудной обозримости),​ возникает и взаимосвязанная проблема восприятия — когда «за деревьями не видно леса». :-) Т.е. логическая структура предмета описания неясна. И вот тут выделение частей,​ которые могут повторяться или быть необязательными,​ кроме сокращения объёма,​ работает и на прояснение структуры. Как правило,​ это оказываются именно те части, на которые можно поделить предмет в результате структурного анализа его содержания. И получается,​ что физическое и логическое структурирование в значительной степени совмещаются.
 +
 +==== Отступление об исполнителях:​ «наши машины» и люди - «винтики» и «творцы» ====
 +
 +Так называются машины для переработки данных у Б. Мейера — одного из современных специалистов по инженерии программ. Мы уже говорили,​ что исполнителя алгоритмов можно описать формальной моделью. При этом важно понимать,​ что он так или иначе связан с окружающим миром — иначе превращается в «вещь в себе», для решения задач бесполезную. Законы связи, взаимодействия и реализации задач, поставленных исполнителю (а где-то — и установления целей и постановки задач) изучает специальная наука — //​**кибернетика**//​. И исполнитель вместе с окружением образует некую кибернетическую систему как объект изучения в этой науке.
 +
 +Начнём с простой системы,​ которая показана в «детской» книжке по техноязыку - «[[http://​drakon.su/​biblioteka/​start#​knigi|Занимательная информатика]]»:​
 +
 +{{ :​sxemavklispolnitelja_-_ill_zaniminfor_.png?​800 |}}
 +
 +Здесь показан исполнитель,​ устроенный так, что может и получать данные от окружения — по связи «информация о внешнем мире» (её ещё называют обратной),​ и выдавать воздействия во внешний мир — по связи «движения Мускула» (ещё её называют прямой). Собственно «наша машина» - устройство-исполнитель программы — это блок «Мозг». Идущие от него вопросы — это тоже команды,​ управляющие получением данных обратной связи.
 +
 +Здесь исполнитель подразумевается как техническое устройство. Но задачи он решает в интересах человека-пользователя. Человек выбирает алгоритм (а если это не предусмотрено задачей,​ для которой сделан исполнитель — то запускает его исполнение — хотя бы просто включив робота).
 +
 +Многие машины устроены по такой схеме. Это и программируемая бытовая техника,​ и станки с ЧПУ (в режиме работы по программе),​ и самонаводящиеся боеприпасы.
 +
 +Во многих задачах человек присутствует непосредственно — когда он участвует в процессе решения. Вот пример структуры исполнителя для такого случая:​
 +
 +{{ :​page3_graph_a3ls_taskdataproc_111_drakon-schdesign_curr.png?​800 |}}
 +
 +Тут человек-оператор представлен «крупным блоком» вверху,​ а машина (КСА — от «комплекс средств автоматизации») — таким же блоком внизу. Внутри каждого блока находятся элементы — это части т.н. информационного пространства. Оно выделяется в модели исполнителя — наряду с т.н. операционным устройством. В упомянутых «машинах Тьюринга/​Поста» это «лента» и «головка».
 +
 +Эта схема относится к [[http://​grafit-basis.narod.ru/​L3/​viz_alg_TFZ.html#​Doc-n42-1B-I2|задаче оформления дракон-схем]]. Можно изучить описание задачи полностью — может пригодиться. Если, скажем,​ надо нарисовать схему — а под рукой только редактор из офисного пакета. Или есть и специализированный дракон-редактор — но он для простого рисования слишком сложен...
 +
 +Что мы здесь видим? Человек хранит не только точные описания алгоритмов,​ подобные машинным — но и знания,​ умения,​ навыки (ЗУН). А ещё — цели, представления о том, как можно ставить задачи и находить их решения. И чем нужно ограничивать себя в целеполагании и в решении задач (в самом общем смысле это нормы этики),​ а также чем должны ограничиваться люди в отношении к окружающему миру (это нормы морали). Всё это составляет интеллектуальные ресурсы.
 +
 +Если же думать,​ что поведение человека описывается только алгоритмически строго — то мы приходим к упрощённой модели человека — т.н. «винтику». В каких-то задачах,​ которые поставлены уместно с т. зр. общих норм поведения — да, можно составлять алгоритмические инструкции и следовать им. Но в целом, если не упрощать — мы не можем дать «фундаментального алгоритма поведения»...
 +
 +Вот и повод показать более общий случай структуры исполнителя. Здесь различные люди имеют отношение к одной «предметной области»,​ решая разные задачи:​
 +
 +{{ :​graph_a3l_3211_task_senscontr-activsch_dsk.gif?​ |}}
 +
 +Оператор,​ решающий рассматриваемую задачу (её описание можно найти [[http:///​drakonografika.narod.ru/​L3/​automatization_know.html#​Pril4-n3211-2|здесь]]),​ связан с объектом. И этот же объект используется его персоналом — другими людьми. Иногда цели их м.б. нейтральны друг к другу, иногда совместны,​ иногда и противоположны.
 +
 +А что внутри у исполнителя алгоритма?​ Устройство его сложно,​ и описать можно по-разному. В большинстве случаев структура подобна показанной на следующей схеме:
 +
 +{{ :​grafit-abc_html_m5c6b9f1d.gif?​ |}}
 +
 +Схема составлена на [[http://​grafit-basis.narod.ru/​L3/​aktiv-vspom.html#​Pril2-n73|СТ-языке]].
 +
 +Важно понимать,​ что все эти блоки тоже работают в определённом порядке. Только алгоритм здесь не программируется,​ а как говорят,​ "​зашит в железе"​ - реализован аппаратно,​ за счёт соединения деталей. Для переработки данных существуют определённые законы устройства аппаратуры,​ делающие её работу максимально правильной. Интересующиеся могут прочесть [[http://​www.mcst.ru/​e2k_arch.shtml|эту работу]].
 +
 +Можно видеть,​ что «наша машина» (здесь это устройство — ДСК) может и не использоваться при решении — если она стала неработоспособной. Кто это определяет?​ Оператор. А бывает и так — машина в какой-то момент начинает работать неправильно. А определить это оказывается невозможно — по крайней мере, вовремя... ​
 +
 +Чтобы свести такую возможность к минимуму,​ изделия рук человеческих д.б. гарантоспособны. По-простому это значит — их создатели должны полностью отвечать за то, что изделие работает так, как положено. Но не только — ещё нужно, чтобы ущерб от неправильной работы был в допустимых пределах или вообще была возможность его предотвратить. Если изделие программируется — то гарантоспособность исполнения программ «нашей машиной» в его составе — важная часть решения этой проблемы в целом. Если же и нет — то понимание работы изделия,​ строгое алгоритмически,​ тоже важно. Для этого в конечном счёте и нужно описывать алгоритмы точно и понятно. Для человека...
 +
 +==== Отступление:​ формализация и языки представления знаний ====
 +
 +В отличие от исходного определения,​ здесь задаются также текстоэлементы языка. Дело в том, что смысл и лексики,​ и отдельных конструкций (типовых и уникальных подсхем) и законченных схем не сводится к тому, который представлен графикой вершин и линий. Это отражено ещё автором техноязыка в названии авторской технологии его применения — ГРАФИТ-ФЛОКС (от ГРАФика И Текст; ФЛОКС — дополнительный к ДРАКОНу табличный язык, используемый для описания величин) — и в предварительной классификации содержания программно строгих описаний деятельности. Последовательно этот принцип проведён в [[http://​grafit-basis.narod.ru/​L2/​gen_struct_dan.html|классификации формализуемых знаний]] и в графит-методе — новом виде исчисления схем, определённом [[http://​grafit-basis.narod.ru/​L3/​grafit-rules.html|здесь]]. Графит-метод использует и основные принципы,​ принятые для техноязыка,​ но также вводит новые. Учёт текста не только для частных случаев (гибридных техноязыков),​ но и в общем (и в правилах исчисления,​ когда нужно) — один из графит-принципов. Заметим,​ что правильно добавлять сюда также и таблицы — как своего рода предтечу схемы текста — и несхематические изображения (скажем,​ рисунки,​ вставленные в вершины) — и тогда говорить просто о содержании вершин.
 +
 +Уже давно специалисты по анализу и проектированию деятельности и взаимодействия человека в трудовом процессе — инженерные психологи — определяли общую структур процесса формализации знаний. Общий результат можно найти на [[http://​drakonografika.narod.ru/​L2/​formalization.html#​Doc-n1411|этой странице]]. В структуре процесса можно фактически выделить три стадии - «качественную»,​ математическую и информатическую. Каждой из них соответствует достигаемый уровень формальности языка. Познакомимся с этими уровнями вкратце.
 +
 +//​**Неформальный**//​ предполагает «почти естественную» формулировку действия — как фразы на родном языке сочинителя,​ только с заданным подразделением на имена объектов (в экономическом смысле — предметов и результатов труда) и «имя действия» - глагольные обороты,​ связующие объекты и указывающие применение к ним называемых действий (и, возможно,​ инструментов). Как действия д.б. знакомы исполнителю по названиям (входить,​ как говорят Паронджанов,​ а ранее — [[http://​forum.oberoncore.ru/​viewtopic.php?​p=71218#​p71218|В.Ш. Кауфман в книге «Языки программирования. Концепции и принципы»]],​ в его «репертуар»),​ так и объекты д.б. известны по именам,​ образуя,​ так сказать,​ «багаж» исполнителя;​ то же касается и инструментов,​ образующих,​ условно говоря,​ «реквизит» процесса. Понятно,​ что не меньшие знания обо всём этом д.б. у сочинителя. ;-)
 +
 +//​**Функциональный**//​ уровень в принципе соответствует уже математической трактовке деятельности. Как некоей структуры функций,​ применение которых к аргументам (тем же объектам-предметам труда) даёт объекты-результаты труда. Структура объединяет функции прежде всего путём композиции (в цепочку,​ где результат[ы] одной функции передаются как аргумент[ы] следующей).
 +
 +//​**Информатический**//​ уровень возникает как результат информатизации представления о деятельности. При этом выделяется императивное формализованное знание — о маршрутах процесса,​ декларативное — о типах объектов и их структурах,​ активностное — о типах операций и средствах их выполнения (как структуре механизмов «реквизита»). В пределе обязательно представление объектов как чисел (кодов) и операций — как арифметических и/или логических (в смысле булевых функций над двоичными цифрами-битами). Любым «материальным последствиям» исполнения алгоритма тогда соответствуют (в алгоритмической обстановке,​ т.е. в модели контекста процесса) значения чисел/​кодов на определённых линиях связи внутри исполнителя (между механизмами «реквизита») и в его окружении в определённые моменты времени. Так можно описать то, что Паронджанов называет «техпроцессом». Понятно,​ что сочинитель должен представлять себе схему исполнителя вместе с окружением,​ «размеченную» величинами данного процесса.
 +
 +Таков пролог нашей истории... :)
  
 ====== Продолжение следует... ====== ====== Продолжение следует... ======
Строка 101: Строка 174:
  
 [[Шампур-укладка на плоскости - свет и тени силуэта|]] [[Шампур-укладка на плоскости - свет и тени силуэта|]]
 +
 +===== Атомарные и лианные структуры =====
 +
 +[[Атомарные и лианные структуры|]]
 +
 +===== Структурная алгоритмизация и шампур-метод:​ сочинитель становится мудрецом =====
 +
 +[[Структурная алгоритмизация и шампур-метод - сочинитель становится мудрецом|]]
 +
 +===== Разметка схем и гибридные техноязыки =====
 +
 +[[Разметка схем и гибридные техноязыки - ДРАКОН начинает,​ ГРАФИТ выигрывает|]]
texnojazyk_i_shampur-metod_-_suschnost_preemstvennost_razvitie.1333791320.txt.gz · Последние изменения: 2012/04/07 13:35 — Владислав Жаринов