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

Сообщения В.И. Шелехова о структурном программировании
https://forum.drakon.su/viewtopic.php?f=166&t=6219
Страница 1 из 1

Автор:  Владимир Паронджанов [ Суббота, 17 Февраль, 2018 09:27 ]
Заголовок сообщения:  Сообщения В.И. Шелехова о структурном программировании

Сообщения В.И. Шелехова
о структурном программировании


Владимир Иванович Шелехов высказал критические замечания о структурном программировании.

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

Отрицательные отзывы мне не встречались.
У меня вопрос к Владимиру Ивановичу: имеется ли в современной литературе критика в адрес структурного программирования?

Ниже я привожу цитаты из сообщений В.И. Шелехова.

Автор:  Владимир Паронджанов [ Суббота, 17 Февраль, 2018 09:30 ]
Заголовок сообщения:  Re: Сообщения В.И. Шелехова о структурном программировании

viewtopic.php?p=100107#p100107
Владимир Шелехов писал(а):
Размышлял, как должно быть устроено программирование.
Перед этим понял, что структурное программирование -- это не решение.
Семь раз скрупулезно прочитал "Заметки о структурном программировании" в надежде изъять оттуда позитивное решение. Его не оказалось.


Я был немногим из счастливцев, кто узнал о структурном программировании от самого Дейкстры в кабинете Андрея Петровича Ершова.

Свои рукописи с новым подходом к программированию я приносил А.П. Ершову.
Он меня пинал. Конечно, вежливо и корректно.
Тогда мне недоставало квалификации.

Через три года я был окончательно истощен и понял, что нужно сделать перерыв.
Перерыв оказался в 25 лет.

Сейчас это предикатное программирование. Более 30 публикаций.
Часть видеокурса по формальным методам.

Через двадцать лет, т.е. примерно в 1995г.,
программирование должно было выйти на новый уровень
аналогично переходу от ассемблеров к языкам высокого уровня.
Императивное программирование должно было остаться в прошлом.
Прошло сорок лет, но этого не произошло.
Реальная история сделала другой зигзаг.

Автор:  Владимир Паронджанов [ Суббота, 17 Февраль, 2018 09:38 ]
Заголовок сообщения:  Re: Сообщения В.И. Шелехова о структурном программировании

viewtopic.php?p=100114#p100114
Владимир Шелехов писал(а):
Перед этим понял, что структурное программирование -- это не решение.
Семь раз скрупулезно прочитал "Заметки о структурном программировании" в надежде изъять оттуда позитивное решение. Его не оказалось.

Rifat писал(а):
Расскажите, пожалуйста, почему структурное программирование - это не решение?

Владимир Шелехов писал(а):
Структурное программирование объявляет оператор goto опасным и предлагает использовать только правильные операторы: последовательный, условный и цикл while. Больше ничего в структурном программировании по сути нет. Все остальное -- пустые декларации и спекуляции.

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

Структурное программирование - это религия. Она работает как религия.

Это очень коротко. Развернутый анализ будет позже. Есть и вред от структурного программирования.


Rifat писал(а):
Какие у структурного программирования есть недостатки по сравнению с предикатным программированием?

Владимир Шелехов писал(а):
Предикатное программирование противопоставляется с одной стороны императивному программированию, а с другой -- функциональному.
А структурное программирование тут ни при чем.

Автор:  Владимир Паронджанов [ Суббота, 17 Февраль, 2018 09:56 ]
Заголовок сообщения:  Re: Сообщения В.И. Шелехова о структурном программировании

Для полноты картины излагаю мнение Рифата:
viewtopic.php?p=100214#p100214
Rifat писал(а):
По поводу структурного программирования. Ваше описание не полное:
Владимир Шелехов писал(а):
Структурное программирование объявляет оператор goto опасным и предлагает использовать только правильные операторы: последовательный, условный и цикл while. Больше ничего в структурном программировании по сути нет. Все остальное -- пустые декларации и спекуляции.

Дейкстра в одной из своих статей жаловался, что
Цитата:
Apparently, IBM did not like the popularity of my text; it stole the term "Structured Programming" and under its auspices Harlan D. Mills trivialized the original concept to the abolishment of the goto statement.


Опишу вам мое понимание текстов Дейкстры о структурном программировании.
"Сложность программ высока, а интелеллектуальные способности человека ограничены" --->
"Необходимо декомпозировать задачу на подзадачи, решать подзадачи, убеждаться (доказывать), что подзадача решена верно, если все подзадачи решены верно, то и вся задача будет решена верна (стандартная методика "разделяй и влавствуй", а также стандартная методика решения задач в математике)" --->
"При решении задач или подзадач может потребоваться цикл (так как цикл является воплощением математического метода индукция в программировании), необходимо уметь доказывать корректность программ с циклами" --->
"Для того, чтобы доказывать корректность циклов необходим инвариант цикла и может потребоваться определенный счетчик цикла" --->
"Goto позволяет создавать неявные циклы в программе и для того, чтобы доказывать такие программы, с каждым таким неявным циклом необходимо связать свой инвариант и свой счетчик (об это как раз написано в статье Goto considered harmful)" --->
"Чтобы не мучиться, определяя все неявные циклы в программе, лучше избегать использования оператора Goto, достаточно обычного цикла (к тому же, это доказано Бёмом и Якопини)" --->
"То что мы избегаем goto, не означает, что не нужно разделять задачу на подзадачи и доказывать корректность решения каждой подзадачи" --->
"Когда Дейкстра решал, на каком же языке программирования, попроще донести свои мысли о решении задач в программировании до читателей, он выбирал из существующих языков программирования, но они его не удовлетворили" --->
"Он решил спроектировать свой язык программирования, который называют guarded command language" --->
"В процессе проектирования языка программирования, на котором будет проще доказывать программы, он сделал несколько открытий" --->
"То, что недетерминированность упрощает решение задачи, хотя большинство языков программирования строго детерминированные" --->
"Недетерминированность также позволяет довольно легко анализировать параллельные процессы, которые протекают в реальном мире, и которые сложно моделируются на существующих языках программирования" --->
"При наличии языка программирования (guarded command language), на котором возможно доказывать корректность программ для всех случаев, отпадает необходимость в тестировании и отладке, которые проверяют только ничтожно малую часть всех возможных вариантов".

Автор:  Владимир Паронджанов [ Суббота, 17 Февраль, 2018 10:29 ]
Заголовок сообщения:  Re: Сообщения В.И. Шелехова о структурном программировании

Владимир Шелехов писал(а):
Структурное программирование объявляет оператор goto опасным и предлагает использовать только правильные операторы: последовательный, условный и цикл while. Больше ничего в структурном программировании по сути нет. Все остальное -- пустые декларации и спекуляции.

Rifat писал(а):
По поводу структурного программирования. Ваше описание не полное:

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

Владимир Шелехов писал(а):
Многие пытались реализовать стиль программирования Дейкстры в реальном производственном программировании.
Не получилось. Де факто. Никто не заявлял об успехе.

Rifat писал(а):
Опишу вам мое понимание текстов Дейкстры о структурном программировании.
"Сложность программ высока, а интелеллектуальные способности человека ограничены" --->
"Необходимо декомпозировать задачу на подзадачи, решать подзадачи, убеждаться (доказывать), что подзадача решена верно, если все подзадачи решены верно, то и вся задача будет решена верна (стандартная методика "разделяй и влавствуй", а также стандартная методика решения задач в математике)"

Владимир Шелехов писал(а):
Данный метод декомпозиции программ был еще до Дейкстры.

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

Владимир Шелехов писал(а):
Вы знаете людей, которые писали инварианты циклов?
А я знаю. Их можно по пальцам пересчитать.
Инварианты не для простых программистов.


Rifat писал(а):
"Дейкстра .... решил спроектировать свой язык программирования, который называют guarded command language" --->
"В процессе проектирования языка программирования, на котором будет проще доказывать программы, он сделал несколько открытий" --->
"То, что недетерминированность упрощает решение задачи, хотя большинство языков программирования строго детерминированные" --->
"Недетерминированность также позволяет довольно легко анализировать параллельные процессы, которые протекают в реальном мире, и которые сложно моделируются на существующих языках программирования" --->
"При наличии языка программирования (guarded command language), на котором возможно доказывать корректность программ для всех случаев, отпадает необходимость в тестировании и отладке, которые проверяют только ничтожно малую часть всех возможных вариантов".

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

Автор:  Владимир Паронджанов [ Суббота, 17 Февраль, 2018 10:41 ]
Заголовок сообщения:  Re: Сообщения В.И. Шелехова о структурном программировании

Итак, у меня вопрос или, точнее, просьба.

Владимир Иванович, просьба дать ссылки на литературу, где структурное программирование подвергается критике (такой же или примерно такой же, как и ваша критика).

Автор:  Владимир Шелехов [ Суббота, 17 Февраль, 2018 11:58 ]
Заголовок сообщения:  Re: Сообщения В.И. Шелехова о структурном программировании

Владимир Паронджанов писал(а):
Итак, у меня вопрос или, точнее, просьба дать ссылки на литературу, где структурное программирование подвергается критике (такой же или примерно такой же, как и ваша критика).
Во все времена критиков было предостаточно и самого разного плана.
Однако таких агрессивных, как я, возможно и не было.
Надо было мне собирать ссылки на критиков, но я этого не делал,
потому что этот вопрос для себя я уже решил.

Критиком был Дональд Кнут.
Впрочем здесь лучше начать с Википедии.
Но не русской, а английской версии.
Она шире и более объективна.

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

Андрей Петрович Ершов, наверное, был первым,
кто сказал, что структурное программирование -- это религия.

Месяца через два после приезда к нам Э.Дейкстры и Т.Хоара в 1973г. (?)
было решено рассказать о структурном программировании для широкой публики.
Во вступительном слове А.П. Ершов среди прочего сказал,
что структурное программирование стало мировой религией.
И свидетельство этому то, что появились апостолы.
Он назвал две фамилии известных миру ученых того времени.
"А сейчас с докладом выступит Игорь Васильевич Поттосин,
новый адепт структурного программирования."
Это подано как шутка. И воспринято как шутка. Все рассмеялись.
В последующие годы И.В. Поттосин был последовательным сторонником структурного программирования в нашей стране.

Автор:  Rifat [ Воскресенье, 18 Февраль, 2018 05:34 ]
Заголовок сообщения:  Re: Сообщения В.И. Шелехова о структурном программировании

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

У нас в ВУЗ-е был предмет логика, там мы рассматривали разные силлогизмы, например: "все рыбы плавают, но не все кто плавает - это рыбы" и т.д.

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

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

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

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

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

Так, в соответствие, с предметом логика, если Дейкстра делает анализ основ программирования, а кто-то другой анализ не делает, а критикует какие-то другие моменты, то нельзя сказать, что кто-то критикует анализ Дейкстры.

Автор:  Владимир Паронджанов [ Понедельник, 12 Март, 2018 19:25 ]
Заголовок сообщения:  Re: Сообщения В.И. Шелехова о структурном программировании

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

Рифат, не могу с вами согласиться в части "серости людей".

1. Если люди чего-то не понимают, значит им трудно.
Задача слишком трудна для них.

2. Ваше выражение "люди по своей серости" некорректно и для многих оскорбительно. Людей нельзя оскорблять. Если люди чего-то не понимают, значит, им трудно. Значит, им нужно помочь. Разве не так?

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

Дискуссия алгористов (сторонников позиционной системы счисления) и абацистов (сторонников абака) длилась почти тысячу лет.

4. Ссылки на "серость людей" далеки от научного анализа и, по-видимому, являются заключением так называемой "народной психологии".

Автор:  Rifat [ Понедельник, 12 Март, 2018 23:34 ]
Заголовок сообщения:  Re: Сообщения В.И. Шелехова о структурном программировании

Тут приводится, якобы моя цитата, и говориться, что я оскорбляю людей. Фразу "по своей серости" я не писал. Её написал Шелехов и написал эту фразу в якобы моей цитате (неправильное цитирование).

Автор:  Владимир Паронджанов [ Вторник, 13 Март, 2018 08:59 ]
Заголовок сообщения:  Re: Сообщения В.И. Шелехова о структурном программировании

Рифат, сожалею об этой ошибке с неправильным цитированием. Примите мои извинения

Автор:  Rifat [ Вторник, 13 Март, 2018 09:40 ]
Заголовок сообщения:  Re: Сообщения В.И. Шелехова о структурном программировании

Ничего страшного :)

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