Структурное программирование и call-by-name: чем известен Эдсгер Дейкстра

Структурное программирование и call-by-name: чем известен Эдсгер Дейкстра

История первого программиста Нидерландов.

В 1957 году в Нидерландах 27-летний ученый Эдсгер Дейкстра, заполняя документы, в поле «профессия» написал «программист». Органы власти не приняли бумаги и даже затеяли скандал. В Голландии не было такой специальности, поэтому профессию записали так, как было указано в дипломе Эдсгера, — «физик-теоретик». Но это не остановило Дейкстру: через несколько лет он добился изменений в документах и стал первым в стране программистом.

За более чем 50 лет работы ученый стал одним из создателей концепции структурного программирования и (из ненависти к языку FORTRAN) изобрел собственный язык.

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

Не бросать начатое

Эдсгер Дейкстра родился в 1930 году в Роттердаме. Он рос в скромной, но интеллигентной семье: пока папа преподавал в школе химию, мама занималась домашними делами и прививала Эдсгеру любовь к математике. Позже он вспоминал, что именно мама воспитала в нем умение видеть глубже и больше, чем кажется на первый взгляд.

В 1948 году Эдсгер Дейкстра окончил среднюю школу и объявил родителям, что больше не хочет развивать детскую мечту о сотрудничестве с ООН. Он поступил в Лейденский университет на кафедру теоретической физики. И уже на втором году обучения подумал, что компьютер мог бы упростить его эксперименты: так, сам того не осознавая, Дейкстра увлекся программированием. После этого он подал документы в Математический центр в Амстердаме, проучился там еще три года — и снова оказался на распутье: если программирование действительно такое полезное, то почему в Нидерландах почти не говорят о компьютерных науках?

Сомнения развеял тогдашний научный руководитель Дейкстры Адриан Вейнгаарден. Он посоветовал молодому ученому как можно быстрее разобраться с образованием в области теоретической физики и «своими руками сделать из программирования самую востребованную в мире профессию». Эдсгер все-таки окончил Лейденский университет и вернулся в Амстердам с целью реализовать замысел Вейнгаардена.

Алгоритм ALGOL-60

В Математическом центре самым крупным проектом ученого стал компьютер ARMAC, официально презентованный в 1956 году. Для ARMAC Дейкстра ответил на вопрос «как, учитывая сеть дорог, определить кратчайший маршрут между двумя выбранными городами?». Это решение, к которому ученый пришел за 20 минут, сидя на заправке, вошло в историю как «алгоритм Дейкстры». Суть открытия состоит в том, что время выполнения алгоритмов будет расти пропорционально квадрату, а не кубу, как считалось раньше.

В 1960 году вместе с коллегой Яапой Зоннефельдом ученый разработал первый компилятор для языка программирования ALGOL. Это было не случайное открытие: в 1957-м Дейкстра перешел на язык FORTRAN и быстро в нем разочаровался. Ученый так сильно не любил FORTRAN, что на конференции в Швейцарской высшей технической школе, где собрались искать альтернативу FORTRAN, заявил: «Не буду бриться, пока не закончу компилятор». И сдержал слово — на презентации решения ALGOL-60 он появился на публике с шестинедельной бородой.

Во время разработки алгоритма ALGOL-60 ученый также открыл новое правило компиляции — call-by-name, или «вызов по имени», когда аргументы подставляются сразу в тело, а не обозначаются перед функцией.

Эдсгер Дейкстра / Wikipedia

Структурное программирование

Стремительное развитие компьютерных технологий в начале 1970-х сказалось на качестве программ. Разработчики, как говорил Дейкстра, запутались в собственных решениях и стали грешить «спагетти-кодом» — программами, в которых часто встречался оператор GOTO, в результате чего отдельные пути выполнения переплетались и процесс отладки таких программ напоминал распутывание комка спагетти.

Чтобы заявить о проблеме и решить ее, ученый опубликовал статью Goto considered harmful, посвященную критике команды goto — перехода к другой точке кода. Дейкстра предложил писать программы более структурированно, пошагово — с подпрограммами, циклами и ответвлениями.

Старания Дейкстры и его коллег привели к концепции структурного программирования, когда код представлен в виде блоков.

В 1972 году Эдсгер Дейкстра был удостоен самой престижной в информатике премии Тьюринга. Ученый преподавал почти 50 лет, последние годы был профессором в Техасском университете. Дейкстра умер 6 апреля 2002 года от онкологического заболевания. Программиста похоронили дома в Нидерландах.

По материалам Britannica, MacTutor, CWI и IEE.

курс по теме: Прикладная математика и статистика для Data Science
Сергей Бобровский Data Scientist в отделении AI Platforms в Airbus
 

 

Ещё статьи
Платформи для волонтерів, пошук житла, корисні карти та ігри.