В возрасте 72 лет в своем доме в Нидерландах умер от рака легендарный ЭдсгерДейкстра – один из создателей языка программирования Алгол и автор термина “структурноепрограммирование”. Дейкстра оказался нетипичным человеком даже в среде основоположниковсовременного программирования, отличавшихся бо
ьшим своеобразием. Он фактическипервый начал говорить о том, что программы должны быть максимально логичными.И к тому же он был европейцем.
Как у любого долгоживущего и успешного ученого, у Эдсгера Дейкстры список научныхрезультатов и должностей фактически безграничен. Однако одной из самых важныхвех в его карьере было участие в международной группе по созданию языка программированияАлгол, в результате чего появилась первая реализация этого языка Алгол-60 (всеэто происходило в 1960 году). Рабочая группа была создана при IFIP (InternationalFederation on Information Processing) – тогда эта общественная организация игралароль создателя стандартов. В 1968 году IFIP приняла новый вариант языка, названныйАлгол 68. За время создания этой версии идеология программирования изменилась,и его праотцы, среди которых был и Дейкстра, уже отрицательно отнеслись к новойреализации. Однако во время разработки языка Алгол были фактически сформулированыобщие принципы “языкостроения”. Например, участник рабочей группы знаменитыйНиклаус Вирт позже создал один из самых популярных языков Паскаль. Стоит отметить,что в работе международной группы принимал участие (по почте) и советский ученыйГригорий Цейтин.
Ситуация, возникшая вокруг языка Алгол, фактически определила стиль дальнейшегоразвития программирования. Почти в каждую “программистскую эпоху” наблюдалосьпротивостояние двух языков программирования, что означало попытку реализоватьдве разные идеологии. Началось все с “борьбы” языков Алгол-60 и Фортран. В 80-егоды свысока смотрели друг на друга сторонники языков Паскаль и Си. По этомуповоду даже существует анекдот: “Приехал Никлаус Вирт в Италию и спрашивает уместных программистов: “Вам нравится язык Паскаль?” “Си!” – отвечают они. Виртбыл очень расстроен”. Конец 90-х годов был отмечен противостоянием идеологийСи++ и Java.
Вторым “веховым” достижением Эдсгера Дейкстры была знаменитая “Статья о структурномпрограммировании”, опубликованная в 1969 году. Время было выбрано очень удачное- программирование начало бурно развиваться и ему, как любой в известном смыслесловесной деятельности, понадобились определенные стилистические ограничения.Фактически Дейкстра был первым, кто заявил, что в программировании важно не только”что делает программа”, но и “как она написана”.
Дейкстра предложил использовать при создании программы всего три логические структуры:sequence (следование), selection (ветвление) и iteration (цикл). Получалось,что такой оператор, как goto (от “go to” – дословно “иди к”), становился лишним.Оператор goto позволяет “переключить” выполнение программы на другой оператор,который может находиться практически в любом месте ее текста. Непосвященный человекможет представить этот оператор в виде указания в тексте романа: “читай на странице100”. Таких переходов может быть множество, и логика романа или программы становитсязапутанной. Обычному человеку это может показаться странным, но профессиональныепрограммисты всегда с презрением смотрели на новичков, беспомощно использующихgoto. Конечно “структурное программирование” не убило несчастный goto. Однакопредложения Дейкстры создали базовые требования к логике программ, что оказалорешающее влияние на развитие программирования в целом.
Программирование – дело молодое. Оно успело обрасти лишь специфическими анекдотами- говорить о собственной мифологии пока рано. Поэтому невозможно определить,что такое Рай и Ад для программиста. Однако благодаря Эдсгеру Дейкстре становитсяпонятно – программистский Рай должен иметь логичную структуру. Остается надеяться,что Эдсгер Дейкстра в этом смог убедиться лично.