DRAKON.SU

Текущее время: Пятница, 19 Апрель, 2024 14:39

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 254 ]  На страницу Пред.  1 ... 8, 9, 10, 11, 12, 13  След.
Автор Сообщение
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Четверг, 13 Сентябрь, 2012 07:16 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
PSV100 в viewtopic.php?p=74686#p74686 писал(а):
...
Пока результат один - я физически не успеваю выполнять постоянные безусловные веточные переходы на множество сваливающихся на меня шампуров, т.е. смежных тем форума :) (но, всё-равно, спасибо)
...
Пожалуйста... выполняйте условные (пора уходить от визуального ассемблера!)... :) В общем-то других веток пока в тему нет... вот, кстати, среди них в "Задаче на перспективу" наметилось оживление...

Спасибо, и остальное на заметку разработчикам... допустим, того же структурного редактора (если, конечно, он отбирает - но обсуждать это в той теме, куда и перевёл)...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Четверг, 13 Сентябрь, 2012 18:43 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 396
Владислав Жаринов писал(а):
...и остальное на заметку разработчикам... допустим, того же структурного редактора (если, конечно, он отбирает - но обсуждать это в той теме, куда и перевёл)...


Я не имел в виду то, что обсуждаемые там семантические редакторы и подобные проекты конкретно что-то отбирают. Если говорить о применении технологий за пределами образовательных и исследовательских целей, то, прежде всего, необходимы весомые предпосылки для того, чтобы заставить программиста пользоваться ещё одним инструментом, коих и так пачка из-за зоопарка технических платформ. Тем более, когда "за спиной" нет ни крупного вендора, ни сообщества разработчиков, которые тянут на себе груз расширений функционала, и, в целом, сомнительный потенциал для подгонки под себя и адаптации платформы.
Я поверхностно пробежался по форуму, глянул пару картинок, и пока просто обратил внимание, что незаметно принципов простой и удобной организации работы из программистских редакторов. О сущности функционала проектов у меня мало представления, так что, что-то конструктивно обсуждать вряд ли могу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Четверг, 13 Сентябрь, 2012 18:50 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 396
Kemet писал(а):
Я поэкспериментрировал с циклами, и вот что получилось:
...

Ага, спасибо. Значит, я выдавал желаемое за действительное. Как я понимаю, циклы отличаются так: если сверху спецдуги есть предикат - это "FOR", если есть обратные дуги - "паук", иначе - "while". Возьму на заметку. Думаю, что такую семантику взяли не с потолка, учитывая общую необычность Р-схем необходимо анализировать все подходы, если уж вдруг Р-рисовать. Я же пытаюсь решать задачи попроще, к примеру, как в упомянутом здесь на форуме Go все циклы свели к одной форме "for".

Кстати, подумывал о "функциональном подходе". Как раз где нет явных циклов необходимо эту поглощающую спецдугу, а точнее структуру под ней, использовать как тело лямбды, которую куда-то передают, т.е. некий аналог тела цикла. Но пока по прикидкам не могу понять, будут ли Р-схемы иметь какое-то преимущество перед обычным текстом, ну хотя бы в Хаскель-стиле. Всё-таки, через такой код как-то покомпактнее всё декларируется, что-ли. Нужно фантазировать, чтобы код можно было растягивать и горизонтально по дугам, тогда будет эффект. В общем, пока не могу понять...

Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Четверг, 13 Сентябрь, 2012 19:12 

Зарегистрирован: Понедельник, 09 Август, 2010 22:28
Сообщения: 128
Уважаемый PSV100, не могли бы вы привести здесь пример цила-паука на обычном языке программирования с соответствующей P-схемой. А то я не понимаю этот термин. Из-за чего не могу полноценно понимать о чем говорится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Четверг, 13 Сентябрь, 2012 20:13 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 105
Откуда: Псков
Возвращаясь к Р-схемам. Думаю что всё это только для проблемно-ориентированных языков. Да, собственно, если взять ту книгу В. о которой уже шла речь - она как пример в подтверждение может служить. Рассматривать Р-технологию как альтернативную нынешним средам разработки для обычных языков - наверное не реалистично.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Пятница, 14 Сентябрь, 2012 04:36 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 34
Цикл-паук
Пример имитации цикла-паука


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Пятница, 14 Сентябрь, 2012 04:53 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 34
PSV100 писал(а):
Как я понимаю, циклы отличаются так: если сверху спецдуги есть предикат - это "FOR", если есть обратные дуги - "паук", иначе - "while".

Есть ещё библиотечный "<CYCLE>", с особой семантикой - обратная дуга выполняется только один раз, когда/если условие/условия входа становятся ложными, после чего структура считается выполненной.
Хотя все подобные циклы (в том числе и WHILE) - это частный случай общей схемы организации циклов ( семантика которой совпадает с семантикой цикла-паука ). Выпадает только REPEAT ... UNTIL, который имитируется с помощью базовой структуры, а не специальной.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Пятница, 14 Сентябрь, 2012 12:59 

Зарегистрирован: Понедельник, 09 Август, 2010 22:28
Сообщения: 128
Kemet писал(а):


Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Суббота, 15 Сентябрь, 2012 15:24 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 396
usr345 писал(а):
Уважаемый PSV100, не могли бы вы привести здесь пример цила-паука на обычном языке программирования с соответствующей P-схемой. А то я не понимаю этот термин. Из-за чего не могу полноценно понимать о чем говорится.

Пусть уже всё всем понятно, но я попытаюсь Р-порисовать, с учётом замечаний от Kemet. Ранее здесь говорилось, что базовая структура "паука" задаётся в виде:

Вложение:
r_pauk.png
r_pauk.png [ 1.01 КБ | Просмотров: 16619 ]


А также имеется ещё одна универсальная структура-заготовка "<CYCLE>":

Вложение:
r_cycle.png
r_cycle.png [ 2.04 КБ | Просмотров: 16619 ]


Неясно, на что намекает самая нижняя дуга без стрелок, но, похоже, что это просто описка. Здесь ключевой момент в том, что возможно существование обратной дуги без предиката. Исходя из утверждения, что все виды циклов основываются на семантике "паука", и на основе определения сущности этого цикла из вики:

Вложение:
r_pauk_wiki.png
r_pauk_wiki.png [ 24.19 КБ | Просмотров: 16619 ]


то можно сделать заключение о том, что обратная дуга без предиката и есть то самое "E", и если она отсутствует, то "если ни прямых ни обратных проходимых дуг нет, то программа завершается с сообщением о непроходимой структуре.".

Попробую изобразить пример имитации цикла-паука:

Вложение:
r_pauk_exam.png
r_pauk_exam.png [ 63.51 КБ | Просмотров: 16619 ]


Нужно обратить внимание, что я под "запуском дуги" подразумеваю исполнение дуги как целостной структуры, т.е. дуга - есть вложенная структура, со всеми своими связями (последоват. и пр.), и ее успех выполнения требует успешное выполнение всех составных для неё структур. В примере при анализе предикатов обратных дуг символ "ch" будет всегда определён, т.к. "getchar()" отработает несмотря на успешность всей прямой дуги (или структуры).

Теперь можно глянуть на ранние примеры цикла "while", с одним и более охранным условием:

Вложение:
r_while.png
r_while.png [ 37.06 КБ | Просмотров: 16619 ]


Если добавить обратные дуги, то цикл станет "пауком". Но т.к. нет обратных дуг, т.е. явных выходных условий, в данном случае они не важны, то Р-машина делает "поблажку", и если цикл не может продолжаться или даже начаться, то не считает структуру непроходной и топает дальше. А если имеется "Е", т.е. обратная дуга без предиката, то при любом исходе цикла машина вынуждена её исполнить, т.к. прямые дуги не могут больше выполняться, и обратных дуг-конкурентов нет.

Надеюсь, что логика "паука" соблюдается и для "FOR", отличие в том, что необходимость повторения цикла диктуют явные условия над спецдугой, т.е. то, что прямые дуги могут быть не исполнены - не важно, как и в "while", ошибки не будет, но повторить обязаны согласно указаниям для цикла. Поэтому, вроде, можно модифицировать ранее приводимые примеры "FOR", на втором варианте схемы убрана пустая дуга:

Вложение:
r_for.png
r_for.png [ 23.33 КБ | Просмотров: 16619 ]


Можно предположить, что если добавить обратные дуги в "FOR", то они будут работать как "break". Если сработает "break", то цикл прекратится, в т.ч. не выполнится и обратная Е-дуга без предиката, если и её указать. А если будет указана Е-дуга, то она может сработать только в конце цикла и только в том случае, если "break" не сработает или он отсутствует (хотя не всё ясно, к примеру, будет ли выполнена E-дуга, если цикл ни разу не выполнился, скорее всего, должна отработать, как в "while").

Также картинки с сайта фонда Глушкова указывают на то, что под спецдугой может быть указано действие после каждой итерации в "FOR":

Вложение:
r_for2.png
r_for2.png [ 2.47 КБ | Просмотров: 16619 ]


Приведу ещё один пример с сайта фонда Глушкова:

Вложение:
r_fact.png
r_fact.png [ 104.22 КБ | Просмотров: 16619 ]


Кроме того, что здесь показана сущность проектирования в Р-технологии, также можно глянуть на то, как организуются циклы через обычные структуры. Получается, что нет каких-то явных переходов в левую/правую вершину, т.е. последовательного явного алгопоезда, как в блок-схемах. Как и алгебра слепки структур, есть и алгебра их выполнения. Оценивается проходимость структуры. Сначала запускается прямая дуга, для которой сработал предикат, если таковых нет, то запускается прямая дуга без предиката. Затем оцениваются по такому же принципу обратные дуги, даже если не было запусков прямых. Если сработала обратная дуга, то требуется повторить исполнение структуры. Если нет ни прямых, ни обратных работающих дуг - ошибка, структура не может быть пройдена. Но если исполнимых дуг нет на второй и более итерации, то ошибки нет, проход по структуре завершён.

Иными словами, спецструктуры с двойной дугой исполняются автоматически повторно, и обратные дуги указывают на необходимость прекратить цикл (или работают при его завершении), а в обычных структурах эти обратные дуги, наоборот, указывают на необходимость повтора. Правила проходов обычных и спецструктур, в принципе, чем-то похожи, имеют некоторые общие принципы. Также предположительно, что цикличность может быт подкреплена структурными переходами.

В общем, постепенно картинка логики работы Р-схем вырисовывается. Имхо, я вряд ли сейчас всё чётко понимаю, но к истине что-то близко уже. Понять бы ещё логику параллельных процессов, которые могли обозначаться так:

Вложение:
r_paral.png
r_paral.png [ 1.46 КБ | Просмотров: 16619 ]


Имхо, додумать можно, но, в принципе, здесь много зависимостей от конкретной платформы.


Последний раз редактировалось PSV100 Суббота, 15 Сентябрь, 2012 16:02, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Суббота, 15 Сентябрь, 2012 15:50 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 396
albobin писал(а):
Возвращаясь к Р-схемам. Думаю что всё это только для проблемно-ориентированных языков. Да, собственно, если взять ту книгу В. о которой уже шла речь - она как пример в подтверждение может служить. Рассматривать Р-технологию как альтернативную нынешним средам разработки для обычных языков - наверное не реалистично.

Я тоже думаю, что вряд ли Р-технология составит конкуренцию для современного мэйнстрима, но дополнить в рамках DSL может, и очень так ничего себе, когда нужна визуализация. Кроме алгоритмов есть и другие схемы, "UML для народа". И сама алгоритмика довольно мощна, как для визуального программирования, хоть и со своими особенностями, включая наглядность и понятность. Привыкание, действительно, Р-схемы требуют, но похоже, что не через сверх-требования. Под Р-схемы хорошо ложится логика обработки исключений не через управляющие инструкции, о чём ранее говорилось, в рамках многопоточности, учитывая склонность Р-схем подталкивать к использованию каких-то глобальных объектов (переменных, разделяемых между структурами), под них хорошо подходит модель от Clojure, т.е. разделяемое состояние объектов во временной зависимости, плюс и другие техники. Тем более, что Р-схемы - тот же лисп, но в графике :) .

Короче говоря, в Р-схемах неплохой потенциал для DSL-платформы, с возможностью черчения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Суббота, 15 Сентябрь, 2012 20:17 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 34
PSV100 писал(а):
Неясно, на что намекает самая нижняя дуга без стрелок
Это описка, там должна быть прямая дуга, выполняется сразу после обратной. И над обратной нельзя поставить предикат. Напомню, что это библиотечная структура, семантика её определена разработчиком, синтаксис, кстати, тоже несколько ограничен - невозможно поставить предикат над обратной дугой, невозможно добавить дополнительные обратные дуги, невозможно добавить прямые в конец структуры.
PSV100 писал(а):
можно сделать заключение о том, что обратная дуга без предиката и есть то самое "E"
мне кажется, что "Е" это как раз "то программа завершается с сообщением о непроходимой структуре.". Жестко заданная реакция.
PSV100 писал(а):
Попробую изобразить пример имитации цикла-паука:
Здесь не совсем так. Первая дуга является составной, и, по сути, условие вхождения отсутствует, а вот далее идет вложенная структура, которая, в отличии от примера, может быть не проходимой, если ch не равна ни "L" ни "R".
PSV100 писал(а):
Можно предположить, что если добавить обратные дуги в "FOR", то они будут работать как "break".
Никакого влияния на цикл FOR обратные дуги не оказывают - они просто продолжают линейный участок - если чередовать прямую, обратную, прямую, обратную.... то все ветки выполняются последовательно, затем переход к следующей итерации. Для имитации break'а, видимо, следует использовать структуризаторы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Воскресенье, 16 Сентябрь, 2012 06:43 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 34
Kemet писал(а):
Для имитации break'а, видимо, следует использовать структуризаторы.

Я не прав, нужно было не только слепить структуру FOR со структуризаторами, но и попытаться скомпилировать. А вот здесь всё не так - хотя структуризаторы с переходом в произвольное место и можно создать, компиляция завершается с ошибкой. Переходы возможны на начало и на конец данной структуры, а также на именованные вершины внутри данной структуры FOR.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Воскресенье, 16 Сентябрь, 2012 13:56 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Т.е. явный БП только внутри Р-цикла (м.б. и внутри других нелинейных структур допустим?) на явные метки и неявные (обозначения начала/конца структуры)?..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Воскресенье, 16 Сентябрь, 2012 20:59 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 34
Блииин, вот же гадство какое. Мне удалось связаться с украинскими товарищами, которые предоставили мне для тестирования Р-комплекс под Win, утверждая, что он основан на РТК(что вполне могло быть, потому что были поставки РТК и с исходниками, которых, увы, у меня нет). Именно его я использовал для проверки цикла FOR, а сегодня приехал домой и запустил родной РТК. Нужно все варианты обязательно проверять на эталонном комплексе. Потому-что предоставленный мне компилятор работает совершенно не так, как эталонный. Я прихожу к выводу, что эта разработка к РТК отношения может и не имеет.
В эталонном РТК FOR работает не так, как я описал ранее. Там вообще в FOR может быть только одна дуга, на остальные компилятор ругается.
Всё остальное (циклы) я проверял именно на РТК, так что оно остается в силе.
Что касается структурных переходов, то они работают также как я описал выше - за пределы циклов FOR и <CYCLE> переходы запрещены. НО разрешены переходы на другие схемы (после завершения происходит возврат, т.е. это соответствует вызову подпрограмм)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Воскресенье, 16 Сентябрь, 2012 21:05 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 34
Владислав Жаринов писал(а):
Т.е. явный БП только внутри Р-цикла (м.б. и внутри других нелинейных структур допустим?) на явные метки и неявные (обозначения начала/конца структуры)?..
Перейти же можно только на вершину, в середину структуры никак не запрыгнуть (на вершину вложенной структуры можно). Про внешний переход в циклах написал в предыдущем сообщении.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Понедельник, 17 Сентябрь, 2012 19:07 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 396
Ув. Kemet, большое спасибо за эксперименты и пояснения. Откровенно говоря, чем больше пытаешься разобраться, тем больше вопросов. Тяжело, когда нет возможности самому руками пощупать.

Kemet писал(а):
Там вообще в FOR может быть только одна дуга, на остальные компилятор ругается.

В смысле, всего только одна дуга, или должны быть только прямые дуги?

Kemet писал(а):
А вот здесь всё не так - хотя структуризаторы с переходом в произвольное место и можно создать, компиляция завершается с ошибкой. Переходы возможны на начало и на конец данной структуры, а также на именованные вершины внутри данной структуры FOR.

Оставим сейчас непонятность вокруг FOR, очень вероятно, что сказанное применимо ко всем циклам под спецдугой. Как я понимаю, можно задать имена для спецдуг как в ГОСТе:

Вложение:
r_spec_name.PNG
r_spec_name.PNG [ 9.97 КБ | Просмотров: 16549 ]


(кстати, получается, что возможны какие-то "развёрнутые" спецдуги, как "М0" на рисунке), но воспользоваться переходом на них не получается. Можно задать имена для каких-то начальных или конечных дуг, и на них конкретно переходить. Здесь неясно, куда будут совершать переходы безымянные структуризаторы, если рассматривать спецдугу и все дуги под ней как целостную структуру...

Попробую переделать пример цикла-паука с учётом всех замечаний насчёт циклов и механизмов исполнения структур:

Вложение:
r_pauk_ex2.PNG
r_pauk_ex2.PNG [ 69.81 КБ | Просмотров: 16549 ]


Как я понимаю, если здесь появится обратная дуга без предиката (как в прошлой попытке), то цикл должен быть приведён к некой библиотечной "<CYCLE>", т.е. нужно убрать остальные обратные дуги (м.б. даже написать сверху спецдуги явно <CYCLE> ?), ну и семантика цикла изменится.

Откровенно говоря, сейчас как-то мало кайфа от таких "пауков" и подобных "<CYCLE>"-ов. Здесь, конечно, необходимо на своей шкуре оценить практику применения таких техник, заочно судить проблематично. Видимо, в своё время был соответствующий эффект от разборов полётов вокруг структурного программирования, в те годы как раз ещё была война теоретиков вокруг структурности, "дейкстралов" с "пауками" и т.д. Скорее всего, тогда основные фронтовые силы ещё даже не были брошены на ООП-войны. Сейчас же, лично я бы использовал уже более современные обкатанные техники, более простые и однозначные. Хорошая основа есть у Питона, его циклы while и for. Пусть цикл под спецдугой может необязательно иметь только одну обратную дугу, причём без предиката - "else"-часть питоновских циклов. Причём это хорошее решение, ведь нет возможности эмулировать "else" через структурные переходы, как в Lua (из этих примеров):

Вложение:
lua_for_else.PNG
lua_for_else.PNG [ 12.43 КБ | Просмотров: 16549 ]


Я предполагаю, что через структуризатор мы не можем прыгнуть во внутрь последующей структуры после двойной дуги (и это правильно для такой алгебры структур в Р-схемах). А через сами структуризаторы можем задать break и continue - переходы на начало/конец именно двойной спецдуги, включая возможность по умолчанию, т.е. для безымянных структуризаторов. Я бы добавил ещё один вид отдельного перехода - на именованные вершины, через квадратные скобки, который может пригодиться не только для циклов. Если скобки пусты -- переход на имен. вершину текущей структуры. Для спецдуги можно ввести пустое имя по умолчанию, если оно не указано явно в спецвершине, что обычное дело. Т.о. безымянные переходы в структуре-цикле:

- "----->*" - continue
- "----->#" - break
- "----->[]" - "redo" - переход на именную вершину цикла пусть означает операцию "redo" - повторить итерацию без изменений в условиях/действиях для for-деклараций (пример можно глянуть в вики по Lua, ссылка была выше).

Конечно, возможны и конкретные имена дуг, переходы и на внешние циклы. Явный break или continue в отличие от перехода на конкретную начальную/конечную дугу подразумевает именно повтор итерации цикла, т.е. запуска механизма поиска дуги для прохода и т.д., или прерывание исполнение структуры, причём "else" не выполняется. С самими структурными переходами нужно быть аккуратным, к примеру, на конкретной платформе не допускать переходы через объявления объектов, как в том же Lua, чтобы не было проблем с памятью, неожиданностей невыполнения деструкторов и т.д. В идеале, в рамках "надёжного и простого" DSL, нужен паскаль-принцип объявления объектов, по мотивам ГОСТа:

Изображение

Т.е. те же переменные объявлять отдельно, рядом в связанной схеме. Переменные будут разделяемыми между структурами, для многопоточности можно применять наработки от Clojure (ранее намекал об этом).

Здесь есть проблема в том, что обратная дуга в цикле непонятна для неподготовленного человека. В принципе, если нужна схема с более простыми "наворотами", для обычных людей, то можно выкручиваться и через обычные структуры.
Кстати, этот приёмчик с сайта фонда Глушкова:

Вложение:
r_back_struct.PNG
r_back_struct.PNG [ 12.13 КБ | Просмотров: 16549 ]


т.е. запуск обратной дуги анализируется всегда, даже когда нет проходов по прямым дугам, и если была хоть одна итерация, то структура будет проходимой, даже если не срабатывали прямые дуги -- можно взять на вооружение.


Короче говоря, приблизительная логика работы Р-схем прорисовывается, сейчас мучать Вас и ДВК, да и драгоценную дискету, нет смысла. Имхо, доскональный разбор уместен лишь для создания эмулятора с совместимостью с оригиналом РТК.

Кстати, нескромный вопрос: Р-технологию как-то до сих пор используют, причём, исходя из того, что под Win, даже не в рамках микроконтроллеров или какой-нибудь встройки? (если, конечно, это не приватная информация)

Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Понедельник, 17 Сентябрь, 2012 22:10 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 34
PSV100 писал(а):
В смысле, всего только одна дуга, или должны быть только прямые дуги?

Одна, направление дуги должно совпадать с направлением движения по схеме на данном участке.
PSV100 писал(а):
Оставим сейчас непонятность вокруг FOR
Непонятки образовались потому что первоначально я проверял работу цикла FOR на новом компиляторе, в котором поведение цикла отличается от эталонного РТК.
PSV100 писал(а):
Как я понимаю, если здесь появится обратная дуга без предиката (как в прошлой попытке), то цикл должен быть приведён к некой библиотечной "<CYCLE>", т.е. нужно убрать остальные обратные дуги (м.б. даже написать сверху спецдуги явно <CYCLE> ?), ну и семантика цикла изменится.
Если появится обртаная дуга без предиката, т.е. безусловная дуга, то она будет всегда проходима, а учитывая, что обратные дуги это условия выхода, то в таком случае мы вылетам из цикла. <CYCLE> над спецдугой несколько меняет семантику. Я так понимаю в угловых скобках указываются те самые "синтермы" - библиотечные элементы.
PSV100 писал(а):
Откровенно говоря, сейчас как-то мало кайфа от таких "пауков" и подобных "<CYCLE>"-ов. Здесь, конечно, необходимо на своей шкуре оценить практику применения таких техник, заочно судить проблематично.
У нас паук использовался для управления двигателем, манипуляторами, оборудованием, когда программа передается радиосигналами или пакетными командными файлами. А <CYCLE>, на самом деле, очень удобен, но да, нужно привыкнуть.
PSV100 писал(а):
Если скобки пусты -- переход на имен. вершину текущей структуры.
Здесь я не понял о чем речь. Для спецструктуры же остается в силе логика переходов в "начальную" и "конечную" вершины структуры (*, #) - я об этом писал.
PSV100 писал(а):
- "----->[]" - "redo" - переход на именную вершину цикла пусть означает операцию "redo"
Здесь я явно туплю, что за именная вершина, зачем она, где должна находится. По-моему все это можно обычными средствами реализовать.
Ну и еще напомню, что ни луа ни питона в РТК небыло ))) там больше от модулы было, поэтому семантика более-менее ей и соответствует, иногда с явными ограничениями. Под другой язык и другие элементы нужно реализовывать.
PSV100 писал(а):
Здесь есть проблема в том, что обратная дуга в цикле непонятна для неподготовленного человека.
Это да, на соседнем форуме это уже обсуждалось - яприводил конструкция WHIE из языка Сириус, который мы используем. В нём семантика WHILE как раз соответствует библиотечному циклу, но не все сразу поняли как он работает.
PSV100 писал(а):
т.е. запуск обратной дуги анализируется всегда, даже когда нет проходов по прямым дугам, и если была хоть одна итерация, то структура будет проходимой, даже если не срабатывали прямые дуги -- можно взять на вооружение.
а как мы попадем в конечную вершину, если проходимых прямых дуг нет?
Чем дальше в лес ... непонятки только увеличиваются.
Базовая структура в РТК имеет следующую обобщенную форму
Код:
  $---------->$
  !           !
 ...         ...
  !           !
  !---------->!
  !           !
  !<----------!
  !           !
 ...         ...
  !           !
  !<----------!

Из документации РТК-Микро:
Базовая структура выполняется следующим образом. Последовательно, сверху вниз проверяются условия, записанные на прямых дугах структуры. Для первой встретившейся дуги, имеющей истинное условие, выполняются действия, записанные под дугой, и осуществляется выход на конец структуры. Если не выполняется ни одно из условий, выдается сообщение НЕВЫПОЛНИМАЯ СТРУКТУРА и выполнение программы заканчивается аварийно.
Дуга с пустым условием является всегда выполнимой и поэтому ставится последней среди прямых дуг структуры.
При выходе на конец базовой структуры, аналогично прямым дугам, проверяются обратные. Если обратных дуг нет или ни одна из них не выполнима, выполнение базовой структуры завершается.

Как видим это очень похоже на итерацию цикла-паука, если мы обернем это в специальную структуру, то его и получим. Правда семантика обратных дуг в пауке меняется.
PSV100 писал(а):
Кстати, нескромный вопрос: Р-технологию как-то до сих пор используют, причём, исходя из того, что под Win, даже не в рамках микроконтроллеров или какой-нибудь встройки? (если, конечно, это не приватная информация)

Не знаю, но думаю, что используется на Украине в КБшках.
Мне предоставили для тестирования и принятия решения о приобретении полной версии, но... редактор там примитивный, мышекликальный, а мне нужно кнопконажиматьельный, ну и компиляторов под нужные мне МП нема, а исходники они не предоставляют.
Если мы и буду использовать Р-технологию, то или сами будем писать компиляторы или проспонсируем разработку.


Последний раз редактировалось Kemet Вторник, 18 Сентябрь, 2012 08:30, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Вторник, 18 Сентябрь, 2012 07:07 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 105
Откуда: Псков
Несколько не по теме, но может быть кому будет интересно. Мне P-технология напомнила "transition-diagram" из статьи Мелвина Конвея от 1963 г.http://depcom.uqac.ca/~flemieux/PRO102/p396-conway.pdf. Там также есть нагруженные дуги с действиями. А сам М.Конвей приложил руку в стандартизации языка MUMPS, и в стандарте синтаксис языка описан в том числе и такими диаграммами. Желающие могут ознакомится http://71.174.62.16/Demo/AnnoStd. По ссылке в левом фрейме нужно выбрать "Transition Diagrams" и далее следуя "указательному пальцу" вправо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Вторник, 18 Сентябрь, 2012 15:53 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 396
albobin писал(а):
Несколько не по теме, но может быть кому будет интересно. Мне P-технология напомнила "transition-diagram" из статьи Мелвина Конвея...

Как-то слабовато похожи. Приведу до кучи уже имеющиеся в этой теме примеры диаграмм, чем-то напоминающих Р-схемы.

Часть сетевого графика отсюда:

Вложение:
examp_sg.PNG
examp_sg.PNG [ 112.88 КБ | Просмотров: 16493 ]


Основной вывод: над/под дугами можно впихнуть содержательный текст, вершины "побольше" смогут помочь при случае.

Пример mind map отсюда:

Вложение:
mindmap_ala_r.PNG
mindmap_ala_r.PNG [ 39.67 КБ | Просмотров: 16493 ]


Здесь только мотив Р-схем, но можно навскидку оценить, что кроме текста и всякие графики с таблицами смогут найти своё Р-место. Но в mind map нет правых вертикальных дуг, что облегчает всякое вписывание. Р-mind-map-ы будут в таком стиле:

Вложение:
r_struct_diagr.PNG
r_struct_diagr.PNG [ 12.34 КБ | Просмотров: 16493 ]


Хотя не исключена возможность при необходимости убрать правую дугу, придумать семантику для "разорванных" структур.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ДРАКОН vs Р-схемы
СообщениеДобавлено: Вторник, 18 Сентябрь, 2012 16:00 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 105
Откуда: Псков
PSV100 писал(а):
albobin писал(а):
Несколько не по теме, но может быть кому будет интересно. Мне P-технология напомнила "transition-diagram" из статьи Мелвина Конвея...

Как-то слабовато похожи.

А я и не говорил, что сильно похожи. Напомнила некоторыми едва уловимыми штрихами :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 254 ]  На страницу Пред.  1 ... 8, 9, 10, 11, 12, 13  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2024, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB