Эдсгер Дийкстра

 

По мнению одного из самых авторитетных теоретиков программирования, голландского ученого Эдсгера Дийкстры (1930-2002), большинства ошибок при программировании можно избежать; причем он много лет вел борьбу с небрежным стилем в программировании, которое развивалось в основном не как строгая наука, а как искусство, основанное на интуиции и личном опыте.

Дийкстра выбрал нестандартный способ пропаганды своих воззрений. Он готовил "информационные бюллетени" и рассылал их копии с пометкой EWD (его инициалы) двум десяткам коллег. В 1968 году вышла небольшая работа Дийкстры "Заметки о структурном программировании", в которой доказывалось, что большинство программ неоправданно сложны из-за отсутствия в них четкой структуры. Ему было тогда 38 лет.

Наиболее резкой критике Дийкстра подверг команду безусловного перехода (оператор ООТО, служащий для передачи управления из одной точки программы в другую). В некоторых случаях данный оператор оказывается полезным, но в то же время он затрудняет восприятие программы человеком. Дийкстра предложил использовать три типа управляющих структур: простую последовательность, альтернативу и повторение. Он утверждал, что, используя три эти структуры, можно обходиться вообще без оператора ООТО. Постепенно принципы структурного программирования стали находить отражение в программах всех рангов; появились и языки программирования, использующие идеи Дийкстры (например, Паскаль).

Не устраивало Дийкстру и то, как осуществляются тестирование и отладка (выявление и исправление ошибок в программе): эти процедуры часто требуют больше времени, чем все другие фазы разработки программы вместе взятые. К тому же традиционное тестирование способно показать только наличие ошибок, но не их отсутствие. Даже когда кажется, что программа полностью отлажена, при новых входных данных могут вновь обнаружиться ошибки.

Дийкстра предложил не заниматься тестированием программ, а проверять их, используя математические методы. Для этого, по словам Дийкстры, математикам и программистам придется "на порядок увеличить свои способности к доказательству". Пока ряд положительных результатов удалось получить только для маленьких программ.

 

       

Hosted by uCoz