Противник GOTO, или Правильное программирование

11 мая 1930 года на свет появился человек, оказавший огромное влияние на развитие компьютерной индустрии, — Эдсгер Вибе Дейкстра, основоположник структурного программирования.

Родился Эдсгер в Роттердаме, в семье учёных — отец мальчика был химиком, а мать занималась математикой. После окончания школы поступил в Лейденский университет на факультет теоретической физики. В 20-летнем возрасте, увлёкшись программированием, он закончил трёхнедельные компьютерные курсы в Кембридже.
В 1952 году Дейкстра устраивается на работу в Математический центр Амстердама. А уже в 1956, совместно с двумя энтузиастами, он разрабатывает ЭВМ под названием X1. Вклад учёного состоял в том, что он разработал алгоритм поиска кратчайшего пути на графе, известный как «алгоритм Дейкстры».

В 1957 Эдсгер женится. И даже в этот трогательный и далёкий от программирования момент с ним происходит забавная it-шная история: в графе «профессия» анкеты, которую положено заполнять при регистрации брака, он написал «программист» — его заставили переписывать документы, заявив, что такой профессии не существует. В результате, как писал Дейкстра: «Хотите — верьте, хотите — нет, но в графе «профессия» моего свидетельства о браке значится забавная запись «физик-теоретик»!».
В 1958—1960 годах непризнанный программист принимает участие в разработке языка программирования Алгол (его «перу» принадлежит первый компилятор для Aлгол-60). Примерно в это же время он работает в проекте по созданию операционной системы THE, представляющей собой поток параллельно исполняющихся взаимодействующих процессов. Результатом этой работы стало появление понятия о синхронизации процессов и чёткое осознание необходимости структуризации процесса программирования и самих программ.
Последующие годы Эдсгер Дейкстра работает в фирме Burroughs Corporation, где в 70-е годы совместно с Чарльзом Хоаром и Никлаусом Виртом формулирует основные положения структурного программирования. При этом он активно проповедовал отказ от использования инструкции GOTO, команды безусловного перехода (на эту тему весьма известна его статья «О вреде оператора GOTO»). Вместо него Дейкстра предлагал использовать три типа управляющих структур, способных полностью заменить этот оператор: простую последовательность (группу операторов, выполняемых друг за другом), альтернативу (конструкцию, позволяющую выбрать один из двух или более возможных операторов) и повторение (конструкцию, позволяющую выполнять заданный оператор до тех пор, пока удовлетворяется некоторое условие).
Дейкстра является автором множества книг и статей, самыми известными из которых являются книги «Дисциплина программирования» и «Заметки по структурному программированию». Особенностью подхода учёного к программированию, которую он освещал в своих книгах, является мощная математическая база: предварительно осуществляется точное, всестороннее математическое описание задачи и способа её решения, формально доказывается правильность алгоритма и реализации в виде максимально простой программы. На сегодня имеется уже несколько языков программирования (например, Pascal), основанных на принципах, предложенных в своё время Дейкстрой.

Однако у этого подхода есть один существенный изъян — программы большого объёма требуют огромное количество сложных доказательств. По объему доказательство может приблизиться к самой программе, в него легко закрадываются ошибки. Для решения этой проблемы Дейкстра предлагал математикам и программистам «на порядок увеличить свои способности к доказательству», хотя сам признавал, что эта задача труднодостижима.
Также Эдсгер Вибе считал «порочным» общепринятый метод проб и ошибок, обосновывая это тем, что программист привыкает не думать над задачей, а писать код и править его. При этом совсем не обязательно, что полученная программа будет работать корректно с точки зрения заданных требований (тестирование может показать лишь наличие ошибок, но не их отсутствие).
Учёный многократно предостерегал программистов от попыток превратить разработку программ в конвейерный процесс, считая, что программирование — это очень сложная научная и инженерная деятельность. Попытки же превратить её в простое занятие, доступное каждому, заранее обречены на провал.
Немалую известность Дейкстре принесли его резкие высказывания, посвященные актуальным проблемам компьютерной индустрии. Например, он заявлял, что «студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации». Также бурную реакцию Эдсгера вызвало решение советского правительства о начале копирования советской промышленностью модельного ряда IBM/360. Тогда он назвал это решение величайшей победой Запада в холодной войне, а выбранную для клонирования модель IBM/360 (прообраз советской ЕС ЭВМ) — величайшей диверсией Запада против СССР.
В 1972 году Дейкстра стал лауреатом престижной премии Тьюринга.
Последние годы жизни этот талантливый и харизматичный программист провёл в США, где преподавал в Техасском университете. Умер Эдсгер Вибе Дейкстра 6 августа 2002 года.

При написании использованы материалы сайтов chernykh.net и ru.wikipedia.org.


Рекомендуем почитать: