Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность/Надёжность
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия | |||
jazyk:soobschenija_o_jazyke_i_metode_ischislenija_ikon:drakon_shampur_ocenka [2012/03/22 16:51] Владислав Жаринов [Структурная алгоритмизация и шампур-метод] |
jazyk:soobschenija_o_jazyke_i_metode_ischislenija_ikon:drakon_shampur_ocenka [2012/03/22 17:13] (текущий) Владислав Жаринов [Разметка схем и гибридные техноязыки: ДРАКОН начинает, ГРАФИТ выигрывает] |
||
---|---|---|---|
Строка 8: | Строка 8: | ||
- | ===== Разметка схем и гибридные техноязыки: ДРАКОН начинает, ГРАФИТ выигрывает ===== | ||
- | В ШМ она, по сути, не рассматривается. По определению это исчисление «слепышей», т.е. неразмеченных графов (без учёта текстоэлементов синтаксиса схем). Однако на практике возникает необходимость по крайней мере в двух типах разметки шампур-схем: | ||
- | |||
- | |||
- | * для выходов развилок — надписями «да»/«нет» при выходных рёбрах; | ||
- | |||
- | |||
- | * для веточных макроциклов (ВМЦ) — какими-нибудь индексами, позволяющими отличить разные ВМЦ в одном силуэте. | ||
- | |||
- | Первый тип можно реализовать и иначе — вершинами, несущими надписи. Такое решение можно видеть в предложениях Рэйлвей Кагена для его ПРОТОН-нотации. По сути, такие вершины — эквиваленты икон ''Вариант'' в макроиконе ''Переключатель''. | ||
- | |||
- | Второй тип может иметь синтаксис, предложенный некоторыми пользователями техноязыка и показанный у Паронджанова(см. выдержку в [[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|также указывал]]. | ||
==== Доалгоритмическая формализация: хороший командир указывает, ЧТО, но не указывает, КАК ==== | ==== Доалгоритмическая формализация: хороший командир указывает, ЧТО, но не указывает, КАК ==== |