Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность/Надёжность
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
vershiny_i_linii_sxem_-_smysl_v_grafike_i_tekste [2012/04/07 12:43] Владислав Жаринов [Азбука ДРАКОНа-1 — кое-что для реальных исполнителей алгоритмов] |
vershiny_i_linii_sxem_-_smysl_v_grafike_i_tekste [2012/09/09 12:16] (текущий) Владислав Жаринов [Азбука ДРАКОНа-1 — сложные схемы и их описание] - добавлены ссылки |
||
---|---|---|---|
Строка 6: | Строка 6: | ||
В то же время композиция многофигурных вершин м.б. более стройной, если ввести общие законы их построения. Возможны следующие: | В то же время композиция многофигурных вершин м.б. более стройной, если ввести общие законы их построения. Возможны следующие: | ||
- | вертикалей окружения — вводятся условные оси, параллельные шампуру схемы и представляющие совокупные потоки управления процессов, взаимодействующих с алгоритмическим процессом, описываемым схемой; | + | * вертикалей окружения — вводятся условные оси, параллельные шампуру схемы и представляющие совокупные потоки управления процессов, взаимодействующих с алгоритмическим процессом, описываемым схемой; |
- | событийного следования — фигуры в вершине и/или части её содержания упорядочиваются по шампуру в порядке исполнения. | + | * событийного следования — фигуры в вершине и/или части её содержания упорядочиваются по шампуру в порядке исполнения. |
В части первого нужно раздельно представлять процессы того же исполнителя и процессы его внешней среды; поэтому следует ввести оси по обе стороны шампура; фигуры, представляющие связь с соответствующей категорией процессов, для удобства чтения нужно сделать как по форме направленными на ось, так и по положению смещёнными к ней. | В части первого нужно раздельно представлять процессы того же исполнителя и процессы его внешней среды; поэтому следует ввести оси по обе стороны шампура; фигуры, представляющие связь с соответствующей категорией процессов, для удобства чтения нужно сделать как по форме направленными на ось, так и по положению смещёнными к ней. | ||
Строка 13: | Строка 13: | ||
В части второго предшествующие события представляются фигурами, расположенными ближе к началу шампура; кроме того, можно использовать уровни глубины, если допускать частичное перекрытие фигур в вершине. | В части второго предшествующие события представляются фигурами, расположенными ближе к началу шампура; кроме того, можно использовать уровни глубины, если допускать частичное перекрытие фигур в вершине. | ||
- | Можно видеть, что в ШМ принято единственное правило — располагать фигуры вершины «лесенкой» всегда справа налево и направленные формы фигур направо - более простое, но менее информативное. | + | Можно видеть, что в ШМ принято единственное правило — располагать фигуры вершины «лесенкой» всегда справа налево и направленные формы фигур направо - более простое, но не использующее информативность графики полностью. |
+ | |||
+ | Имеется в виду, что для графики вершин схем можно выделить информативные признаки её расположения: | ||
+ | * направленность фигур — при наличии шампура существенна в направлении, перпендикулярном ему; | ||
+ | * порядок следования нескольких фигур вершины (в направлении шампура); | ||
+ | * относительная глубина фигур (проявляется, если фигуры могут перекрываться). | ||
Также алфавит БС функционально шире, чем в ДРАКОНе. Блок-схемы предназначены для представления содержания всей программы (в смысле расширенного тезиса Вирта). Поэтому, кроме подалфавита импер-части (называемой в БС «схема алгоритма»), предусмотрен также подалфавит для деклар-части («схемы данных»). Имеются также средства для представления материальных действий («техпроцессов» по Паронджанову) и структур (актив-части). Однако назначение ДРАКОНа — представлять только императивные знания; поэтому остальной алфавит здесь не нужен. | Также алфавит БС функционально шире, чем в ДРАКОНе. Блок-схемы предназначены для представления содержания всей программы (в смысле расширенного тезиса Вирта). Поэтому, кроме подалфавита импер-части (называемой в БС «схема алгоритма»), предусмотрен также подалфавит для деклар-части («схемы данных»). Имеются также средства для представления материальных действий («техпроцессов» по Паронджанову) и структур (актив-части). Однако назначение ДРАКОНа — представлять только императивные знания; поэтому остальной алфавит здесь не нужен. | ||
Строка 33: | Строка 38: | ||
Для уточнения (расширения) смысла вершины, включённой в шампур, в шампур-методе используют добавочные вершины-боковики, присоединяемые справа и/или слева к вершине, находящейся на шампуре (в цепочке следования). Возможность присоединения мы показываем отрезком линии сбоку. Так же показываются точки включения в вертикаль (вход и/или выход[ы] вершины). | Для уточнения (расширения) смысла вершины, включённой в шампур, в шампур-методе используют добавочные вершины-боковики, присоединяемые справа и/или слева к вершине, находящейся на шампуре (в цепочке следования). Возможность присоединения мы показываем отрезком линии сбоку. Так же показываются точки включения в вертикаль (вход и/или выход[ы] вершины). | ||
- | Возвращаясь от формы к сути, заметим для начала, что алфавитные знаки индексируются не так, как в исходном техноязыке. Это связано и с их смысловой группировкой, и с тем, что ДРАКОН — лишь один из нужных для визуализации языков. Это следует из упомянутых классификаций — уже в ГРАФИТ-ФЛОКС, как было сказано, имеется два языка. Поэтому же в текст вершины ''Заголовок'' включён префикс языка — каждая схема составляется на одном языке, но языков, у потребляемых для описания одного и того же предмета, м.б. более одного... Почему - сказано выше в "Отступлении о языках...". | + | Возвращаясь от формы к сути, заметим для начала, что алфавитные знаки индексируются не так, как в исходном техноязыке. Это связано и с их смысловой группировкой, и с тем, что ДРАКОН — лишь один из нужных для визуализации языков. Это следует из упомянутых классификаций — уже в ГРАФИТ-ФЛОКС, как было сказано, имеется два языка. Поэтому же в текст вершины ''Заголовок'' включён префикс языка — каждая схема составляется на одном языке, но языков, у потребляемых для описания одного и того же предмета, м.б. более одного... Почему - сказано ранее в "[[http://drakon.su/texnojazyk_i_shampur-metod_-_suschnost_preemstvennost_razvitie#otstuplenieformalizacija_i_jazyki_predstavlenija_znanij|Отступлении о языках...]]". |
Далее, в техноязыке принято включать в заголовок имя схемы. По сути, это имя алгоритмического процесса. Имеющего некий внешний контекст, в котором он вызывается, для чего создаётся собственный контекст процесса. Для указания контекста в техноязыке обычно используют боковики. | Далее, в техноязыке принято включать в заголовок имя схемы. По сути, это имя алгоритмического процесса. Имеющего некий внешний контекст, в котором он вызывается, для чего создаётся собственный контекст процесса. Для указания контекста в техноязыке обычно используют боковики. | ||
Строка 39: | Строка 44: | ||
Процесс может и не иметь конца — тогда говорят, что он «зацикленный». В техноязыке в этм случае используют специальную форму дракон-схемы, которую рассмотрим в другом разделе. | Процесс может и не иметь конца — тогда говорят, что он «зацикленный». В техноязыке в этм случае используют специальную форму дракон-схемы, которую рассмотрим в другом разделе. | ||
- | Возможно, что два и более алгопроцессов взаимодействуют друг с другом. Тогда возникает некая организация дракон-схем в систему, которую можно назвать "дракон-моделью". Представляемые схемами модели процессы могут находиться либо в отношении «главный-подчинённый» (иерархическая, или ранговая модель), либо в отношении «партнёров» (одноранговая, или диспозитивная модель). По порядку же возникновения всегда существует первичный процесс, который для другого данного процесса бывает: | + | Возможно, что два и более алгопроцессов взаимодействуют друг с другом. Тогда возникает некая организация дракон-схем в систему, которую можно назвать "дракон-моделью". Представляемые схемами модели процессы могут находиться либо в отношении «главный-подчинённый» (иерархическая, или //ранговая// модель), либо в отношении «партнёров» (одноранговая, или //диспозитивная// модель). По порядку же возникновения всегда существует //первичный// процесс, который для другого данного процесса бывает: |
Строка 45: | Строка 50: | ||
- | * «родительский» - когда данный процесс порождён как часть системы т.н. совместно протекающих взаимодействующих процессов (как ещё говорят, асинхронных или параллельных — понятие см. в Ч.I, Гл. 6 «Концепций и принципов...» В.Ш. Кауфмана). | + | * «родительский» - когда данный процесс порождён как часть системы т.н. совместно протекающих взаимодействующих процессов (как ещё говорят, асинхронных или параллельных — понятие см. в [[http://drakon.su/biblioteka/start#knigi|Ч.I, Гл. 6 «Концепций и принципов...»]] В.Ш. Кауфмана). |
- | В ранговой модели существует только одна рабочая точка. Она последовательно проходит процессы, начиная с первичного вызывающего. Там, где указана вставка другого процесса, совершается переход на его схему. Когда эта схема пройдена до конца — переход обратно на место указания вставки. В совокупности эти переходы образуют т.н. переход с возвратом (у Паронджанова также называется «акробатический прыжок»). Первичный процесс здесь понимается как головной. | + | В //**ранговой**// модели существует только одна рабочая точка. Она последовательно проходит процессы, начиная с первичного вызывающего. Там, где указана вставка другого процесса, совершается переход на его схему. Когда эта схема пройдена до конца — переход обратно на место указания вставки. В совокупности эти переходы образуют т.н. переход с возвратом (у Паронджанова также называется «акробатический прыжок»). Первичный процесс здесь понимается как головной. |
- | Суть асинхронности (параллелизма) — в допущении более чем одной «рабочей точки» для системы процессов. Каждая точка развёртывает свою схему, и при необходимости процессы взаимодействуют. Первичный процесс в этом случае понимается как базовый; он может контролировать ход порождённых им процессов и при необходимости «снимать» их — досрочно прекращать исполнение. | + | В //**диспозитивной**// модели суть асинхронности (параллелизма) — в допущении более чем одной «рабочей точки» для системы процессов. Каждая точка развёртывает свою схему, и при необходимости процессы взаимодействуют. Первичный процесс в этом случае понимается как базовый; он может контролировать ход порождённых им процессов и при необходимости «снимать» их — досрочно прекращать исполнение. |
- | Понятно, что в обоих моделях в каждом процессе, если он нелинейный, проходится один маршрут. Также понятно, что в ранговой модели ни один процесс, кроме первичного, не м.б. «зацикленным». | + | Понятно, что в обоих моделях в каждом процессе, если он нелинейный, проходится один маршрут. Также понятно, что в ранговой модели ни один процесс, кроме первичного, не м.б. «зацикленным». Взаимодействие же в диспозитивной модели м.б. как //прямым// - через управление ходом процесса, так и //опосредованным// - через передачи чего-либо или использование в условиях одного процесса величин, на значения которых могут влиять другие процессы. |
В определении действия мы видим повторяющуюся структуру. Хотя бы одно действие всегда записано в вершине; но можно записать два и больше. Это удобно для смысловой группировки цепочки действий в одной или более вершинах. При этом считаем, что действия выполняются в том порядке, как они написаны в вершине. | В определении действия мы видим повторяющуюся структуру. Хотя бы одно действие всегда записано в вершине; но можно записать два и больше. Это удобно для смысловой группировки цепочки действий в одной или более вершинах. При этом считаем, что действия выполняются в том порядке, как они написаны в вершине. | ||
Строка 61: | Строка 66: | ||
Уточним, что в РБНФ-итераторах (как помним из определения РБНФ-метаязыка, так называется операция, обозначаемая фигурными скобками) N служит обозначением натурального (иногда — целого, т.е. включающего и ноль) числа — предела повторений вхождения. Число это каждый раз м.б. разным — на что указывает конкретизирующий индекс при N. | Уточним, что в РБНФ-итераторах (как помним из определения РБНФ-метаязыка, так называется операция, обозначаемая фигурными скобками) N служит обозначением натурального (иногда — целого, т.е. включающего и ноль) числа — предела повторений вхождения. Число это каждый раз м.б. разным — на что указывает конкретизирующий индекс при N. | ||
- | В нелинейной схеме «самый-самый» по какому-то критерию (или ряду критериев) маршрут удобно принять за **//главный//**. В шампур-методе принято, что он всегда идёт по прямой — т.е. через главные выходы всех развилок. Как упорядочиваются остальные маршруты — поговорим дальше. | + | В нелинейной схеме «самый-самый» по какому-то критерию (или ряду критериев) маршрут удобно принять за **//главный//**. В шампур-методе принято, что он всегда идёт по прямой — т.е. через главные выходы всех развилок. Как упорядочиваются остальные маршруты — поговорим дальше (в [[http://drakon.su/uporjadochenie_marshrutov_-_chem_pravee_tem..._pridumaj_sam|этой статье]]). |
С использованием двух следующих вершин строится дракон-переключатель — иная форма визуализации условия ветвления. | С использованием двух следующих вершин строится дракон-переключатель — иная форма визуализации условия ветвления. | ||
Строка 79: | Строка 84: | ||
{{ :jazyk:soobschenija_o_jazyke_i_metode_ischislenija_ikon:st_drakonsu_-_ocenka_texnojazyka_i_ishm_html_4df6cdb4.gif? |}} | {{ :jazyk:soobschenija_o_jazyke_i_metode_ischislenija_ikon:st_drakonsu_-_ocenka_texnojazyka_i_ishm_html_4df6cdb4.gif? |}} | ||
- | Сначала — замечания по синтаксису. Прежде всего видно, что мы ввели визуальный эквивалент РБНФ. Здесь он описывает повторы отдельных частей схем (знаков Д17 и Д18). Как — сказано выше в «Отступлении о синтаксисе...». | + | Сначала — замечания по синтаксису. Прежде всего видно, что мы ввели визуальный эквивалент РБНФ. Здесь он описывает повторы отдельных частей схем (знаков Д17 и Д18). Как — сказано выше в «[[http://drakon.su/texnojazyk_i_shampur-metod_-_suschnost_preemstvennost_razvitie#otstuplenie_o_sintaksiseehrgonomichno_ne_vsegda_neformalno|Отступлении о синтаксисе...]]». |
- | Снова вернёмся от представления к содержанию. С комментариями всё понятно. Или они указывают, «куда подшили» (скобочные), или «куда вставили» (вершинный). Вообще комментарий в формальном смысле - это часть текста, которую можно удалить без изменения значения (для исполнителя). Проще говоря — это часть описания, нужная для сочинителя, а не для исполнителя (второму она м.б. и непонятна). Но вершинный комментарий на практике иногда используют для размещения части описания, не выразимой на языке шампур-схемы. Это эргономически не лучшее решение — и м.б. только как временное в процессе построения полноценной системы языков (как описано в завершающем разделе статьи). | + | Снова вернёмся от представления к содержанию. С комментариями всё понятно. Или они указывают, «куда подшили» (скобочные), или «куда вставили» (вершинный). Вообще комментарий в формальном смысле - это часть текста, которую можно удалить без изменения значения (для исполнителя). Проще говоря — это часть описания, нужная для сочинителя, а не для исполнителя (второму она м.б. и непонятна). Но вершинный комментарий на практике иногда используют для размещения части описания, не выразимой на языке шампур-схемы. Это эргономически не лучшее решение — и м.б. только как временное в процессе построения полноценной системы языков (как описано в [[http://drakon.su/razmetka_sxem_i_gibridnye_texnojazyki_-_drakon_nachinaet_grafit_vyigryvaet|завершающей статье]]). |
Далее у нас определены конструкции для нелинейных связей в схемах техноязыка. Причём подробно — вместе с вершинами. Поскольку в них выражена своя часть смысла — и нам интересная именно в связи с построением и чтением схем. После изучения языка этот смысл понятен — поэтому на практических схемах вершины можно не показывать (как и делается в книгах по техноязыку). Вот чего там не делалось (по крайней мере, до 2011 года :)) - это объяснения их смысла... | Далее у нас определены конструкции для нелинейных связей в схемах техноязыка. Причём подробно — вместе с вершинами. Поскольку в них выражена своя часть смысла — и нам интересная именно в связи с построением и чтением схем. После изучения языка этот смысл понятен — поэтому на практических схемах вершины можно не показывать (как и делается в книгах по техноязыку). Вот чего там не делалось (по крайней мере, до 2011 года :)) - это объяснения их смысла... | ||
Строка 203: | Строка 208: | ||
Для верхней всё не столь тривиально — но это имеет смысл рассмотреть отдельно для различных случаев употребления. Не забывая, как обычно, о тексте... | Для верхней всё не столь тривиально — но это имеет смысл рассмотреть отдельно для различных случаев употребления. Не забывая, как обычно, о тексте... | ||
+ | |||
+ | В целом случаи определяются логикой выбора выходов верхней гребёнки. Она возможна по И, ИЛИ, Исключающему ИЛИ. | ||
+ | |||
+ | Как известно, такой выбор подчиняется одной из стратегий: | ||
+ | |||
+ | * «ленивой» — условия выбора вычисляются последовательно; | ||
+ | * «усердной» - вычисляются все условия (м.б. одновременно). | ||
+ | | ||
+ | Любая стратегия требует правил вычисления и отбора результатов. При «лени- | ||
+ | вой» устанавливается порядок просмотра входов, который завершается при числе | ||
+ | вариантов, допустимом по смыслу узла. При «усердной» выбирается столько ва- | ||
+ | риантов, сколько допустимо по смыслу узла (случайно или по к.-л. критериям). | ||
Конечно, содержание вершин и/или линий не всегда нужно учитывать. Поэтому дальше мы будем использовать и абстрактные схемы («слепыши»). | Конечно, содержание вершин и/или линий не всегда нужно учитывать. Поэтому дальше мы будем использовать и абстрактные схемы («слепыши»). | ||
- | Итак, мы кое-что знаем о визуализации разветвляющихся и циклических конструкций алгоритмов. А какие конструкции нужно строить? По теории алгоритмов, любой алгопроцесс можно построить из структур следования (цепочек вершин типа действия) и циклов. Менее строго можно допустить ветвления. На сей счёт была доказана т.н. теорема Б<о|ё>ма-Джакопини. Интересующиеся могут найти её в[[http://www.ozon.ru/context/detail/id/3056680/|этой книге]] (как можно видеть, мы для примера применили РБНФ к «обыденному») тексту — чтобы указать на разночтение имени одного из соавторов :-)). | + | Итак, мы кое-что знаем о визуализации разветвляющихся и циклических конструкций алгоритмов. А какие конструкции нужно строить? По теории алгоритмов, любой алгопроцесс можно построить из структур следования (цепочек вершин типа действия) и циклов. Менее строго можно допустить ветвления. На сей счёт была доказана т.н. теорема Б<о|ё>ма-Джакопини. Интересующиеся могут найти её в[[http://drakon.su/biblioteka/start#knigi|книге С.З. Свердлова]] (как можно видеть, мы для примера применили РБНФ к «обыденному») тексту — чтобы указать на разночтение имени одного из соавторов :-)). |
Такое предпочтение циклам не случайно и в плане сложности описания. В самом деле, можно сказать что «цикл — это способ записать меньше, чем на самом деле будет сделано» (написали в теле одну цепочку команд — а выполнится она столько раз, сколько нужно). Тогда как «ветвление — способ записать больше, чем будет сделано» (написали и такую цепочку, и такую — а выполнится каждый раз только одна). | Такое предпочтение циклам не случайно и в плане сложности описания. В самом деле, можно сказать что «цикл — это способ записать меньше, чем на самом деле будет сделано» (написали в теле одну цепочку команд — а выполнится она столько раз, сколько нужно). Тогда как «ветвление — способ записать больше, чем будет сделано» (написали и такую цепочку, и такую — а выполнится каждый раз только одна). |