2.15. Размышления о структурном программировании

Распространено мнение, что если лицо, ответственное за разработку программы, или преподаватель запретит использование операторов GO ТО, то будут получаться хорошие программы. Я не могу с этим согласиться. Я знаю программистов, которые сознательно искажают программу только с той целью, чтобы избежать использования единственного оператора GO ТО. Они пытаются получить программу без операторов GO ТО только ради того, чтобы сказать, что в их программе этих операторов нет. Из некоторых программ, составленных на определенных языках, можно полностью исключить операторы GO ТО; в других же задачах и на других языках без них просто нельзя обойтись.

Структурное программирование часто приводит к "пуристскому синдрому", который состоит в стремлении в любой ситуации написать полностью структурированную программу. Следует понять, что структурное программирование не является самоцелью, его назначение — получение хорошей программы. Даже в самой лучшей программе иногда необходимы операторы GO ТО (например, для выхода из группы внутренних циклов по ошибочному условию). Однако чтобы это не выглядело как исключение из правил, лучше иметь письменное подтверждение и согласие руководства для каждого нарушения стандартов структурного программирования.

Использование оператора GO ТО может оказаться уместным в лучших структурированных программах1). Желательно не только

1) Более подробно этот вопрос рассматривается в статье Knuth D. Е., Structured Programming with GO TO Statements, ACM Computing Surveys (December 1974).

отсутствие операторов GO ТО, но и наличие структуры. Хорошо разработанная структура автоматически приводит к использованию небольшого количества операторов GO ТО.

Повышенный интерес к структурному программированию способствовал возникновению мнения, что при его применении будут получаться правильные и надежные программы. Хотя, возможно, это и так, было бы наивно ожидать в этом случае получения совершенных программ. Даже в области прикладных наук, где существуют более проверенные методы проектирования, чем в программировании, мы до сих пор слышим о мосте или плотине, развалившихся по окончании их строительства. Хотя в математике обязателен строгий подход, история науки дает много примеров ошибок. В интересной статье П. Дэвиса1) обсуждена частота ошибок в математических работах. Несколько сот ошибок было обнаружено в "Справочнике математических функций". Редактор журнала Mathematical Reviews подсчитал, что 50% всех математических работ содержит ошибки. Издана книга объемом 130 страниц, где перечислены ошибки, допущенные первоклассными математиками.

Хотя структурное программирование широко используется, а применение операторов GO ТО не рекомендуется, необходимо сделать вывод, что нет таких правил, следуя которым можно создавать понятные и проверенные программы, не содержащие ошибок. Существуют основные принципы, но индивидуальный стиль программиста, четкость и творческий подход (или отсутствие этих качеств) будут существенно влиять на полученную программу.

2.14. Структурное программирование || Оглавление || 2.16. Кодирование сверху вниз


Услуги