Управляемость
Большинство компьютеров используют нечто большее, чем просто список инструкций для своей работы. Они также производят проверку различных условий и затем "скачки" в соответствующие части программы в зависимости от результата. Они также производят многократное "зацикливание" на одних и тех же участках кода, обычно контролируя при этом момент выхода из цикла.
Как ассемблер, так и высокоуровневый язык обеспечивают возможности для переходов и циклов. В ассемблерах мы используем команды типа "jump" ("прыжок"), в некоторых языках высокого уровня пользуемся конструкциями типа "GO TO" ("перейти к"). Когда эти возможности используются в сильной степени, программы начинают становиться похожими на такую же неразбериху, как на рисунке 1-1.
Рис.1-1. Неструктурированный код, использующий инструкции типа "jump" или "GOTO".
ИНСТРУКЦИЯ ИНСТРУКЦИЯ ИНСТРУКЦИЯ ИНСТРУКЦИЯ ПРОВЕРКА УСЛОВИЯ ПЕРЕХОД ИНСТРУКЦИЯ ИНСТРУКЦИЯ ИНСТРУКЦИЯ ИНСТРУКЦИЯ ИНСТРУКЦИЯ ПЕРЕХОД ИНСТРУКЦИЯ ИНСТРУКЦИЯ ИНСТРУКЦИЯ ИНСТРУКЦИЯ ПРОВЕРКА УСЛОВИЯ ПЕРЕХОД ПРОВЕРКА УСЛОВИЯ ПЕРЕХОД
Этот подход, до сих пор широко представленный в таких языках, как Фортран и Бейсик, создает трудности при написании и трудности при внесении изменений. При такой "кашеобразной" манере написания программ невозможно протестировать отдельный участок кода или найти почему выполняется что-то, что выполняться не должно.
Трудности с кашевидными программами привели к открытию "блок-схем". Это были нарисованные карандашом и ручкой картинки, показывающие "течение" процесса, которые использовались программистом в качестве шпаргалки для понимания создаваемого кода. К несчастью, программист вынужден был осуществлять переход от кода к диаграмме и наоборот вручную. Многие программисты осознали бесполезность старомодных диаграмм.