Август принес печальную весть: скончался один из известнейших программистов прошлого века Эдсгер Дейкстра. С его именем связаны важные моменты в развитии теории программирования — он участвовал в создании Алгола, языка программирования.

Еще в конце 50-х годов в своей докторской диссертации, называвшейся «Communication with an automatic computer» («Связь с автоматическим компьютером»), он разработал систему прерываний, позволившую реализовать идею буферизации ввода-вывода информации, а в дальнейшем предложил аппарат семафоров, на котором базируется управление параллельными процессами при вычислениях. В частности, Э. Дейкстре принадлежат первые алгоритмы работы со стеками, основанные на аналогии с железнодорожными разъездами и послужившие внедрению представлений очередей заданий в операционные системы и теории массового обслуживания — в вычислительные процессы. Он был членом коллектива, приступившего к разработке системы под названием «The multiprogramming system» («Система мультипрограммирования»), которая, по существу, стала первой ОС с параллельными процессами.

Созданная при Международной федерации по процессам обработки информации (IFIP) рабочая группа подготовила более успешную версию языка программирования — Алгол-68. Но Э. Дейкстра, критикуя ее, много работал, и результатом стала публикация в 1969 г. статьи «О структурном программировании». В ней практически впервые автор повел речь о стиле программирования — это означало высокий уровень, достигнутый программированием как видом деятельности.

Э. Дейкстрой была предложена знаменитая триада, которой достаточно для создания логической структуры программы: следование (sequence), ветвление (selection) и цикл (iteration). Это привело ученого к отказу от использования оператора goto, в то время как в программистской печати во множестве работ отстаивалась его необходимость. Как и у великого Лейбница философское понятие триады и дальнейшая его популярность в конечном итоге не остановили развитие человеческой мысли, так структурное программирование не только ограничило произвол при написании текстов программ, но и серьезно улучшило практическую работу программистов, а также привело к созданию новых языков программирования; некоторые из них дожили, развиваясь, и до наших дней.

В 1972 г. Ассоциация CM (Association for computing machinery), отметив выдающиеся заслуги Э. Дейкстры в развитии программирования, присудила ему звание лауреата премии Алана Тьюринга. В своей речи при вручении премии Э. Дейкстра подверг жесткой критике язык программирования PL/I, отметив прежде всего его сложность: «Я совершенно не вижу, как мы можем охватить умом наши увеличивающиеся в размере программы, в то время как из-за своей переусложненности язык программирования — наш основной инструмент, прошу отметить! — уже выходит из-под нашего интеллектуального контроля». Особое место в литературе по программированию заняла книга Э. Дейкстры «A discipline of programming» («Предмет программирования», 1976 г.): в ней не только подведены итоги развития теории, но и определены каноны практики. Интересно, что в этой книге Э. Дейкстра придерживается иного взгляда, чем Р. Флойд, для которого смысловое толкование операции в языке программирования сформулировано в виде логического правила, позволяющего определять ее истинность на основе знания того, какие утверждения верны до ее выполнения. Оказалось, что можно «исходить из утверждения, которое должно выполняться после операции, и доказывать, что «самое слабое предусловие», которое должно иметь место до выполнения этой операции, на самом деле имеет место» (см. Кнут Д. Искусство программирования. М.: Вильямс, т. 1, с. 45). Это открыло новый путь для разработки алгоритмов при программировании.

Последнюю четверть века Э. Дейкстра работал консультантом многих фирм и профессором ряда университетов, например в компании «Шлюмберже» и Техасском университете (г. Остин), а также принимал участие в международных конференциях по программированию.

653