DRAKON.SU
https://forum.drakon.su/

Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»
https://forum.drakon.su/viewtopic.php?f=168&t=6036
Страница 3 из 4

Автор:  Владимир Паронджанов [ Пятница, 21 Июль, 2017 10:36 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

Rifat писал(а):
Что неправильного в данной дракон-схеме?
Справа от дракон-схемы блок-схема, по которой сделана дракон-схема, чтобы было проще сравнивать.

Рифат, спасибо за интересный пример.

В ДРАКОНе разрешены вложенные циклы и последовательно работающие циклы.
Запрещены перекрещивающиеся циклы.

Вы изобразили два перекрещивающихся цикла. Конечно, они запрещены.

Автор:  Rifat [ Пятница, 21 Июль, 2017 11:05 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

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

Автор:  Владимир Паронджанов [ Пятница, 21 Июль, 2017 11:42 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

Rifat писал(а):
как определить есть там пересекающиеся циклы или нет?
Вы правы, надо дать точное описание признаков пересекающихся циклов.
Более того, надо указать алгоритм, позволяющий дракон-редактору автоматически определять наличие пересекающихся циклов, чтобы руководить действиями пользователя.
Желательно открыть новую тему, посвященную этой важной проблеме.

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

Автор:  Rifat [ Пятница, 21 Июль, 2017 12:20 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

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

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

Автор:  Andrei Baleska [ Пятница, 21 Июль, 2017 12:25 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

Rifat писал(а):
Вложение:
Вложение DrakonIntersect.png больше недоступно

Что неправильного в данной дракон-схеме?
Справа от дракон-схемы блок-схема, по которой сделана дракон-схема, чтобы было проще сравнивать.


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

Вложения:
DrakonIntersect.png
DrakonIntersect.png [ 148.68 КБ | Просмотров: 16186 ]
no_loops.png
no_loops.png [ 31.4 КБ | Просмотров: 16186 ]

Автор:  Rifat [ Пятница, 21 Июль, 2017 12:29 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

Возможно, решением проблемы с неструктурными алгоритмами были бы следующие правила:
1) В качестве адреса перехода можно указывать только ветки, которые находятся правее. То есть для организации цикла нужно будет использовать конструкцию цикл, а фокусы с ветками уже не будут работать.
2) Имя каждой ветки (кроме последней завершающей) в адресах переходов должно встречаться только 1 раз (не больше и не меньше). На завершающую ветку могут ссылаться несколько адресов переходов.

Автор:  Andrei Baleska [ Пятница, 21 Июль, 2017 14:28 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

Та же схема "бессмыслица", но в примитиве. Виден один цикл и досрочный выход.

Вложения:
no_loops.png
no_loops.png [ 14.78 КБ | Просмотров: 16181 ]

Автор:  Владимир Паронджанов [ Пятница, 21 Июль, 2017 17:50 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

Andrei, спасибо за иллюстрации

Автор:  Andrei Baleska [ Пятница, 21 Июль, 2017 17:55 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

Нарисуем схему силуэт, где есть подозрения на двойной вход в цикл, и представим примитивом.
Двойного входа нет, вместо этого появляется дублирование шагов из "условия внутри цикла" (выделено зеленым).

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

Владимир Паронджанов писал(а):
Andrei, спасибо за иллюстрации

Это, наверное, одна из сильных сторон дракона, что решать задачи в нем интересно :)

Вложения:
primitive.png
primitive.png [ 27.25 КБ | Просмотров: 16169 ]
double_enter.png
double_enter.png [ 33.03 КБ | Просмотров: 16169 ]

Автор:  Alexey_Donskoy [ Пятница, 21 Июль, 2017 19:21 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

Rifat писал(а):
1) В качестве адреса перехода можно указывать только ветки, которые находятся правее. То есть для организации цикла нужно будет использовать конструкцию цикл, а фокусы с ветками уже не будут работать.
Дежа вю.
Мы столько раз обсуждали силуэт (и с вами в том числе), и давно вроде бы пришли к выводу, что веточные циклы есть зло.

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

Автор:  Rifat [ Пятница, 21 Июль, 2017 22:34 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

По поводу второго пункта не согласен, что это не позволит описывать сложные алгоритмы. Зато будет взаимооднозначное соответствие между примитивом и силуэтом.

Автор:  LKom [ Пятница, 21 Июль, 2017 23:28 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

Alexey_Donskoy писал(а):
Мы столько раз обсуждали силуэт (и с вами в том числе), и давно вроде бы пришли к выводу, что веточные циклы есть зло.

Мы много раз обсуждали Силуэт, как конструкцию имеющую структуру конечного автомата.

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

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

Силуэт должен быть адекватен проблемной области.

В этом и заключается «Неклассическая теория алгоритмов и язык Дракон».
Пожалуйста поднимитесь, в своем понимании, до уровня темы.

Автор:  Владимир Паронджанов [ Суббота, 22 Июль, 2017 18:24 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

Rifat писал(а):
будет взаимооднозначное соответствие между примитивом и силуэтом.
Рифат, зачем?
У каждой из этих конструкций свои задачи.

Примитив нужен для простых алгоритмов, силуэт для сложных.

Сложные алгоритмы (любой сложности) можно изобразить с помощью силуэта (или системы силуэтов).
И нельзя — с помощью примитива.

Автор:  Rifat [ Воскресенье, 23 Июль, 2017 13:21 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

LKom писал(а):
Мы много раз обсуждали Силуэт, как конструкцию имеющую структуру конечного автомата.

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

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

Силуэт должен быть адекватен проблемной области.

Вы абсолютно правы. Сейчас Силуэт можно использовать как конечный автомат. Мои предложения об ограничениях на переходы в Силуэте были высказаны с целью сделать высказывание про "двумерное структурное программирование" истинным. Пока, как вы говорите Силуэт можно использовать как конечный автомат, соответственно, высказвание про "двумерное структурное программирование" не является правильным. Усидеть одновременно на двух стульях нельзя. Надо выбрать или мы говорим про конечный автомат и тогда не следует говорить про "двумерное структурное программирование" или же выбираем второе и добавляем определенные ограничения к Силуэту.

Владимир Паронджанов писал(а):
Rifat писал(а):
будет взаимооднозначное соответствие между примитивом и силуэтом.
Рифат, зачем?
У каждой из этих конструкций свои задачи.

Примитив нужен для простых алгоритмов, силуэт для сложных.

Сложные алгоритмы (любой сложности) можно изобразить с помощью силуэта (или системы силуэтов).
И нельзя — с помощью примитива.

Во-первых, про то, что нельзя какие-то алгоритмы изобразить с помощью примитива, это не так. Есть теорема Бёма и Якопини, которая доказывает, что достоточно всего три конструкции для представления любого алгоритма: последовательность, условие и цикл. Они в примитиве есть, поэтому и в примитиве можно можно изображать любые алгоритмы.

По поводу вопроса "Зачем?". Как сказал LKom, сейчас с помощью Силуэта можно представлять конечные автоматы. Но никто не говорит, что конечные автоматы - это большое открытие в области информатики и что конечные автоматы делают алгоритм сразу ясным и понятным. Если конечный автомат довольно большой, то очень сложно понять правильный ли он, для этого есть различные методы Model Checking, которые не сказать, что очень простые и которые практически нельзя проводить в уме. Поэтому высказывания про улучшение работы ума, ясные и понятные алгоритмы становятся неприменимыми к таким Силуэтам в которых представлен конечный автомат. С другой стороны, есть структурное программирование, которые называют одним из самых больших открытий в области информатики, которое позволяет значительно сократить количество ошибок и действительно описывать ясные и понятные алгоритмы. Поэтому мое мнение в том, чтобы ограничить произвольные переходы в Силуэте, тогда да, нельзя будет описывать произвольные конечные автоматы, но те алгоритмы, которые будут описаны, будут понятнее и правильнее.

Автор:  Владимир Паронджанов [ Понедельник, 24 Июль, 2017 08:23 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

Владимир Паронджанов писал(а):
Сложные алгоритмы (любой сложности) можно изобразить с помощью силуэта (или системы силуэтов).
И нельзя — с помощью примитива.
Рифат, вы правы. В этой формулировке (формально) есть неточность.

Действительно, согласно теореме Бома-Джакопини, с помощью примитива можно изобразить сложный алгоритм. Но! Это будет неэргономичный (то есть плохой) алгоритм. Меня же неэргономичные (плохие) алгоритмы не интересуют.

Поэтому мое высказывание следует понимать так:
Цитата:
Сложные алгоритмы (любой сложности) можно изобразить в эргономичном виде с помощью силуэта (или системы силуэтов).
И нельзя — с помощью примитива.

Автор:  Rifat [ Понедельник, 24 Июль, 2017 09:34 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

Владимир Паронджанов писал(а):
Поэтому мое высказывание следует понимать так:
Цитата:
Сложные алгоритмы (любой сложности) можно изобразить в эргономичном виде с помощью силуэта (или системы силуэтов).
И нельзя — с помощью примитива.

Это аксиома или же есть какое-то доказательство?

Автор:  Владимир Паронджанов [ Понедельник, 24 Июль, 2017 10:38 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

Rifat писал(а):
Владимир Паронджанов писал(а):
Поэтому мое высказывание следует понимать так:
Цитата:
Сложные алгоритмы (любой сложности) можно изобразить в эргономичном виде с помощью силуэта (или системы силуэтов).
И нельзя — с помощью примитива.

Это аксиома или же есть какое-то доказательство?


Рифат, я ввел понятие "эргономичный алгоритм".
Это новое фундаментальное понятие. Принципиально новое.
Все мои книги есть доказательство того, что эргономичные алгоритмы намного лучше, чем неэргономичные.

Некоторых специалистов мое доказательство убеждает, других нет. Однако вы видите, что интерес к языку ДРАКОН постоянно растет. Это можно рассматривать как доказательство.

Автор:  Владимир Паронджанов [ Понедельник, 24 Июль, 2017 10:38 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

..

Автор:  Rifat [ Понедельник, 24 Июль, 2017 11:04 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

Если взять ваше же определение:
Цитата:
Эргономичный алгоритм — это алгоритм, удовлетворяющий крите-
рию сверхвысокого понимания. То есть алгоритм, специально сконструи-
рованный таким образом, чтобы обеспечить выявление ошибок за столом
без лишней траты умственных сил.

то конечный автомат в виде силуэта не удовлетворяет этому критерию.

Автор:  Владимир Паронджанов [ Понедельник, 24 Июль, 2017 12:03 ]
Заголовок сообщения:  Re: Доклад «Неклассическая теория алгоритмов и язык ДРАКОН»

..

Страница 3 из 4 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/