Э́дсгер Ви́бе Де́йкстра (нидерл. Edsger Wybe Dijkstra[5] (11 мая 1930, Роттердам, Нидерланды — 6 августа 2002, Нюэнен[нидерл.], Нидерланды) — нидерландский учёный, труды которого оказали влияние на развитие информатики и информационных технологий; один из разработчиков концепции структурного программирования, исследователь формальной верификации и распределённых вычислений. Тьюринговский лауреат (1972).
Эдсгер Вибе Дейкстра | |
---|---|
нидерл. Edsger Wybe Dijkstra | |
Имя при рождении | нидерл. Edsger Wybe Dijkstra[2] |
Дата рождения | 11 мая 1930[1][2][…] |
Место рождения | |
Дата смерти | 6 августа 2002[1][2][…] (72 года) |
Место смерти | |
Страна | |
Род деятельности | математик, физик, специалист в области информатики, инженер, преподаватель университета, учёный в области информации, программист |
Научная сфера | информатика |
Место работы |
Национальный исследовательский институт математики и информатики Технический университет Эйндховена Техасский университет в Остине |
Альма-матер |
|
Научный руководитель | Адриан ван Вейнгаарден[4] |
Известен как |
создатель алгоритма Дейкстры и семафоров |
Награды и премии | Премия Тьюринга |
Цитаты в Викицитатнике | |
Медиафайлы на Викискладе |
Биография
правитьРодился 11 мая 1930 года в Роттердаме, в семье учёных (отец — химик, мать — математик)[6].
По окончании школы поступил на факультет теоретической физики Лейденского университета.
В 1951 году увлёкся программированием, поступил на трёхнедельные компьютерные курсы в Кембридже, с 1952 года работал программистом в Математическом центре Амстердама под руководством профессора Адриана ван Вейнгаардена, впоследствии — автора одного из способов формального описания грамматики формальных языков — так называемых двухуровневых грамматик ван Вейнгаардена.
Уже в 1952 году принял решение окончательно специализироваться на программировании, но всё же окончил курс теоретической физики.
Во второй половине 1950-х годов в поисках путей оптимизации разводки плат[источник не указан 3901 день] разработал алгоритм поиска кратчайшего пути на графе, ставший известным как «алгоритм Дейкстры».
В 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]
- Свои статьи Дейкстра нумеровал EWD0, EWD1, EWD2 и т. д.
- Факт о Дейкстре: «Известно, что он мало заинтересован в приеме на старшие курсы университета, где он преподает, студентов со знанием Фортрана по той причине, что вместе с этими знаниями могли привиться дурные привычки программирования».
- Еще одна цитата из Дейкстры[13]: «Изящество, ясность и тому подобное в значительной степени определяются количественными аспектами. (Этим владел Моцарт: многие его произведения, от которых замирает дыхание, обманчиво просты; кажется, будто они созданы практически из ничего!)»
Награды
править- Премия Тьюринга (1972)
- Мемориальная премия Гарри Гуда (1974)
- Премия PODC за влиятельную публикацию (2002)
- C&C Prize (2002)
Публикации
правитьКниги
- Structured Programming / ed. O.-J. Dahl, E.W. Dijkstra, C.A.R. Hoare. — London: Academic Press, 1972.
- 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 2 3 4 5 6 7 8 http://amturing.acm.org/award_winners/dijkstra_1053701.cfm
- ↑ 1 2 3 4 5 Архив по истории математики Мактьютор — 1994.
- ↑ Edsger Dijkstra // Encyclopædia Britannica (англ.)
- ↑ Mathematics Genealogy Project (англ.) — 1997.
- ↑ [ˈɛtsxər ˈʋibə ˈdɛikstra] прослушать
- ↑ 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.
- ↑ Edsger Dijkstra. The Humble Programmer Архивная копия от 26 июня 2014 на Wayback Machine // Communications of the ACM, vol. 15 (1972), 10: 859—866]
- ↑ Haldar, Sibsankar and Aravind, Alex A. Operating Systems. — Pearson, 2010. — С. 198. — 580 с. — ISBN 978-81-317-3022-5.
- ↑ Умер Эдсгер Вайб Дейкстра.
- ↑ Rupert.
- ↑ 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 года.
- ↑ Авачева Т. Г., Пруцков А. В. Современный взгляд на концепцию структурного программирования // Cloud of Science. — 2019. — Т. 6, № 4. Архивировано 7 ноября 2019 года.
- ↑ Дал У., Дейкстра Э., Хоор К. Структурное программирование. — Москва: Мир, 1972.
Литература
править- Boyer R.S., Feijen W., Gries D., Hoare C.A.R., Misra J., Moore J., Richards H. In memoriam: Edsger W. Dijkstra 1930-2002 // Communications of the ACM. — 2002. — Vol. 45. — P. 21–22. — doi:10.1145/570907.570921.
- Apt K. Edsger Wybe Dijkstra (1930–2002): A Portrait of a Genius // Formal Aspects of Computing. — 2002. — Vol. 14. — P. 92–98. — doi:10.1007/s001650200029.
- Misra J., Richards H. In Memoriam Edsger Wybe Dijkstra (1930–2002). — 2002.
- Apt K. Edsger Dijkstra: The Man Who Carried Computer Science on His Shoulders // Inference: International Review of Science. — 2020. — Vol. 5, № 3.
Ссылки
править- Премия Дейкстры за выдающиеся работы в области распределенных вычислений
- E. W. Dijkstra Archive (англ.)
- Goodwins, Rupert (2002-08-08). "Computer science pioneer Dijkstra dies". Дата обращения: 27 сентября 2013.
{{cite news}}
: Неизвестный параметр|publusher=
игнорируется (справка) - "Умер Эдсгер Вайб Дейкстра". 2002-08-08. Дата обращения: 27 сентября 2013.
{{cite news}}
: Неизвестный параметр|publusher=
игнорируется (справка)
Для улучшения этой статьи желательно:
|
В сносках к статье найдены неработоспособные вики-ссылки. |