Первая электронно-вычислительная машина ENIAC начала работать в 1947 году. Если учесть, что и до ЭВМ существовали механические и электро-механические вычислительные устройства, то можно сделать вывод, что программирование – составление программ для вычислительных устройств – имеет довольно давнюю историю.
Однако довольно долго считалось, что составление программ, подобно сочинению стихов, занятие доступное немногим избранным. По мере накопления и обобщения опыта в составлении программ были выработаны сначала некоторые эмпирические правила, а затем развита теория программирования.
Важным шагом на этом пути превращения программирования из искусства в ремесло была концепция структурного программирования, предложенная в 60-х годах ХХ-го века. Согласно этой концепции любая программа может быть составлена с помощью всего трех программных структур:
1) последовательное выполнение операций;
2) ветвление (выбор из двух альтернатив на основании проверки условия
3) цикл (многократное выполнение операции, пока выполняется некоторое условии)
Обоснованием этой концепции послужила теорема сформулированная итальянскими математиками К. Бомом и Дж. Якопини в 1966 году:
Любую схему алгоритма можно представить в виде композиции вложенных блоков begin и end, условных операторов if, then, else, циклов с предусловием (while) и может быть дополнительных логических переменных (флагов)
На первый взгляд данная информация представляет лишь исторический интерес. Ведь операторы языка MATLAB’а, рассмотренные в предыдущей работе как раз и представляют эти структуры (Операторы switch и for, как легко проверить, несложно воспроизвести, используя три основные структуры). Таким образом, сам язык программирования навязывает программисту использование базовых структур.
Однако именно применение только трех базовых структур и является обоснованием рассмотренной выше методики пошаговой детализации (или, как нередко говорят, программирования сверху вниз).
Те из вас, кто начинал изучение программирование с FORTRAN’а, помнят о таком операторе как GO TO. Этот оператор вызывает переход управления программой в любое место программы. На следующем рисунке показано, как, примерно, может выглядеть фрагмент программы использующей этот оператор.
Можете поверить человеку, который начинал свой путь в программировании именно с программ такой структуры, разобраться в логике таких программ невероятно сложно. Даже если сам их написал. Как следствие, отладка и тестирование таких программ так же очень трудоемки.
В наши дни большинство современных языков программирования просто не допускают средств, отличных от трех базовых структур. Программируя в MATLAB’е, мы не можем воспользоваться оператором GO TO, поскольку его в MATLAB’е попросту нет.
Однако понимание того, что любая, самая сложная программа может быть сложена из простых кирпичиков – базовых структур – позволяет с оптимизмом приступить к составлению достаточно сложных программ.