За каждой программой стоит проблемная область, в которой, по-видимому, есть набор проблем, хорошо понятных группе людей, хорошо осведомленных в области, и область решения, в которой методы решения таких проблем собираются и используются для обработки проблемы.
Чтобы что-то объяснить, вы должны сначала договориться о проблемной области. Если ваша проблемная область связана с обработкой сигналов, а объяснение направлено кому-то, кто не знаком с доменом, вы уже готовы.
Затем вам нужно объяснить область решения (или обратиться к общеизвестному набору решений, который можно найти в техническом руководстве), чтобы вы могли обосновать конкретный выбор решения, которое хорошо подходит для этой конкретной проблемы и других ограничения, которые могут быть наложены на ответ (работает на маленькой машине, может быть построен за день и т. д.) Если человек, которому вы объясняете вещи, не понимает быстрое преобразование Фурье как возможное решение проблемы в выбранной вами области обработки сигналов, вы не сможете объяснить решение, не говоря уже о том, что это лучшее из ваших выбор.
Как только вы преодолеете эти два препятствия, , тогда может быть, блок-схема может быть бесполезной. Другие костыли, такие как различные типы диаграмм UML, все объясняют структуру решения с разных точек зрения. Какая перспектива имеет значение, зависит от цели объяснения.
Относительно блок-схем: хотя они когда-то были популярны, для описания алгоритмов код psuedo, как правило, достаточно хорош. Люди, которые не могут следовать псевдо-коду, вряд ли тоже будут следовать большой схеме. И если ваша блок-схема тривиальна, она вам не нужна. Я не использовал один всерьез за 20 лет. Кажется, что большая часть литературы по информатике тоже не использует его.
Сказав это, когда кто-то хочет в мельчайших деталях понять, что делает настоящий фрагмент кода, особенно для целей автоматического анализа программ, блок-схемы (под вымышленным названием "поток управления") все еще довольно полезны.
См. блок-схему управления COBOL (и объяснение см. ). Должно быть очевидно, что вы не хотите использовать это для объяснения алгоритма другому человеку.