DRAKON.SU

Текущее время: Четверг, 26 Апрель, 2018 14:34

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




Начать новую тему Ответить на тему  [ Сообщений: 75 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: Пятница, 21 Июль, 2017 10:36 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3623
Откуда: Москва
Rifat писал(а):
Что неправильного в данной дракон-схеме?
Справа от дракон-схемы блок-схема, по которой сделана дракон-схема, чтобы было проще сравнивать.

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 21 Июль, 2017 11:05 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 207
Откуда: Казань
Вообще, если бы не было блок-схемы, то было бы не очевидно, что есть пересекающиеся циклы. Был бы просто алгоритм в виде силуэта. И как определить есть там пересекающиеся циклы или нет?
К тому же, Дракон-редактор последней версии разрешает создавать такие дракон-схемы, значит это разрешенная дракон-схема.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 21 Июль, 2017 11:42 

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 21 Июль, 2017 12:20 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 207
Откуда: Казань
Владимир Паронджанов писал(а):
Rifat писал(а):
как определить есть там пересекающиеся циклы или нет?
Вы правы, надо дать точное описание признаков пересекающихся циклов.
Более того, надо указать алгоритм, позволяющий дракон-редактору автоматически определять наличие пересекающихся циклов, чтобы руководить действиями пользователя.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 21 Июль, 2017 12:25 

Зарегистрирован: Понедельник, 08 Май, 2017 10:53
Сообщения: 5
Rifat писал(а):
Вложение:
Вложение DrakonIntersect.png больше недоступно

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


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


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


Последний раз редактировалось Andrei Baleska Пятница, 21 Июль, 2017 12:29, всего редактировалось 1 раз.
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 21 Июль, 2017 12:29 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 207
Откуда: Казань
Возможно, решением проблемы с неструктурными алгоритмами были бы следующие правила:
1) В качестве адреса перехода можно указывать только ветки, которые находятся правее. То есть для организации цикла нужно будет использовать конструкцию цикл, а фокусы с ветками уже не будут работать.
2) Имя каждой ветки (кроме последней завершающей) в адресах переходов должно встречаться только 1 раз (не больше и не меньше). На завершающую ветку могут ссылаться несколько адресов переходов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 21 Июль, 2017 14:28 

Зарегистрирован: Понедельник, 08 Май, 2017 10:53
Сообщения: 5
Та же схема "бессмыслица", но в примитиве. Виден один цикл и досрочный выход.


Вложения:
no_loops.png
no_loops.png [ 14.78 КБ | Просмотров: 3210 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 21 Июль, 2017 17:50 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3623
Откуда: Москва
Andrei, спасибо за иллюстрации


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 21 Июль, 2017 17:55 

Зарегистрирован: Понедельник, 08 Май, 2017 10:53
Сообщения: 5
Нарисуем схему силуэт, где есть подозрения на двойной вход в цикл, и представим примитивом.
Двойного входа нет, вместо этого появляется дублирование шагов из "условия внутри цикла" (выделено зеленым).

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

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

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


Вложения:
primitive.png
primitive.png [ 27.25 КБ | Просмотров: 3198 ]
double_enter.png
double_enter.png [ 33.03 КБ | Просмотров: 3198 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 21 Июль, 2017 19:21 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 949
Откуда: Россия, Чебоксары
Rifat писал(а):
1) В качестве адреса перехода можно указывать только ветки, которые находятся правее. То есть для организации цикла нужно будет использовать конструкцию цикл, а фокусы с ветками уже не будут работать.
Дежа вю.
Мы столько раз обсуждали силуэт (и с вами в том числе), и давно вроде бы пришли к выводу, что веточные циклы есть зло.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 21 Июль, 2017 22:34 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 207
Откуда: Казань
По поводу второго пункта не согласен, что это не позволит описывать сложные алгоритмы. Зато будет взаимооднозначное соответствие между примитивом и силуэтом.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 21 Июль, 2017 23:28 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 692
Alexey_Donskoy писал(а):
Мы столько раз обсуждали силуэт (и с вами в том числе), и давно вроде бы пришли к выводу, что веточные циклы есть зло.

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

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 22 Июль, 2017 18:24 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3623
Откуда: Москва
Rifat писал(а):
будет взаимооднозначное соответствие между примитивом и силуэтом.
Рифат, зачем?
У каждой из этих конструкций свои задачи.

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 23 Июль, 2017 13:21 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 207
Откуда: Казань
LKom писал(а):
Мы много раз обсуждали Силуэт, как конструкцию имеющую структуру конечного автомата.

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

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

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

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

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

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 24 Июль, 2017 08:23 

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 24 Июль, 2017 09:34 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 207
Откуда: Казань
Владимир Паронджанов писал(а):
Поэтому мое высказывание следует понимать так:
Цитата:
Сложные алгоритмы (любой сложности) можно изобразить в эргономичном виде с помощью силуэта (или системы силуэтов).
И нельзя — с помощью примитива.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 24 Июль, 2017 10:38 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3623
Откуда: Москва
Rifat писал(а):
Владимир Паронджанов писал(а):
Поэтому мое высказывание следует понимать так:
Цитата:
Сложные алгоритмы (любой сложности) можно изобразить в эргономичном виде с помощью силуэта (или системы силуэтов).
И нельзя — с помощью примитива.

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


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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 24 Июль, 2017 10:38 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3623
Откуда: Москва
..


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 24 Июль, 2017 11:04 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 207
Откуда: Казань
Если взять ваше же определение:
Цитата:
Эргономичный алгоритм — это алгоритм, удовлетворяющий крите-
рию сверхвысокого понимания. То есть алгоритм, специально сконструи-
рованный таким образом, чтобы обеспечить выявление ошибок за столом
без лишней траты умственных сил.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 24 Июль, 2017 12:03 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3623
Откуда: Москва
Rifat писал(а):
Если взять ваше же определение:
Цитата:
Эргономичный алгоритм — это алгоритм, удовлетворяющий крите-
рию сверхвысокого понимания. То есть алгоритм, специально сконструи-
рованный таким образом, чтобы обеспечить выявление ошибок за столом
без лишней траты умственных сил.

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

Рифат, неясно, что вы имеете в виду. Тут нужны примеры.

С чем сравнивать? Мне кажется, что силуэт как конечный автомат:

1. Эргономичнее, чем автоматное программирование по Шалыто.

2. Эргономичнее, чем классические схемы конечных автоматов.

По пунктам 1 и 2 нужны, конечно, примеры, пригодные для сравнения.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 75 ]  На страницу Пред.  1, 2, 3, 4  След.

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


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

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


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

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