Блок-схемы

Кстати, интересно, а существуют люди, для которых блок-схема алгоритма нагляднее, чем запись псевдокодом?
2009  
11 комментариев
Алексей
Блок-схемы нагляднее в языках низкого уровня.
Илья Бирман
То, что можно найти способ записи алгоритмов более неудобный, чем блок-схемы, не вызывает у меня сомнения :-) Я предлагаю сравнивать блок-схемы и псевдокод высокого уровня (то есть, уровня адекватного смыслу алгоритма).
Роман Добровенский
Ну здесь надо просто понимать историю вопроса. Лет тридцать-сорок назад даже ассемблер был не столь простым и удобным, как сейчас. Не было тех средств отладки, что мы имеем сейчас. При этом необходимость анализировать алгоритмы появилась вообще говоря задолго до изобретения компьютеров и задолго до изобретения языков программирования. С началом бурного развития компьютерной техники и технологий программирования (где-то так с 70-х готов прошлого века), во всем мире блок-схемы использовать перестали. Сейчас за пределами бывшего Совка о блок-схемах рассказывают лишь на отдельных спецкурсах как об историческом факте («Ну вот были раньше такие дурацкие схемы, потому что не было языков программирования»). Россия — другое дело. Здесь Совок, ГОСК, инженеры-пропойцы с кривыми безумными рожами и заявлениями вроде «мне наплевать, что ты написал программу — нет блок-схемы, нет зачета, уйдешь в армию» (реальная цитата из моей студенческой бытности). Поэтому вопрос о целесообразности использования блок-схем, вменяемыми людьми сейчас даже не поднимается.
A!e%
Зависит от алгоритма и ничего более. Есть еще одна запись алгоритма — формулой, и еще одна, похожая на блок-схему — диаграмма состояний. В разных ситуациях разное применимо.
Роман Парпалак
Часто удобнее до написания кода (или псевдокода) рисовать схему на бумажке. Только не блок-схему с ромбиками и прямоугольниками, а какую-то свою схему с обведенными словами и стрелочками.
Роман Добровенский
A!e%, мне не известны способы записи алгоритмов формулами. Диаграмма же состояний тоже мало отношения имеет к алгоритмам — для описания автоматов безусловно, но алгоритмом это можно начать только с натяжкой.

Роман, какие-то схемы рисует, думаю, каждый. Это относится к любой области знаний, не только к алгоритмам. Однако это уже не блок-схемы, так же как не являются блок-схемами UML-диаграммы или ER-модели.
Bolk
Зависит от. Иногда длинная портянка псевдокода куда хуже, чем хорошая блок-схема.
Сергей К.
Мне кажется, что многие люди боятся программного кода. Си с его подставами вроде if(x=1) и ряд других языков отбили у непрограммистов желание лезть в код. Они лучше поводят карандашом по стрелочкам, но с кодом связываться не будут (для них нет разницы между работающим кодом и псевдо).
Программистам, естественно, блок-схемы не нужны.
Сергей Соляник
У меня не вызывает сомнения что блок-схемы нагляднее и быстрее в работе чем псевдокод.
Особенно, если сравнить http://ru.wikipedia.org/wiki/Блок-схема и http://ru.wikipedia.org/wiki/Псевдокод_(язык_описания_алгоритмов)
Иван Петров
Существуют.
Роман Добровенский
Сергей Соляник, везде нужен рациональный подход. Алгоритм вычисления факториала будет выглядеть просто и понятно в любой нотации — без разницы блок-схема это или псевдокод. Другое дело, когда алгоритм более сложный. Даже какая-нибудь банальная Quicksort или удаление из АВЛ-дерева в блок-схеме будет выглядеть совершенно чудовищно.

А пример псевдокода в Википедии ужасен. Суть псевдокода в том, что он позволяет отразить основную идею, структурировав основные операции и скрыв ненужные подробности, заодно давая возможность удобно навесить в описание сравнительно высокоуровневые вещи вроде вызова функций и циклов. Пример в Википедии вместо этого демонстрирует глупый совковый формализм. Зачем это?

Вообще на мой взгляд вопрос «Как вы относитесь к блок-схемам?» является очень правильным для собеседования. Если человек не начинает плеваться — значит, с ним что-то не так.
Сергей Соляник
Роман Добровенский, если на собеседовании человек начинает плеваться, то с ним вообще что-то не так.
Только слабые, низкие людишки, которых полно вокруг меня, могут думать, что оплевав что-то или кого-то, они получат плюс к имиджу.

Очевидно же, что автор поста провоцирует подобные дискуссии, очевидно игнорируя очевидные умозаключения о том, что блок-схемы хороши по-своему, а псевдо-код — по-своему.
Популярное