Рождение программиста
Эдсгер Вибе Дейкстра, уроженец голландского Роттердама, появился на свет в 1930 году в семье ученых: отец был химиком, мать – математиком. Они привили мальчику любовь к точным наукам и после окончания школы он стал студентом Лейденского университета, поступив на отделение, где готовили математиков и физиков-теоретиков.
В вузе будущему лауреату премии Тьюринга представился случай познакомится с первыми вычислительными машинами и с загадочной, но такой манящей наукой – программированием. Параллельно с учебой он подрабатывал в Математическом центре столицы Нидерландов, где с другими разработчиками трудился над довольно крупным проектом по созданию компьютера ARMAC. В конце 4-го курса перед ним встал вопрос: продолжать карьеру теоретического физика или все-таки бросить нелюбимое дело и окунуться с головой в область, захватившую все его сознание. Вот что вспоминал ученый о принятом судьбоносном решении в начале своего пути:
«... передо мной стоял трудный вопрос – либо прекратить программировать и стать респектабельным теоретическим физиком, либо все-таки завершить начатое мной обучение с минимальными усилиями и стать... вот только кем? Программистом? Но разве это респектабельная профессия? Ведь пока неизвестно, что такое программирование? В чем должен был состоять тот солидный объем знаний, который позволил бы считать программирование научной дисциплиной?»
Он принял правильное решение и его работы оказали огромное влияние на развитие структурного программирования. Именно Дейкстра показал всему миру, что программирование – это не фантастика, а интеллектуальное ремесло, тесно связанное с математической логикой. Самый известный свой алгоритм из теории граф по нахождению кратчайшего пути от одной вершины к другой, он создал за 20 минут, сидя в кафе со своей невестой. К слову, он до сих пор успешно применяется в приложениях для планирования транспортных маршрутов, при работе с электронной оплатой и протоколами маршрутизации.
Дейкстра был творческим разработчиком и внес в кодерские постулаты несколько глобальных вещей. Он является одним из основоположников концепции структурного программирования – то есть методологии, при которой написание кода ведется небольшими блоками. А еще в конце 60-х он в пух и прах разнес целесообразность использования goto
в одной из своих статей, называвшейся: Goto considered harmful («Оператор Goto считается вредным»). В результате всех этих действий был внедрен совершенно новый подход к разработке, предотвращающий появление «спагетти-кода», при котором программа пишется пошагово и состоит из ветвлений, циклов и подпрограмм.
Развитие никому неизвестной науки
Конечно, Дейкстра сильно рисковал, выбрав достаточно экзотическую в то время профессию, ведь в 60-е годы людей с такой специальностью можно было пересчитать по пальцам, а компьютеров и вовсе было только два-три десятка. Будущее программирования считалось довольно туманным, но наш герой обладал волевыми качествами и за несколько лет изучения новой науки достиг немалых высот.
Намаявшись в самом начале своего пути с машинным кодом и с постоянным переписыванием одного и того же алгоритма для разных моделей компьютеров, он неизбежно стал смотреть в сторону высокоуровневых языков. Однако появившийся во второй половине 50-х FORTRAN, был далек от совершенства и пришелся Дейкстра не по нраву. Безусловно, FORTRAN для того времени был для человечества огромным шагом вперед, но ему недоставало простоты и логичности конструкций.
Поэтому в 1958 году небольшое сообщество программистов, в состав которого входил Эдгар, находясь в Цюрихе на очередной из технических конференций, решило разработать альтернативу FORTRAN – Алгол.
Язык получился довольно изящный, поскольку его разработка велась с присущими академической среде требованиями четкости и доказуемости. Главной задачей Дейкстры было создание компилятора нового языка. И поскольку он считал, что люди побыстрее должны уйти от ненавистного Fortrana, максимально не приспособленного под психологию человека, придумал себе челлендж в виде отказа от бритья, пока все не будет готово. Результатом этого испытания стали шестинедельная борода и язык Алгол-60, ставший впоследствии крепким фундаментом для многих современных языков программирования.
Гений программирования
Гениальный программист вел достаточно аскетическую жизнь и был по-хорошему «чудаковат». Он не пользовался благами цивилизации, в его квартире не было телевизора и телефона, он не смотрел художественные фильмы. Ему нравилось писать от руки, о чем красноречиво говорит довольно внушительный каталог его научных работ. К сожалению, детально разобрать их в нашей небольшой статье не получится. Скажем только, что это был ученый с большой буквы, внесший огромный вклад в развитие программирования, как науки.
Однако наш рассказ о Дейкстра будет не полон, без упоминания о еще одной интересной стороне его гения – сильных афористических выражениях, по сей день гуляющих мемами по сети и давно ставших ИТ-фольклором.
Давайте вспомним эти мудрые фразы вместе:
- «Студентов, ранее изучавших Basic, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации».
- «Если отладка – процесс удаления ошибок, то программирование должно быть процессом их внесения».
- «Тестирование программ может служить для доказательства наличия ошибок, но никогда не докажет их отсутствия».
Сами его высказывания были не тщеславным желанием программиста блеснуть остроумием – их можно было назвать концентрированным выражением опыта, тонкой интуиции и аналитического ума. Он был ревностным приверженцем идеи безболезненного программирования и жестко реагировал на несовершенные и откровенно плохие разработки аппаратов и систем. Его современники вспоминали недоумение Дейкстры, когда ему сказали, что советское правительство решило копировать зарубежные образцы вычислительной техники, чтобы перевести на них всю советскую промышленность. А когда ученый узнал, что для клонирования выбрали модель IBM/360 (прообраз советской ЕС ЭВМ) – он назвал это решение «величайшей победой Запада в Холодной войне».
Боялся знаменитый голландец только лишь того, что программирование станет тривиальным процессом, занятием, доступным каждому. «Это обречено на провал», – говорил ученый о таком исходе. Интересно, как бы он оценил теперешнюю ситуацию в IT?
Комментарии