В связи с этим ещё некоторые соображения уже конкретно по ЦД. Сформировались на
этом примере. Там видно, что преобразование структурной же конструкции "гнездо циклов" в ЦД делает структуру процесса, IMHO, более стройной. И даже сразу даёт некоторую оптимизацию.
Но есть ещё вещь, о которой там не писал. Дело в том, что ЦД данной задачи можно сам по себе эквивалентно преобразовывать. Меняя число веток и их структуру. И получалось так - можно повышать долю веток с линеаризованными телами, при этом число веток растёт.
И тут видится связь с непрерывным матаном снова. Можно сказать, что происходит "предельный переход". К чему? Очевидно, к сказанному здесь:
http://oberoncore.ru/wiki/структурирование_промышленного_цикла писал(а):
Основной смысл цикла — это его цель, в какое конечное состояние он должен привести (какое постусловие обеспечить). В состояние из каких возможных классов (например, у поиска два или более исхода: не нашли, нашли А, нашли Б… И т.п.) Действия же, которые в цикле происходят — это отнюдь не его смысл, а «грязная работа» по продвижению от начального состояния к целевому. Чем проще эти внутренние действия, тем лучше. И уж конечно, они не должны содержать вперемешку ещё и принятие решений о том, достигнута цель или нет.
Т.е. решение как бы "представляется рядами". Причём сложностью (маршрутной) членов ряда в случае ЦД можно управлять, "последовательно приближаясь" к предельному упрощению. Используя каждый раз формальное представление о задаче. Разумеется, для практики это когда целесообразно, а когда и не очень. Также нужно допускать, что иногда предел (полная линеаризация тел) достижим, иногда нет.
И получается, что сравнение доказательного программирования с матаном применительно к ЦД не только метафора. Можно сказать, что представление в виде ЦД - это и есть метод матанализа алгоритмов.
Уж не знаю, насколько правомерны такие рассуждения...