Структурне програмування та 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.

Ще статті
Як працювати з даними: фахівці діляться досвідом.
Розробники радять Telegram- та YouTube-канали, книги та блоги.