Э́дсгер Ви́бе Де́йкстра (нидерл. Edsger Wybe Dijkstra[5] (11 мая 1930, Роттердам, Нидерланды — 6 августа 2002, Нюэнен[нидерл.], Нидерланды) — нидерландский учёный, труды которого оказали влияние на развитие информатики и информационных технологий; один из разработчиков концепции структурного программирования, исследователь формальной верификации и распределённых вычислений. Тьюринговский лауреат (1972).

Эдсгер Вибе Дейкстра
нидерл. Edsger Wybe Dijkstra
Имя при рождении нидерл. Edsger Wybe Dijkstra[2]
Дата рождения 11 мая 1930(1930-05-11)[1][2][…]
Место рождения
Дата смерти 6 августа 2002(2002-08-06)[1][2][…] (72 года)
Место смерти
  • Нюнен[вд], Нидерланды[1][3]
Страна
Род деятельности математик, физик, специалист в области информатики, инженер, преподаватель университета
Научная сфера информатика
Место работы Национальный исследовательский институт математики и информатики
Технический университет Эйндховена
Техасский университет в Остине
Альма-матер
Научный руководитель Адриан ван Вейнгаарден[4]
Известен как

создатель алгоритма Дейкстры и семафоров
один из основателей структурного программирования

один из создателей операционной системы THE
Награды и премии Премия Тьюринга
Логотип Викицитатника Цитаты в Викицитатнике
Логотип Викисклада Медиафайлы на Викискладе

Биография

править

Родился 11 мая 1930 года в Роттердаме, в семье учёных (отец — химик, мать — математик)[6].

По окончании школы поступил на факультет теоретической физики Лейденского университета.

В 1951 году увлёкся программированием, поступил на трёхнедельные компьютерные курсы в Кембридже, с 1952 года работал программистом в Математическом центре Амстердама под руководством профессора Адриана ван Вейнгаардена, впоследствии — автора одного из способов формального описания грамматики формальных языков — так называемых двухуровневых грамматик ван Вейнгаардена.

Уже в 1952 году принял решение окончательно специализироваться на программировании, но всё же окончил курс теоретической физики.

Во второй половине 1950-х годов в поисках путей оптимизации разводки плат[источник не указан 3879 дней] разработал алгоритм поиска кратчайшего пути на графе, ставший известным как «алгоритм Дейкстры».

В 1957 году женился, по собственным воспоминаниям, в графе «профессия» анкеты, которую положено заполнять при бракосочетании, написал «программист» — и его заставили переписывать документы, заявив, что такой профессии не существует, в результате пришлось указать «физик-теоретик»[7].

В 1958—1960 годах принимал участие в разработке языка программирования Алгол, работал в команде по созданию компилятора языка; соревнуясь с датской командой Петера Наура, поклялся не бриться до завершения проекта и победил, написав компилятор за шесть недель, заодно изобретя новое правило компиляции — «вызов по имени».

В 1960-е годы участвовал в создании операционной системы THE, построенной в виде множества параллельно исполняющихся взаимодействующих процессов[8]. Именно в ходе этой работы появились понятия синхронизации процессов, идея семафора, а также была чётко осознана необходимость в структуризации процесса программирования и самих программ.

Длительное время работал в компании Burroughs. В 1970-е годы вместе с Тони Хоаром и Никлаусом Виртом разработал основные положения структурного программирования.

В последние годы жизни преподавал в Техасском университете.

Умер 6 августа 2002 года после долгой борьбы с раком[9][10].

Научные достижения

править

Известность Дейкстре принесли его работы в области применения математической логики при разработке компьютерных программ.

Он активно участвовал в разработке языка программирования Алгол и написал первый компилятор Алгол-60.

Будучи одним из авторов концепции структурного программирования, он проповедовал отказ от использования инструкции GOTO.

Также ему принадлежит идея применения «семафоров» для синхронизации процессов в многозадачных системах и алгоритм нахождения кратчайшего пути на ориентированном графе с неотрицательными весами рёбер, известный как алгоритм Дейкстры.

Также предложил алгоритм сортировочной станции — способ разбора математических выражений, представленных в инфиксной нотации.

В 1972 году стал лауреатом премии Тьюринга.

В 2002 году получил ежегодную премию, вручаемую Симпозиумом по принципам распределённых вычислений (англ. Symposium on Principles of Distributed Computing) Ассоциации вычислительной техники «за публикацию, оказавшую наибольшее влияние на область распределённых вычислений»; в знак признания заслуг учёного с 2003 года эта премия носит название премии Дейкстры.

Библиография

править

Автор нескольких книг и множества статей, самые известные публикации — книги «Дисциплина программирования», «Заметки по структурному программированию», статья «О вреде оператора GOTO» (англ. GOTO considered harmful).

Помимо обсуждения специальных вопросов, в своих статьях и книгах Дейкстра последовательно отстаивал необходимость математического подхода к программированию, который предполагает предварительное точное, всестороннее математическое описание задачи и способа её решения, формальное доказательство правильности выбранного алгоритма и последующую реализацию алгоритма в виде максимально простой, структурированной программы, корректность которой должна быть формально доказана.

По мнению Дейкстры, господствующий в компьютерной индустрии подход к программированию как к процессу достижения результата методом проб и ошибок («написать код — протестировать — найти ошибки — исправить — протестировать — …») порочен, поскольку стимулирует программистов не думать над задачей, а писать код, что при этом совершенно не гарантирует корректность программ, которая не может быть доказана тестированием в принципе.

Многократно предостерегал от попыток превратить разработку программ в некий тривиальный процесс; по его мнению, программирование в сути своей — чрезвычайно сложная научная и инженерная деятельность, и никакие новые методы и инструменты не смогут кардинально изменить это положение — они лишь освобождают программиста от части рутинной работы. Попытки же превратить программирование в простое занятие, доступное каждому, обречены на провал.

В 1975 году на примере положения дел в Германии Дейкстра показал, что развитие программирования как науки на основе одного выбранного языка программирования невозможно.

Результатом такого подхода стал полный разрыв теории и практики программирования. Дейкстра отмечал, что принятие в Германии на правительственном уровне языка ALGOL 68 в качестве фундаментального средства дальнейшего развития имело столь же парализующее действие, как и решение правительства СССР о переходе советской промышленности к копированию модельного ряда IBM/360 в конце 1960 годов, которое учёный назвал величайшей победой Запада в холодной войне[11].

Интересные факты

править

Интересные факты о Дейкстре:[12]

  1. Свои статьи Дейкстра нумеровал EWD0, EWD1, EWD2 и т. д.
  2. Факт о Дейкстре: «Известно, что он мало заинтересован в приеме на старшие курсы университета, где он преподает, студентов со знанием Фортрана по той причине, что вместе с этими знаниями могли привиться дурные привычки программирования».
  3. Еще одна цитата из Дейкстры[13]: «Изящество, ясность и тому подобное в значительной степени определяются количественными аспектами. (Этим владел Моцарт: многие его произведения, от которых замирает дыхание, обманчиво просты; кажется, будто они созданы практически из ничего!)»

Награды

править

Публикации

править

Книги

  • Structured Programming / ed. O.-J. Dahl, E.W. Dijkstra, C.A.R. Hoare. — London: Academic Press, 1972.
    • Дал У., Дейкстра Э., Хоор К. Структурное программирование. — М.: Мир, 1975. — 247 с.
  • Dijkstra E.W. A Discipline of Programming. — Prentice-Hall, 1976.
    • Дейкстра Э. Дисциплина программирования. — М.: Мир, 1978. — 275 с.
  • Dijkstra E.W. Selected Writings on Computing: A personal Perspective. — Springer, 1982.
  • Dijkstra E.W., Feijen W.H.J. A Method of Programming. — Addison-Wesley, 1988.
  • Dijkstra E.W., Scholten C.S. Predicate Calculus and Program Semantics. — Springer, 1990.

Основные статьи

  • Dijkstra E.W. A note on two problems in connexion with graphs // Numerische Mathematik. — 1959. — Vol. 1. — P. 269–271. — doi:10.1007/BF01386390.
  • Dijkstra E.W. Recursive Programming // Numerische Mathematik. — 1960. — Vol. 2. — P. 312–318. — doi:10.1007/BF01386232.
  • Dijkstra E.W. Solution of a problem in concurrent programming control // Communications of the ACM. — 1965. — Vol. 8. — P. 569. — doi:10.1145/363095.363143.
  • Dijkstra E.W. Go to statement considered harmful // Communications of the ACM. — 1968. — Vol. 11. — P. 147–148. — doi:10.1145/362929.362947.
  • Dijkstra E.W. The structure of the “THE”-multiprogramming system // Communications of the ACM. — 1968. — Vol. 11. — P. 341–346. — doi:10.1145/363095.363143.
  • Dijkstra E.W. Cooperating Sequential Processes // Programming Languages: NATO Advanced Study Institute. — London: Academic Press, 1968. — P. 43–112.
  • Dijkstra E.W. Self-stabilizing systems in spite of distributed control // Communications of the ACM. — 1974. — Vol. 17. — P. 643–644. — doi:10.1145/361179.361202.
  • Dijkstra E.W. Programming as a Discipline of Mathematical Nature // American Mathematical Monthly. — 1974. — Vol. 81. — P. 608–612. — doi:10.1080/00029890.1974.11993624.
  • Dijkstra E.W. Guarded commands, nondeterminacy and formal derivation of programs // Communications of the ACM. — 1975. — Vol. 18. — P. 653–657. — doi:10.1145/360933.360975.
  • Dijkstra E.W., Scholten C.S. Termination detection for diffusing computations // Information Processing Letters. — 1980. — Vol. 11. — P. 1–4. — doi:10.1016/0020-0190(80)90021-6.

См. также

править

Примечания

править
  1. 1 2 3 4 5 6 7 8 http://amturing.acm.org/award_winners/dijkstra_1053701.cfm
  2. 1 2 3 4 5 Архив по истории математики Мактьютор — 1994.
  3. Edsger Dijkstra // Encyclopædia Britannica (англ.)
  4. Mathematics Genealogy Project (англ.) — 1997.
  5. [ˈɛtsxər ˈʋibə ˈdɛikstra] прослушать
  6. O'Connor, J. J.; Robertson, E. F. (July 2008). "Dijkstra biography". MacTutor. School of Mathematics and Statistics, University of St Andrews, Scotland. Archived from the original on 11 October 2013. Retrieved 18 January 2014.
  7. Edsger Dijkstra. The Humble Programmer Архивная копия от 26 июня 2014 на Wayback Machine // Communications of the ACM, vol. 15 (1972), 10: 859—866]
  8. Haldar, Sibsankar and Aravind, Alex A. Operating Systems. — Pearson, 2010. — С. 198. — 580 с. — ISBN 978-81-317-3022-5.
  9. Умер Эдсгер Вайб Дейкстра.
  10. Rupert.
  11. Edsger W. Dijkstra. Trip report E.W.Dijkstra: NATO Summer School Marktoberdorf 1975 (англ.). The University of Texas at Austin (11 августа 1975). Дата обращения: 25 июля 2017. Архивировано 13 июля 2017 года.
  12. Авачева Т. Г., Пруцков А. В. Современный взгляд на концепцию структурного программирования // Cloud of Science. — 2019. — Т. 6, № 4. Архивировано 7 ноября 2019 года.
  13. Дал У., Дейкстра Э., Хоор К. Структурное программирование. — Москва: Мир, 1972.

Литература

править

Ссылки

править