DRAKON.SU

Текущее время: Понедельник, 29 Апрель, 2024 17:58

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




Начать новую тему Ответить на тему  [ Сообщений: 143 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.
Автор Сообщение
СообщениеДобавлено: Четверг, 06 Октябрь, 2016 14:33 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 105
Откуда: Псков
Rifat писал(а):
замаскированным оператором


viewtopic.php?f=62&t=5907&start=60#p98544


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Октябрь, 2016 14:49 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1358
Rifat, какие еще будут вопросы?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Октябрь, 2016 14:52 

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Октябрь, 2016 14:56 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1358
Мы не ведем дискуссию, а задаем вопросы и отвечаем.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Октябрь, 2016 15:00 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 219
Откуда: Казань
Вы пробовали когда-нибудь верифицировать программу или другими словами доказать корректность программы?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Октябрь, 2016 15:01 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1358
Цитата:
я даже не знаю, какие аргументы привести, чтобы изменить вашу точку зрения.
Зачем Вам это надо?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Октябрь, 2016 15:09 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1358
Цитата:
Вы пробовали когда-нибудь верифицировать программу или другими словами доказать корректность программы?
Вопрос личного характер а не по ИС Дракону.

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

При написании программы она всегда должна быть готова к выполнению. Использую заглушки и чаще запускаю на выполнение.


Последний раз редактировалось LKom Четверг, 06 Октябрь, 2016 15:26, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Октябрь, 2016 15:12 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 219
Откуда: Казань
А откуда взять корректный алгоритм, как убедиться, что он корректный?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Октябрь, 2016 15:14 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 71
Откуда: Россия, Орёл
Rifat писал(а):
А откуда взять корректный алгоритм, как убедиться, что он корректный?

Рифат, сейчас вы услышите, что его надо нарисовать на Драконе в ИС Дракон.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Октябрь, 2016 15:19 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1358
Надо ознакомиться с проблемной областью и дальше, как говорит Борис Рюмшин.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Октябрь, 2016 15:25 

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Октябрь, 2016 15:32 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1358
Алгоритм должен соответствовать проблемной области, разрабатывайте его сами.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Октябрь, 2016 15:36 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1358
В ИС Дракон можно создать схемы вида Гном, для накопления декларативных знаний, изучайте допустимые области значения данных. До написания алгоритма создайте Дракон-схемы для пользователя ПО.


Последний раз редактировалось LKom Четверг, 06 Октябрь, 2016 15:37, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Октябрь, 2016 15:36 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 71
Откуда: Россия, Орёл
LKom писал(а):
Надо ознакомиться с проблемной областью и дальше, как говорит Борис Рюмшин.

Мда?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Октябрь, 2016 17:50 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5852
Откуда: Москва
Владимир Паронджанов писал(а):
1. Разница в том, что в ЯВУ программисты пишут оператор goto ВРУЧНУЮ и это плохо. Именно с этим боролся Дейкстра.

Rifat писал(а):
1. Если считать, что Дейкстра боролся с тем, что goto пишется ВРУЧНУЮ, то значит он был недоволен, тем, что программисты не умеют писать goto, кто-то пишет got, кто-то goot, кто-то gtoo. Это смешно.
Владимир Паронджанов писал(а):
Согласен с Вами, что это смешно.
Но я вовсе не имел в виду смешные описки.


Rifat писал(а):
Дейсктра боролся не с ручным написанием goto, а c goto как таковым.
Владимир Паронджанов писал(а):
Эта мысль мне не понятна. В системе команд любого процессора имеется оператор перехода. Обычно пишут не goto, а jump.
Разве Дейкстра требовал исключить из системы команд процессора команду перехода? Конечно, нет. Говоря Вашими словами, это смешно.
По-видимому, Вы имеете в виду что-то иное. Что именно? Просьба пояснить.

Rifat писал(а):
Дейкстра и не говорит, что нужно исключить jump из процессора и даже из низкоуровневых языков программирования.
Дейкстра писал(а):
убежден в том, что оператор go to должен быть отменен в языках программирования "высокого уровня" (т.е. отовсюду, кроме, возможно, простого машинного кода).


Рифат, отсюда следует некорректность Вашего ответа:
Rifat писал(а):
Дейкстра боролся не с ручным написанием goto, а c goto как таковым.


На самом деле, Дейкстра четко различал два случая. А одном случае он разрешал использовать goto, а в другом запрещал.

Между этими случаями имеется качественное различие. Какое именно?

Рифат, я предлагаю на Ваш суд такой ответ.

1. При использовании ЯВУ Дейкстра запрещает РУЧНОЕ использование goto, то есть использование в исходном тексте ЯВУ.

2. При использовании ЯВУ Дейкстра разрешает АВТОМАТИЧЕСКОЕ использование goto, то есть появление goto в результате автоматической трансляции в ассемблерный или машинный код.

Как Ваше мнение? Вы согласны с моим ответом? Или у Вас есть возражения?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Октябрь, 2016 17:53 

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Октябрь, 2016 18:39 

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

Теперь можно провести аналогию с языком ДРАКОН.

В языке ДРАКОН никто не пишет оператор goto ВРУЧНУЮ. Это запрещено.
В дракон-схеме при всем желании нельзя увидеть оператор goto. Он отсутствует.

Вместо goto (который порождает ошибки) в языке ДРАКОН используется управляющая графика, которую можно назвать графическим оператором.

После автоматического преобразования графического оператора появляется оператор goto. Он появляется АВТОМАТИЧЕСКИ (и никогда не пишется вручную).

Дело обстоит точно так же, как в случае с машинным или ассемблерным кодом, где Дейкстра разрешил использование goto.

Рифат, я правильно рассуждаю?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Октябрь, 2016 23:36 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 219
Откуда: Казань
Не совсем правильно.
Дело еще в том, какие структуры возможны в языке.
Допустим, у нас есть язык программирования, в котором есть только "структурные" операторы.
Что у нас там будет?
Будет последовательность операторов, условный оператор, цикл с предусловием, цикл с постусловием.
При этом мы никак не сможем выйти из середины цикла, так как в данном структурном языке есть только структурные конструкции.

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

Теперь посмотрим какие конструкции возможны в Драконе.
Можем ли мы сделать цикл с выходом из середины?
Да, можно.
Цикл с двумя выходами?
Тоже можно.
Цикл с запрыгиванием в середину цикла (недавно я приводил такой пример, после чего вы ввели новое правило).
Можно ли войти в одну из веток условного оператора?
Да, если каждая из веток выделена в отдельный шампур, то мы можем зайти туда и из другого места.

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 07 Октябрь, 2016 08:23 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Rifat писал(а):
не важно есть в Драконе сам оператор перехода goto, не важно как он называется. Важно то, что в Драконе возможны конструкции свойственные языка с оператором goto. И проблемы создаёт не столько сам оператор goto, сколько конструкции, которые при помощи него создаются.
+100500

Кстати, часть этих конструкций можно устранить, запретив операцию "заземление лианы".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 07 Октябрь, 2016 09:01 

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


Силуэт из которого торчат уши goto
a1:
ветка1
a2:
ветка2
...
aN:
ветка N
a0:
выход

последние операторы в каждой ветке заканчиваются оператором goto aX (a0..aN)

А вот нечто в "языке без goto"
a:=1;
while a=1 do ветка1
elseif a=2 do ветка2
...
elseif a=N do ветка N
end
последние операторы в каждой ветке заканчиваются присвоением переменной 'a' некоторого значения от 0 до N (0 - выход)


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

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


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

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


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

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