에드거 디크스트라
Edsger W. Dijkstra에드거 디크스트라 | |
---|---|
태어난 | 네덜란드 로테르담 | 11 1930년 5월
죽은 | 2002년 8월 6일 네덜란드 누엔 | (72)
시민권 | 네덜란드 |
교육 | 레이든 대학교 (B.S, M.S.) 암스테르담 대학교 (박사) |
로 알려져 있다. | 아래 내용 참조. |
배우자 | 마리아 (리아) C. 데빗 |
수상 |
|
과학 경력 | |
필드 | |
기관 | |
논문 | 자동 컴퓨터와의 통신 (1959) |
박사학위 자문위원 | 아드리안 판 빈가르덴 |
박사과정 학생 | |
영향 | |
영향받은 |
Edsger Wybe Dijkstra (/ˈdaɪkstrə/ DYKE-strə; Dutch: [ˈɛtsxər ˈʋibə ˈdɛikstra] (listen); 11 May 1930 – 6 August 2002) was a Dutch computer scientist, programmer, software engineer, systems scientist, science essayist,[9][10] and pioneer in computing science.[11] 훈련을 통한 이론 물리학자였던 그는 1952년부터 1962년까지 수학 센트럼(암스테르담)에서 프로그래머로 일했다. 일생 동안 대학 교수였던 디크스트라는 1984년부터 1999년 은퇴할 때까지 텍사스 대학에서 컴퓨터 과학 분야의 Schlumberger 100주년 강좌를 열었다. 아인트호벤 공과대학 수학 교수(1962~1984)와 버로우스 사의 연구위원(1973~1984)을 지냈다. 1972년 튜링상을 수상한 최초의 미국인도 영국인도 아닌 사람이 되었다.
컴퓨터 과학의 창시 세대 중 가장 영향력 있는 인물 중 한 [2][3][5][6][12][13]명인 Dijkstra는 공학자와 이론가로서 새로운 규율을 형성하는 것을 도왔다.[14][15] 그의 근본적인 공헌은 컴파일러 건설, 운영 체제, 분산 시스템, 순차 및 동시 프로그래밍, 프로그래밍 패러다임 및 방법론, 프로그래밍 언어 연구, 프로그램 설계, 프로그램 개발, 프로그램 검증, 소프트웨어 엔지니어링 원칙, 그래프 등 컴퓨팅 과학의 다양한 분야를 포괄한다.h 알고리즘, 그리고 컴퓨터 프로그래밍과 컴퓨터 과학의 철학적 기초. 그의 논문의 많은 부분이 새로운 연구 분야의 원천이다. 현재 컴퓨터 과학에서 표준이 되고 있는 몇 가지 개념과 문제들은 처음에 디크스트라나 그에 의해 만들어진 곰 이름에 의해 확인되었다.[16][17]
1960년대 중반까지 컴퓨터 프로그래밍은 과학적인 훈련이라기보다는 예술(또는 공예)으로 여겨졌다. 할란 밀스의 말(1986년)에서 "[70년대 이전] 프로그램화는 프로그램으로서 작동하기 위해 컴퓨터 지시를 작성하는 사적인 퍼즐 해결 활동"으로 간주되었다. 1960년대 후반, 컴퓨터 프로그래밍은 위기에 처했다. Dijkstra는 프로그램의 질을 향상시키기 위한 새로운 프로그래밍 스타일을 주창했던 소수의 학자들과 산업 프로그래머들 중 한 명이었다. 수학과 물리학의 배경을 가진 디크스트라는 컴퓨터 프로그래밍을 과학적인 학문으로서 수용하게 된 원동력 중 한 명이었다.[18][19] 그는 "구조화된 프로그래밍"이라는 말을 만들었고, 1970년대에는 이것이 새로운 프로그래밍 정설이 되었다.[20][21][22] 구조화된 프로그래밍 운동의 창시자(컴퓨터 프로그래밍 역사상 최초의 주목할 만한 움직임)로서, 프로그래밍 방법론에 대한 그의 아이디어는 소프트웨어 엔지니어링의 전문적인 규율의 탄생과 발전의 토대를 마련하는 데 도움을 주었고, 프로그래머들이 점점 더 복잡하게 조직하고 관리할 수 있게 해주었다.ftware [23][24]프로젝트 베르트랑 마이어(2009)가 지적한 바와 같이, "다이크스트라의 아이콘클라즘에 의해 시작된 프로그래밍의 관점에서의 혁명은 프로그램 구성에 대한 체계적이고 이성적인 접근을 주창하는 구조화된 프로그래밍으로 알려진 운동을 이끌었다. "구조화된 프로그래밍은 객체 지향 프로그래밍을 포함한 프로그래밍 방법론에서 그 이후 행해진 모든 것의 기본이다."[25]
동시 컴퓨팅에 대한 학문적 연구는 1960년대에 시작되었는데, Dijkstra(1965)가 상호 배제 문제를 규명하고 해결한 이 분야의 첫 논문이라고 인정하였다.[5][26] 그는 또한 분산 컴퓨팅의 원리에 대한 연구의 초기 개척자 중 한 명이었다. 동시성, 세마포어, 상호 배제, 교착 상태(죽은 듯이 포용), 그래프에서 최단 경로 찾기, 오류 허용성, 자기 안정화에 대한 그의 기초적인 연구는 분산 컴퓨팅 분야가 구축되는 많은 기둥으로 구성되어 있다. 2002년 사망 직전, 프로그램 연산의 자기 안정화에 관한 연구로 분산 컴퓨팅 분야에서 ACM PODC 영향력-종이상을 받았다. 이 연례 상은 이듬해 Dijkstra Prize(Dijkstra Prize, Dijkstra Prize in Distribution Computing)로 이름이 바뀌었다.[27] 컴퓨터공작기계협회(ACM) 분산컴퓨팅 원리 심포지엄과 유럽이론컴퓨터과학협회(EATCS) 분산컴퓨팅 국제심포지엄(DISC)이 공동 후원하는 이 상은 "원칙적인 연구에 더 큰 영향을 미친 개인은 없다"고 인정한다.분산형 컴퓨팅".
전기
초년
에드거 디크스트라는 로테르담에서 태어났다. 그의 아버지는 네덜란드 화학 협회의 회장이었던 화학자였고, 그는 중등학교에서 화학을 가르쳤고, 후에 그 교장이 되었다. 그의 어머니는 수학자였지만 정식 직업을 가진 적은 없었다.[28][29]
Dijkstra는 법률 분야에서 직업을 고려했고 UN에서 네덜란드를 대표하기를 희망했었다. 그러나 1948년 학교를 졸업한 후 부모의 권유로 그는 레이든 대학에서 수학과 물리학을 공부했다.[14]
1950년대 초, 전자 컴퓨터는 신기했다. Dijkstra는 그의 경력에 꽤 우연히, 그리고 그의 감독관인 A교수를 통해 비틀거렸다. 그는 1952년 3월 공식적으로 네덜란드 최초의 "프로그래머"가 된 암스테르담의 수학 센터의 계산 부서장인 아드리안 판 비젠가르덴을 만났다.[14]
한동안 Dijkstra는 매주 3일씩 Leiden에서 그것을 연구하면서 물리학에 전념했다. 그러나 컴퓨팅에 대한 노출이 증가하면서 그의 집중력은 변화하기 시작했다. 그는 다음과 같이 회상했다.[30]
약 3년 동안 프로그램을 만든 후, 나는 암스테르담의 수학 센터에서 당시 나의 상사였던 판 빈가르덴과 토론을 했는데, 이 토론은 내가 살아있는 한 그에게 감사하게 남아 있을 것이다. 요점은 라이덴 대학에서 이론물리학을 동시에 공부하기로 되어 있었는데, 두 활동을 점점 더 결합하기가 어려워지는 것을 발견함에 따라 프로그래밍을 중단하고 진짜, 존경할 만한 이론물리학자가 되거나 아니면 물리학에 대한 연구를 단지 정식적인 완성으로 옮기는 것, 즉 몇 분의 1의 시간을 가지고 결정을 내려야 한다는 것이었다.노력의 흔적이 역력하고, 그리고.. 네? 프로그래머? 하지만 그것은 존경할 만한 직업이었을까? 결국 프로그래밍이란 무엇이었을까? 지적으로 존경할 만한 학문으로서 그것을 뒷받침할 수 있는 건전한 지식의 본체는 어디에 있었을까? 나는 하드웨어 동료들이 얼마나 부러웠는지 꽤 생생하게 기억하는데, 그들은 적어도 진공관, 증폭기, 그리고 나머지 것들에 대해 모든 것을 알고 있다는 것을 지적할 수 있었다. 반면에 나는 그 질문에 직면했을 때, 나는 빈손으로 서 있을 것이라고 느꼈다. 오심으로 가득 찬 나는 반 빈가르덴의 사무실 문을 두드려 "잠시 그에게 말을 해도 되겠느냐"고 물었고, 몇 시간 후 내가 그의 사무실을 떠났을 때 나는 또 다른 사람이었다. 나의 문제를 끈기 있게 듣고 나서, 그는 그 순간까지 프로그래밍 규율이 별로 없다는 것에 동의했지만, 그리고 나서 그는 계속 조용히 설명하기를, 자동 컴퓨터가 여기 남으려고 온 것이고, 우리는 막 시작했을 뿐이고 내가 프로그래밍을 존경할 수 있는 규율의 하나가 될 수 없다고 말했다. 몇 년 후? 이것은 내 인생의 전환점이었고 나는 물리학을 최대한 빨리 공식적으로 끝마쳤다.
— Edsger Dijkstra, The Humble Programmer (EWD340), Communications of the ACM
Dijkstra가 Maria (Ria) C와 결혼했을 때. 1957년 데벳은 자신의 직업을 말하기 위해 결혼 의식의 한 부분으로 요구되었다. 그는 자신이 프로그래머라고 말했는데, 당시 네덜란드에는 그런 직업이 없었다.[30][31]
1959년, 그는 네덜란드에서 개발된 최초의 상용 컴퓨터인 일렉트로니카 X1을 위해 고안된 조립 언어에 대한 설명에 전념하는 '자동 컴퓨터와의 통신'이라는 제목의 논문으로 암스테르담 대학에서 박사학위를 받았다. 그의 논문 감독관은 반 빈가든이었다.[16]
암스테르담, 수학 센트럼
1952년부터 1962년까지, 디크스트라는 암스테르담의 Matheaticisch Centrum에서 일했고,[16] 그곳에서 그는 Bram Jan Loopstra 및 Carel S와 긴밀히 협력했다. 컴퓨터를 만들기 위해 고용된 숄텐. 그들의 상호작용 방식은 다음과 같이 규정되었다. 그들은 먼저 프로그래밍 매뉴얼을 작성함으로써 하드웨어와 소프트웨어 사이의 인터페이스를 결정할 것이다. 그러면 하드웨어 설계자들은 계약서의 그들의 부분에 충실해야 하는 반면 프로그래머인 Dijkstra는 존재하지 않는 기계를 위한 소프트웨어를 작성해야 할 것이다. 그가 이 경험을 통해 얻은 두 가지 교훈은 명확한 설명서의 중요성이었으며, 프로그램 디버깅은 신중한 설계를 통해 대부분 피할 수 있다는 것이었다.[14] Dijkstra는 1956년 ARMAC 컴퓨터의 공식 취임식에서 시연을 위한 최단 경로 문제를 공식화하고 해결했다. 자동컴퓨팅 전용 저널이 없어 1959년까지 결과를 발표하지 않았다.
수학 센터에서 Dijkstra와 그의 동료인 Jaap Zonneveld 는 다른 그룹에 의해 컴파일러가 생산되기 1년여 전인 1960년 8월까지 프로그래밍 언어 ALGOL 60을 위한 최초의 컴파일러를 개발하였다.[14] 그것은 그가 나중에 프로그래밍을 과학 활동으로 생각하는 데 지대한 영향을 미쳤다.
아인트호벤 공과대학교
1962년 디크스트라는 아인트호벤으로 옮겨갔고, 이후 네덜란드 남부의 누엔으로 건너가 아인트호벤 공과대학 수학학과 교수가 되었다.[16] 대학에는 컴퓨터공학부가 따로 없었고 수학과의 문화도 특별히 그에게 맞지 않았다. Dijkstra는 문제 해결에 협력할 수 있는 컴퓨터 과학자 그룹을 만들려고 노력했다. 이것은 수학부에 있어서 특이한 연구 모델이었다.[14] 1960년대 후반에 그는 소프트웨어 기반 페이징 가상 메모리의 사용을 통해 후속 운영 체제의 설계에 영향을 준 TH 운영 체제(대학의 명칭, 당시 테크니쉬 호게스쿨 아인트호벤으로 알려져 있음)를 구축했다.[32]
버러우스 코퍼레이션
Dijkstra는 1973년 8월 당시 혁신적인 하드웨어 아키텍처를 기반으로 컴퓨터를 생산한 것으로 알려진 Burroughs Corporation에 연구원으로 입사했다. 그의 임무는 1년에 몇 번씩 회사의 연구소를 방문하여 자신의 연구를 수행하는 것으로 구성되었는데, 그는 가장 작은 버로우스 연구 시설, 즉 누엔에 있는 자신의 집 2층에 대한 연구를 했다. 사실, 디크스트라는 버러우스의 유일한 연구원이었고, 집에서 일을 했고, 때때로 미국에 있는 지점까지 여행했다. 그 결과 그는 대학 진학을 일주일에 하루로 줄였다. 그날 화요일은 곧 유명한 '화요일 오후 클럽'의 날로 알려지게 되었는데, 그는 그의 동료들과 함께 표기법, 조직, 발표, 언어, 내용 등 모든 측면을 살펴보며 과학 기사에 대해 토론했다. 1984년 오스틴(미국)의 텍사스대학으로 옮긴 직후 텍사스주 오스틴에서 화요일 오후 클럽의 새로운 '지점'이 등장했다.[16]
버로우스 시대는 그가 연구 기사의 생산량이 가장 많은 시기라고 보았다. 그는 EWD 시리즈(아래 설명)에 거의 500개의 문서를 썼는데, 이들 대부분은 선택된 그룹 내의 사적인 순환을 위해 기술 보고서를 작성했다.[14]
텍사스 대학교 오스틴
디크스트라는 1984년 텍사스 오스틴 대학의 컴퓨터 과학 학부에서 Schlumberger 100주년 기념 강좌를 수락했다.
지난 해
디크스트라는 1999년 11월 은퇴할 때까지 오스틴에서 일했다. 컴퓨터 과학부는 이 날을 기념하고 컴퓨터 과학에 40년 이상 공헌한 그의 업적을 기념하기 위해 심포지엄을 조직했는데, 이 심포지엄은 2000년 5월 그의 70번째 생일에 열렸다.[14]
디크스트라와 그의 아내는 오스틴에서 누엔(네덜란드)에 있는 원래 집으로 돌아왔고 그곳에서 그는 몇 달밖에 살지 못한다는 것을 알게 되었다. 그는 텍사스 오스틴에서 은퇴하고 싶었지만 네덜란드에서 죽고 싶다고 말했다. 디크스트라는 암과의 오랜 투병 끝에 2002년 8월 6일 사망했다.[33] 그와 그의 아내 마리아(리아) 데벳은 그들의 세 자녀인 마르쿠스, 펨크, 그리고 컴퓨터 과학자인 러터 M에 의해 살아남았다. 디크스트라
컴퓨팅 과학에 대한 선구적인 기여와 영향
프로그래밍 패러다임 |
---|
비록 훈련으로 이론 물리학자가 되었지만, 디크스트라는 컴퓨터 과학의 창시 세대 중 가장 영향력 있는 인물 중 한 명이 되었다.[2][3][5][6][7][8][12][13] 컴퓨팅 과학의 많은 연구 분야의 초기 개척자로서, 그는 공학적인 관점뿐만 아니라 학문적인 관점에서도 새로운 분야를 형성하는 것을 도왔다. 그의 논문의 많은 부분이 새로운 연구 분야의 원천이다. 현재 컴퓨터 과학에서 표준이 되고 있는 많은 개념들은 처음에 Dijkstra나 그에 의해 만들어진 곰 이름들에 의해 확인되었다. 몇 가지 중요한 문제들도 처음에 그가 공식화하고 해결했다. 1994년 컴퓨터 공학 교수 천여 명을 대상으로 이 분야에서 가장 영향력 있는 학술 논문 38편의 목록을 얻기 위해 설문조사를 실시했으며, 디크스트라는 5편의 논문을 저술한 사람이다.[12][34][13] 42세의 나이로 튜링상에서는 미국인이 아닌, 영국인이 아닌, 유럽 대륙의 첫 수상자가 되었다.
학계와 산업계 모두의 지위가 포함된 컴퓨팅 과학자로서 40여 년 동안 Dijkstra는 컴파일러 구성, 운영 체제, 동시 컴퓨팅(동일 프로그래밍), 분산 컴퓨팅, 프로그래밍 패러다임 및 방법론 등 컴퓨팅 과학의 많은 분야에 수많은 공헌을 했다. 프로그래밍 언어 연구, 프로그램 설계, 프로그램 개발, 프로그램 검증, 소프트웨어 엔지니어링 원리, 알고리즘 설계 및 컴퓨터 프로그래밍과 컴퓨터 과학의 철학적 기초. 게다가 디크스트라는 컴퓨터 과학을 가르치는 데, 그리고 학문적인 컴퓨터 과학과 소프트웨어 산업의 관계에 깊은 관심을 가지고 있었다.
그의 주요 선구적 기여(아이디어, 발명 및 혁신 포함)는 다음과 같다.
- 개념, 방법, 원리 및 이론: Dijkstra-Zonneveld ALGOL 60 컴파일러(첫 번째 완전 작동 ALGOL 60 컴파일러), 호출 스택, 동시성, 동시 프로그래밍, 협력 순차 프로세스, 중요 섹션, 치명적인 포옹(데드록), 식당 철학 문제, 네덜란드 국기 문제, 결함 방지 시스템, 보안 명령어(보호된 c)ommands), 소프트웨어 아키텍처의 레이어드 구조, 추상화 수준, 다중 스레드 프로그래밍, 상호 배제(수치 또는 잠금), 생산자-배제 문제(경계 버퍼 문제), 프로그램 패밀리, 술어 변압기 의미론, 프로세스 동기화, 자체 평가 분산 시스템(자체 분석), 세마포어, 분리우려, 수면 이발사 문제, 구조 분석, 구조화 프로그래밍, 다중 프로그래밍 시스템, 무한 비결정론, 가장 약한 전제 조건 미적분학
- 알고리즘: Dijkstra 알고리즘, DJP 알고리즘, Dijkstra-Scholten 알고리즘, Dekker 알고리즘(일반화), 은행 알고리즘, 스무스소트, 션팅야드 알고리즘, 트라이컬러 마크 알고리즘, 동시 알고리즘, 분산 알고리즘, 교착 방지 알고리즘, 상호 배제 알고리즘, 자체 안정화 알고리즘
알고리즘 작업
Dijkstra의 알고리즘 작업(특히 그래프 알고리즘, 동시 알고리즘, 분산 알고리즘)은 컴퓨팅 과학의 많은 분야에서 중요한 역할을 한다. 레슬리 램포트(2002)에 따르면 다이크스트라는 1965년 CACM 논문 '동시 프로그래밍 제어의 문제해결'로 동시 및 분산 알고리즘 분야를 시작했는데, 이 논문은 상호 배제 문제를 처음 진술하고 해결한 것이다. 그것은 오늘날까지 그 분야에서 가장 영향력 있는 신문으로 남아 있다. FODC 영향력 있는 논문상을 수상하지 못한 것은 동시 알고리즘과 분산 알고리즘 사이의 인위적인 분리를 반영한다.[5] 즉, Dijkstra의 작품에는 지금까지 존재하지 않았던 분리를 의미한다."
1959년 Dijkstra는 3페이지 분량의 기사 '그래프로 연결 시 두 가지 문제에 관한 노트'에서 현재 Dijkstra 알고리즘이라고 불리는 주어진 두 노드 사이의 그래프에서 가장 짧은 경로를 찾기 위한 알고리즘을 발표했다. 향후 40년간 그것의 영향은 Mikel Thorup의 '선형 시간에 양의 정수 가중치를 갖는 간접 단일 소스 최단 경로'(1999년) 기사에서 요약된다: "1959년부터 일반 지시 그래프와 비방향 그래프에 대한 SSSP[단일 소스 최단 경로]의 모든 이론적 발전은 Dijkstra의 알고리즘에 기초해 왔다. Dijkstra의 알고리즘은 라우팅 프로토콜 OSPF와 IS-IS에서 사용되는 SPF, 최단 경로 First에서 사용된다. Dijkstra의 알고리즘에 대한 다양한 수정은 최단 경로 검색의 실행 시간을 줄이기 위해 휴리스틱스를 사용하는 많은 저자들에 의해 제안되어 왔다. 가장 많이 사용되는 휴리스틱 알고리즘 중 하나가 A* 검색 알고리즘(처음 1968년 스탠퍼드 연구소의 피터 하트, 닐슨, 버트람 라파엘에서 기술)[35]이다. 주요 목표는 검색 공간을 줄여 실행 시간을 단축하는 것이다. 디크스트라는 1956년 암스테르담의 수학 센터에서 ARMAC라는 이름의 새로운 컴퓨터의 능력을 증명하는 프로그래머로 일할 때 가장 짧은 경로 문제에 대해 생각했다. 그의 목표는 컴퓨터 이외의 사람들이 이해할 수 있는 문제와 대답(컴퓨터가 만들 것) 모두를 선택하는 것이었다. 그는 종이와 펜의 도움 없이 약 20분 만에 최단 경로 알고리즘을 설계했고, 이후 네덜란드 64개 도시의 약간 단순화된 교통 지도를 위해 ARMAC용으로 구현했다([29]알고리즘에서 도시를 나타내기에 6비트가 충분하도록). 그가 회상했듯이, 2001년에 출판된 한 인터뷰에서 다음과 같이 말했다.[36]
일반적으로 로테르담에서 그루닝엔으로 가는 가장 짧은 방법은 무엇인가? 주어진 도시에서 주어진 도시로? 약 20분만에 설계한 최단 경로 알고리즘이다. 어느 날 아침 나는 어린 약혼자와 암스테르담에서 쇼핑을 하고 있었는데, 피곤해서 우리는 카페 테라스에 앉아서 커피 한 잔을 마시며, 이렇게 할 수 있을까 하는 생각을 하고 있었는데, 그때 나는 가장 짧은 길을 위한 알고리즘을 설계했다. 내가 말했듯이 그것은 20분짜리 발명품이었다. 사실, 이 책은 3년 늦은 59년에 출판되었다. 그 출판물은 여전히 읽을 수 있고, 사실 꽤 괜찮다. 연필과 종이 없이 디자인한 것도 좋은 이유 중 하나였다. 연필과 종이를 사용하지 않고 설계할 때의 장점 중 하나는 피할 수 없는 복잡성을 거의 피할 수 없게 된다는 것을 나중에 알게 되었다. 결국 그 알고리즘은 놀랍게도 내 명성의 초석 중 하나가 되었다.
— Edsger Dijkstra, in an interview with Philip L. Frana, Communications of the ACM 53 (8), 2001.
1년 후, 그는 연구소의 다음 컴퓨터에서 일하는 하드웨어 엔지니어들로부터 또 다른 문제를 발견했다: 기계 뒷면의 핀을 연결하는 데 필요한 와이어의 양을 최소화하는 것이다. 해결책으로, 그는 Prim의 최소 스패닝 트리 알고리즘으로 알려진 알고리즘을 재발견했다. 프림의 알고리즘은 원래 체코 수학자 보이트슈 자르니크에 의해 1930년에 개발되었고,[37] 후에 로버트 C에 의해 독자적으로 재발견되어 재발행되었다. 1957년 프라이머리,[38] 1959년 디크스트라.[39] 그래서 DJP 알고리즘이라고도 한다.[40]
1961년, Dijkstra는 수학자 표기법에서 명시한 수학 식을 파싱하는 방법인 션팅 야드 알고리즘을 수학자 센트럼 보고서에서 처음 기술했다.[41] RPN(Reverse Follish 표기법) 또는 AST(추상 구문 트리)로 출력을 생성하는 데 사용할 수 있다. 이 알고리즘은 운영 방식이 철도 션팅 야드의 그것과 유사하기 때문에 션팅 야드 알고리즘으로 명명되었다. 션팅 야드 알고리즘은 일반적으로 운영자 프리덴스 파서를 구현하는 데 사용된다.
1962년 또는 1963년, Dijkstra는 n프로세스에 대한 상호배제 알고리즘(Dekker 알고리즘의 일반화)을 위한 세마포어 메커니즘을 제안했는데, 이것은 아마도 최초의 동시 알고리즘으로, 알고리즘 연구의 새로운 영역을 도입한 것이었을 것이다. 그는 또 교착상태 문제를 파악하고 교착상태를 막는 은행원의 알고리즘을 제안했다.
1974년, Dijkstra는 링 위에서 상호 배제를 위한 세 가지 자기 안정화 알고리즘을 제시했다. 이 작품은 자기안정화 개념을 가장 먼저 도입하고 실증한 작품으로 평가받고 있다.[42]
1970년대 중반, Dijkstra(다른 작가들과 함께)는 쓰레기 수집 연구에 두 가지 유용한 추상화(정화기와 수집기)를 도입했다. 돌연변이는 새로운 저장 셀의 할당을 포함하여 계산을 수행하는 프로세스를 추상화한다. 수집기는 쓰레기를 자동으로 회수하는 과정이다. 또한, 본 논문은 쓰레기 점증적 수집의 기본인 3색 표시를 공식화한다.[43][44]
1980년대 초, 디크스트라와 카렐 S. 숄텐은 분산형 시스템에서 종단 감지를 위한 Dijkstra-Scholten 알고리즘을 제안했다.
1981년, Dijkstra는 비교 기반 분류 알고리즘과 힙소트의 변형인 스무스소트를 개발했다.
컴파일러 구성 및 프로그래밍 언어 연구
디즈크스트라는 프로그래밍 언어 알골의 팬으로 알려져 있으며, 개발, 현실화, 대중화에 긴밀히 관여했던 알골 60의 첫 컴파일러를 구현한 팀에서 활동했다. Peter Naur가 'ALGOL 60의 마지막 단계의 유럽측'이라는 글에서 논의한 바와 같이, 1978년 1월 프로그래밍 언어의 역사에 관한 제1차 ACM SIGPlan 회의의 진행에서, Dijkstra는 AL을 정의하는 보고서의 발행에 정점을 찍은 여러 회의에 1958-1959년 기간에 참가했다.GOL 60언어. 다이크스트라의 이름은 최종 보고서 작성자 13명의 명단에는 등장하지 않지만,[45] ALGOL 60과 ALGOL 68을 명시, 지원, 유지하고 있는 알고리즘 언어 및 캘커리에 관한 국제정보처리연맹(IFIP) IFIP 작업그룹 2.1의 공식 회원이었다.[46] 그는 결국 위원회를 탈퇴했는데, 이는 그가 다수의 의견에 동의하지 못했기 때문인 것으로 보인다. 그래도 수학자 센트럼(암스테르담)에서 그는 최초의 ALGOL 60 컴파일러인 자프 조네벨트와 공동으로 글을 썼다. 1960년 8월까지, 그와 Zonneveld는 다른 그룹에 의해 컴파일러가 생산되기 1년 이상 전에 최초의 완전한 ALGOL 60 컴파일러(Electricogramica X1 컴퓨터의 경우)[14]를 가동했다. 컴파일러에 협력한 디크스트라와 조네벨트는 프로젝트가 완료될 때까지 면도를 하지 않기로 합의했다. Zonneveld는 그 직후 면도를 했지만 Dijkstra는 평생 수염을 유지했다.[47]
알골은 미국과 유럽 위원회들의 협력의 결과였다. ALGOL 60(ALGOrithmic Language 1960의 줄임말)은 ALGOL 계열의 컴퓨터 프로그래밍 언어의 일원이다. 그것은 ALGOL 58에서 이어졌고 그 뒤를 따르는 많은 언어에 영감을 주었다. 그것은 BCPL, B, Pascal, Simula, C를 포함한 많은 다른 언어들을 낳았다.[48] 알골 60은 정교하게 설계된 컴퓨터 언어였고 지금까지 알려지지 않은 수많은 구현 과제를 제공했다. Bjarne Strustrup은 "알골60의 한 가지 문제는 그것을 어떻게 구현해야 할지 아무도 모른다는 것이었다"[49]고 지적했다. Algol 60 구현에서 새로운 주요 과제는 데이터의 런타임 할당 및 관리였습니다. 1960년에 Dijkstra와 Zonneveld는 활성화 기록의 런타임 스택을 사용하여 재귀적 절차가 어떻게 실행될 수 있는지, 그리고 소위 디스플레이를 사용하여 정적으로 둘러싸인 범위에서 식별자에 효율적으로 접근하는 방법을 보여주었다.[50] ALGOL 60 컴파일러는 새로운 방법을 사용하여[51] 재귀에 대한 지원을 한 최초의 사람 중 하나이다. 1962년에 처음 출판된 Dijkstra의 단편집 Algol 60 Programming의 Primer는 몇 년 동안 이 언어의 표준 참고서였다.
프로그래밍 방법론의 역할과 구조화된 프로그래밍 운동의 탄생
1965년에 Dijkstra는 구조화된 프로그래밍에 대한 그의 유명한 노트를 썼고, 프로그래밍을 공예와 대조되는 훈련으로 선언했다. 또한 1965년에 Hoare는 데이터 구조에 관한 중요한 논문을 발표했다. 이러한 생각들은 새로운 프로그래밍 언어, 특히 파스칼에 깊은 영향을 끼쳤다. 언어는 이러한 생각을 표현하는 수단이다. 구조화된 프로그래밍은 구조화된 프로그래밍 언어에 의해 지원되었다.
— Niklaus Wirth, IEEE Annals of the History of Computing (2008)[3]
Dijkstra의 우상화 현상에 의해 시작된 프로그래밍의 관점에서의 혁명은 프로그램 구성에 대한 체계적이고 이성적인 접근을 주창하는 구조화된 프로그래밍으로 알려진 운동을 이끌었다. 구조화된 프로그래밍은 객체 지향 프로그래밍을 포함한 프로그래밍 방법론에서 그 이후 행해진 모든 것의 기초가 된다.
— Bertrand Meyer, Touch of Class: Learning to Program Well with Objects and Contracts (2009)[25]
1950년대부터 1960년대까지의 컴퓨터 프로그래밍은 학문적 훈련으로 인정받지 못했고 성숙한 과학과는 달리 이론적 개념이나 코딩 시스템이 없었다. 프로 활동으로서의 프로그래밍은 그 몇 년 동안 잘 이해되지 않았다. 1960년대 후반에 컴퓨터 프로그래밍은 위기에 처했다. 소프트웨어 위기는 컴퓨터 과학의 초기에 필요한 시간에 유용하고 효율적인 컴퓨터 프로그램을 쓰기 어렵다는 이유로 사용되는 용어다. 소프트웨어 위기는 컴퓨터 파워의 급속한 증가와 다루어질 수 있는 문제의 복잡성 때문이었다. 소프트웨어의 복잡성이 증가함에 따라, 기존의 방법이 불충분했기 때문에 많은 소프트웨어 문제가 발생하였다. 소프트웨어 위기라는 용어는 1968년 독일 가미슈에서 열린 제1차 NATO 소프트웨어 엔지니어링 회의 때 일부 참석자가 만들었다.[52][53][54] 그의 1972년 ACM 튜링 어워드 강연은 이와 같은 문제를 언급한다: "소프트웨어 위기의 주요 원인은 기계가 몇 차례 더 강력해진 것이다! 단도직입적으로 말하자면, 기계가 없는 한 프로그래밍은 전혀 문제가 되지 않았다; 우리가 약한 컴퓨터를 몇 대 가지고 있을 때 프로그래밍은 가벼운 문제가 되었고, 지금 거대한 컴퓨터를 가지고 있을 때 프로그래밍은 똑같이 거대한 문제가 되었다."[30]
Dijkstra는 1950년대에 기계 코드로 광범위하게 프로그램되어 있었지만, 고차원 언어에서 GOTO 문장의 빈번한 사용은 대개 나쁜 구조의 징후라는 결론에 도달했다. 1968년에 그는 사설 논문 "GO TO 성명에 반대하는 사례"[55]를 썼고, 이 논문은 CACM에 편지로 발표되었다.[56] 니클라우스 위스 편집장은 이 편지에 '해로 간주되는 Go To Statement'라는 제목을 붙였는데, 이 문구는 "고려된 유해성"이라는 문구를 컴퓨터에 도입했다.
Dijkstra는 많은 고급 프로그래밍 언어에서 발견되는 프로그래밍 문 GOTO가 주요 오류 발생원이므로 제거해야 한다고 주장했다. 이 편지는 프로그래밍계에 큰 논쟁을 불러일으켰다. 일부는 좋은 프로그래밍을 GO TO의 제거와 동일시하는 데까지 이르렀다. Dijkstra는 "구조화된 프로그래밍에 관한 노트"라는 글에서 토론, 또는 심지어 GO TO 성명에 대한 언급도 거부했다. 논쟁은 사그라진 지 오래다; 프로그래밍 언어는 GO TO의 대안을 제공하며, 오늘날에는 그것을 자유자재로 사용하는 프로그래머는 거의 없으며, 대부분은 전혀 사용하지 않는다.[14]
Dijkstra의 논문은 if-ten-else 문장과 while-loop과 같은 훈련된 상위 수준의 구조에서만 허용된다면 선형 제어 흐름으로부터의 이탈이 더 명확하다는 것이었다. 이 방법론은 토니 호어, 올레 조한 달과 공동으로 그의 1972년 저서의 제목인 구조화된 프로그래밍 운동으로 발전되었다. 많은 사람들에 의해 컴퓨터 프로그래밍 역사상 첫 번째 중요한 움직임으로 여겨지는, 구조화된 프로그래밍은 1970년대에 새로운 프로그래밍 정설이 되었다.[57][58][59]
구조화된 프로그래밍은 종종 "goto-less 프로그래밍"으로 간주된다. 그러나 베르트랑 마이어가 지적한 바와 같이, [디크스트라, 달, 호아레에 의한 구조화된 프로그래밍]이라는 주제에 대한 첫 번째 책에서도 알 수 있듯이, 구조화된 프로그래밍은 제어 구조와 goto 이상의 것에 관한 것이다. 프로그래밍은 수학적 엄격함에 근거한 과학 분야로 간주되어야 한다는 것이 주된 메시지라고 말했다.[25] 프로그래밍 패러다임으로서, 특히 1970년대와 1980년대에 구조화된 프로그래밍은 파스칼,[2][3][60] C, 모둘라-2, 그리고 에이다와 같은 많은 현대 프로그래밍 언어의 탄생에 큰 영향을 주었다.[61] 구조화된 프로그래밍의 개념을 통합한 포트란 77 버전은 1978년에 출시되었다. C++ 언어는 인기 있는 구조화된 프로그래밍 언어 C의 상당히 확장되고 강화된 버전이었다(C 기반 프로그래밍 언어 목록 참조). C++는 보다 전통적인 구조화 언어에서 발전되었기 때문에 순수한 객체 지향 프로그래밍 언어라기보다는 '하이브리드 언어'이다.[62]
Harlan Mills는 그의 기사 "구조화된 프로그래밍: Retrospect and Present" (1986)에서 "Edsger W. Dijkstra의 1969년 구조화된 프로그래밍 기사는 소프트웨어 개발에서 인간의 기대와 성과를 근본적으로 변화시킨 프로그래밍 기법에 10년간 집중된 집중을 촉진시켰다. 이 10년 동안 집중하기 전에, 프로그래밍은 프로그램으로서 작동하기 위해 컴퓨터 사용 설명서를 쓰는 사적인 퍼즐 해결 활동으로 간주되었다. 이 10년 후 프로그래밍은 구조조정 명세서를 프로그램으로 만드는 공공 수학 기반의 활동으로 간주될 수 있다. 이전에는 프로그램을 전혀 실행하지 않고 디버깅하여 올바른 작업을 수행하는 것이 과제였습니다. 그 후에는 디버깅이 거의 없거나 전혀 없는 상태에서 프로그램이 실행되거나 제대로 수행될 것으로 예상할 수 있다. 이전에는, 어떤 큰 규모의 프로그램도 오류가 없을 수 없다는 것이 일반적인 지혜였다. 그 후, 많은 상당한 규모의 프로그램들이 1년 이상 실행되었고 오류가 감지되지 않았다. 이러한 기대와 성과는 산업관행의 관성 때문에 보편적이지 않다. 그러나 소프트웨어 개발의 근본적인 변화를 예고하기 위해 잘 확립되어 있다."
에드윈 D가 편집한 컴퓨터 과학의 간결한 백과사전(2004년)이다. 릴리는 "구조화된 프로그래밍의 주요 기여는 두 가지였다. 즉, 프로그래밍 기법을 예술과 과학의 어떤 것으로 격상시키는 것과 세심하게 구조화된 프로그램이 컴퓨터만이 아니라 인간에 의해 읽힐 만한 충분한 문학적 가치를 지닌 창작물이 될 수 있다는 것이다."[63]라고 말한다.
소프트웨어 엔지니어링의 초기 프로그램 설계 및 개발에 관한 연구
프로그램 방법론에 대해 데이 크스트라의 생각(특히 구조화된 프로그래밍 운동)소프트웨어 공학(특히 소프트웨어 설계와 개발)의 전문적인 규율의 탄생과 발전을 위한 프로그래머와 관리를 점점 더 복잡한 소프트웨어 프로젝트를 구성할 수 있도록 기초를 닦는 것을 도왔다.[64][65] 1960년대 후반 Dijkstra는 프로그램 가족의 개념을 토론했다. 1970년대 중반 데이비드 파르나스 등은 그 생각을 명확히 하고 소프트웨어 공학 원리에 적용하는 방법을 보여 주었다.
구조화된 프로그래밍 운동의 상승은 소프트웨어 설계에 적용되는 많은 다른 구조화된 접근법으로 이어졌다. 구조화 분석과 구조화 설계의 기법은 구조화된 프로그래밍 개념과 기법의 산물이며 모듈 설계에 대한 초기 아이디어의 산물이다. 모듈화의 원리는 래리 콘스탄틴의 결합(모듈 간 최소화)과 응집(모듈 내에서 최대화) 개념, 데이비드 파르나스의 정보 은닉 기법, 추상 데이터 유형 등에 의해 강화되었다.[66] 구조화 설계, 잭슨의 구조화 프로그래밍, 로스의 구조화 분석 및 설계 기법(SADT), 유돈의 구조화 방법, 구조화 시스템 분석 및 설계 방법(SSADM), 제임스 마틴의 정보 기술 엔지니어링 등 구조화 개념을 채택한 많은 도구와 방법이 개발되었다. 소프트웨어 메트릭스 분야는 종종 1970년대 소프트웨어 공학에 대한 구조화된 프로그래밍 운동의 직접적인 영향이라고 여겨진다.
소프트웨어 엔지니어링의 기본 원칙 중 하나인 우려의 분리(SoC)는 컴퓨터 프로그램을 별개의 섹션으로 분리하기 위한 설계 원리로서, 각 섹션이 별도의 우려를 다루도록 한다. 우려의 분리라는 용어는 Dijkstra가 1974년 논문 "과학적 사고의 역할에 대하여"[67]에서 만들었다.
운영체제연구
1960년대 아인트호벤에 있는 디크스트라와 그의 동료들은 명확하게 식별된 추상화 계층으로 조직된 TE(Technische Hogeschool Eindhoven의 서열) 운영 체제를 설계하고 구현했다.[68] 1968년 이 주제에 대한 그의 기사는 운영체제의 후속 설계를 위한 기초를 제공했다. IEEE 컴퓨터 소사이어티의 데이비드 앨런 그리어는 "우리는 네덜란드 컴퓨터 과학자 에드거 디크스트라가 IEEE 컴퓨터 소사이어티/ACM 공동 회의에서 발표한 1967년 논문을 통해 컴퓨터 시스템을 층층이 쌓는 아이디어를 추적한다"고 쓰고 있다. 본 논문 이전에, 기술자들은 소프트웨어를 어떻게 구성할 것인가 하는 문제에 대해 고심했었다. 프로그램의 초기 예를 보면 컴퓨터 소사이어티의 전자도서관에서 많은 것을 볼 수 있는데, 그 시대의 대부분의 코드가 복잡하고 읽기 어렵고 수정하기 어렵고 재사용이 어렵다는 것을 알 수 있을 것이다. 디크스트라는 1967년 논문에서 어떻게 소프트웨어를 레이어로 구성할 수 있는지 설명하고 5개의 레이어를 사용하는 간단한 운영체제의 예를 들었다. 그는 이 시스템이 자신의 아이디어를 현실적으로 시험하는 것이 아닐 수도 있다고 인정하면서도 "프로젝트가 많을수록 구조화가 더욱 필수적"이라고 주장했다. 복잡성을 제어하기 위해 레이어를 사용한다는 생각은 소프트웨어 아키텍처의 주체가 되었다. 우리는 그것을 여러 형태로 보고 많은 문제에 적용시킨다. 우리는 그것을 객체 지향 프로그래밍의 계층 구조와 서비스 지향 아키텍처(SOA)의 구조에서 본다. SOA는 컴퓨터 과학에서 비교적 최근에 레이어링을 적용한 것이다. 그것은 2007년에 비즈니스 시스템, 특히 인터넷을 실질적으로 사용하는 분산형 시스템의 복잡성을 제어하는 수단으로 설명되었다. Dijkstra의 시스템 개발 계획과 마찬가지로, 그것의 레이어링 시스템은 SOA 솔루션 스택 또는 S3라고 불린다. S3의 9개 계층은 1) 운영 체제, 2) 서비스 구성요소, 3) 서비스, 4) 비즈니스 프로세스, 5) 소비자 조치, 6) 시스템 통합, 7) 품질 관리 및 보증, 8) 정보 아키텍처, 9) 시스템 거버넌스 및 정책이다."[69]
Dijkstra는 소프트웨어의 전반적인 복잡성을 줄이기 위해 시스템 설계를 레이어로 구성했다. 비록 '건축학'이라는 용어가 소프트웨어 설계를 기술하는 데 아직 사용되지 않았지만, 이것은 소프트웨어 아키텍처의 첫 번째 사례로 간주되었다.[70] 그것은 모든 전문 프로그래머의 작업 어휘의 일부가 된 많은 설계 원리들을 도입했다: 추상화 수준, 계층별 프로그래밍, 세마포어, 그리고 협력 순차 프로세스. 1983년 1월 ACM 25주년 기념호에 TH 운영체제에 대한 그의 원본 논문이 다시 게재되었다. 소개로, 편집장은 "이 프로젝트는 다단계 시스템 아키텍처에 대한 긴 연구를 시작했는데, 이는 계층적 모듈화가 큰 시스템을 구성하는 강력한 접근방식이기 때문에 오늘날까지 계속되고 있다"[14]고 말한다.
동시 컴퓨팅(동시 프로그래밍)
수 년 동안 동시 프로그램 실행이 고려되어 왔지만, 동시성의 컴퓨터 과학은 상호 배제 문제를 도입한 Edsger Dijkstra의 1965년 논문으로 시작되었다. (...) 연구되어야 할 두 번째 기본적인 동시 프로그래밍 문제는 생산자와 소비자 동기화였다. 이러한 형태의 동기화는 초기 컴퓨터에서는 하드웨어 수준에서 사용되었지만, 1968년까지 이 공식에서 발표되지는 않았지만 1965년에 Dijkstra에 의해 처음으로 동시성 문제로 확인되었다.(...) 분산된 시스템 후에 동시 알고리즘의 다음 주요 단계는 내결함성 연구였다. 내결함성에 대한 첫 번째 과학적인 연구는 Dijkstra의 1974년 논문 자기 안정화에 관한 것이었다. 그러나, 때때로 시대를 앞선 일에서 일어나는 것처럼, 그 논문은 거의 주목을 받지 못했고 본질적으로 10년 동안 잊혀졌다. (...) 그 후 수십 년 동안 특히 분산된 시스템에서 동시성에 대한 관심이 크게 증가해 왔다. 이 분야의 기원을 돌아보면 눈에 띄는 것은 이 역사를 헌신하는 에드거 디크스트라가 연기하는 근본적인 역할이다.
— Leslie Lamport, Turing Lecture: The Computer Science of Concurrency: The Early Years (June 2015)[6]
1965년 디즈크스트라는 한 페이지 분량의 논문에서 n개 프로세스에 대한 '상호 배제 문제'를 소개하고 이에 대한 해법을 논의했다. 그것은 아마도 최초의 동시 알고리즘이었을 것이다.[6][16] '중요한 섹션'의 개념은 지금쯤 이 논문에서도 소개되었다. 동시 컴퓨팅 분야의 선구자인 Per Brinch Hansen은 Dijkstra의 협력 순차 프로세스(1965)를 동시 프로그래밍의 첫 번째 고전으로 간주한다. 브린치 한센이 지적했듯이, '다이크스트라는 그 논문과 함께 추상적인 동시 프로그래밍을 위한 개념적 토대를 마련한다'는 것이다.[72]
1968년에 Dijkstra는 동시 프로그래밍의 분야를 창안한 70페이지 분량의 에세이인 그의 논문 '순차적 과정 협력'을 발표했다. 그는 그 안에서 상호배제(mutex)의 개념과 만족스러운 해결책이 만족해야 할 기준을 논의했다. 그는 또한 테오도로스 데커에 의해 두 가지 과정에 대해 상호배제 문제에 대한 최초의 알려진 올바른 해결책을 포함시킴으로써 1965년 논문에서 배제된 역사적 관점을 바로잡았다. 이후 Dijkstra는 n개의 프로세스에 대한 Dekker의 솔루션을 일반화했다.[73][74] 또한, 그는 동시 프로세스를 위한 첫 번째 동기화 메커니즘인 [75]세마포어를 P와 V의 두 운영과 함께 제안했다. 그는 또 '데드락 문제'(그곳에서 '죽음의 포옹 문제'라고 부른다)[76]를 파악하고 교착상태를 막는 우아한 '뱅크의 알고리즘'을 제안했다. 교착상태에 빠진 탐지와 방지는 동시 프로그래밍 분야에서 끊임없는 연구 문제가 되었다.
외식철학자 문제는 동시 알고리즘 설계에서 동기화 문제와 이를 해결하기 위한 기법을 설명하기 위해 자주 사용되는 예제 문제다. 그것은 원래 1965년에 디크스트라에 의해 학생 시험 연습으로 공식화되었는데, 테이프 드라이브 주변기기에 대한 접근을 위해 경쟁하는 컴퓨터 측면에서 제시되었다. 곧이어 토니 호아레는 이 문제를 현재 공식화했다.[77] 잠자는 이발사 문제도 디크스트라 탓으로 돌린다.
미셸 레이날(2012년)은 상호배제 문제, 프로세스 개념, 세마포어 객체, 가장 약한 전제조건의 개념, 그리고 (다른 많은 공헌 가운데) 보호 명령어 등을 도입한 E.W. 디즈크스트라(1965)의 초기 작품부터 동기화는 더 이상 속임수의 카탈로그가 아니라 컴퓨터 과학과의 영역이다. 그 자체의 개념, 메커니즘, 그리고 결과가 많은 영역에 적용될 수 있는 기술들. 이것은 프로세스 동기화가 컴퓨터 과학 교과과정의 주요 주제여야 한다는 것을 의미한다."[78]
존 W. 맥코믹 외 연구진(2011년)은 "기본 하드웨어와 무관하게 병렬 프로그램을 작성하기 위한 수단으로서 동시 프로그램 개념은 Edsger Dijkstra(1968년)에 의해 처음 도입되었다"고 지적한다. 모티 벤-아리(1982)는 디즈크스트라의 사상을 3개의 문장으로 우아하게 요약했다: '전류 프로그래밍은 잠재적 병렬주의를 표현하고 그로 인한 동기화 및 통신 문제를 해결하기 위한 프로그래밍 표기법과 기법에 주어진 이름이다. 병렬의 구현은 컴퓨터 시스템(하드웨어와 소프트웨어)에서 본질적으로 동시 프로그래밍과는 무관한 주제다. 동시 프로그래밍은 구현 세부 사항에 얽매이지 않고 병렬을 연구할 수 있는 추상적인 설정을 제공하기 때문에 중요하다.'[79]고 말했다.
분산 컴퓨팅(분산 프로그래밍)
Dijkstra는 분산 컴퓨팅의 원리에 대한 연구의 초기 개척자 중 한 명이었다.[27] Dijkstra Prize의 스폰서들은 "다른 어떤 개인도 분산 컴퓨팅의 원칙에서 연구에 더 큰 영향을 끼치지 않았다"[27]고 인정하고 있다. 그의 논문 중 일부는 그 분야를 확립한 논문으로 여겨지기도 한다. Dijkstra의 1965년 논문인 동시 프로그래밍 제어 문제 해결은 상호 배제 문제에 대한 올바른 해결책을 처음으로 제시한 것이었다. 레슬리 램포트는 이 작품이 "아마도 PODC가 존재하는 이유일 것"이며 "동시 알고리즘과 분산 알고리즘의 분야를 시작하게 된 것"이라고 쓰고 있다.[5]
특히 그의 논문 '분산통제에도 불구하고 자기안정화 시스템'(1974)은 자기안정화의 하위 분야를 시작했다. 내결함성 시스템에 대한 최초의 과학적인 조사로도 검토되고 있다.[6] 다이크스트라의 논문은 레슬리 램포트가 1983년 ACM(분산 컴퓨팅 원리 심포지엄)에서 초청 강연할 때까지 널리 알려지지 않았다. 램포트는 디크스트라의 분산 시스템 자체 안정화에 관한 연구 보고서에서 이를 '내결함성에 관한 연구의 이정표'이자 '연구에 매우 비옥한 분야'[80]로 간주하고 있다.
공식 사양 및 검증
1970년대부터 디크스트라의 주된 관심사는 형식적인 검증이었다. 1976년 디크스트라는 프로그램의 체계적 개발 방법과 정확성 증명서를 함께 제시한 정석 책인 프로그래밍의 규율을 출판했다. 그의 설명회에서 그는 '수호된 명령어'를 사용했다. 비결정론에 의존하는 언어는 가장 취약한 전제조건 의미론과 제안된 개발방식이 오늘날까지 현장에 상당한 영향을 미쳤다. 원래 랄프-조한 백이[81] 제안하고 캐롤 모건이 개발한 정제 미적분은 디크스트라의 가장 약한 전제 조건인 미적분의 연장선상으로 프로그램 문장이 술어 변압기로 모델링된다.[82][83]
1984년, 프로그래밍에 대한 이러한 접근방식에 더 많은 지원을 추가하기 위해, 그는 빔 파이젠과 공동으로 컴퓨터 과학 1학년 학생들을 위한 입문 교재를 출판했다. 네덜란드어로 처음 출판된 이 책에는 Een methode van programren이라는 제목이 붙었다. 영어판은 1988년 '프로그래밍의 방법'으로 등장했다.
컴퓨터 과학과 컴퓨터 프로그래밍의 본질에 관하여
컴퓨터 과학과 프로그래밍에 대한 디크스트라의 많은 의견들이 널리 퍼졌다. 예를 들어, "2개 이상, a를 사용하라"(루프를 사용할 때 엄지손가락으로 하는 규칙)는 프로그래밍 구절이 그에게 귀속되기도 한다.[84]
그는 프로그래밍이 본질적으로 너무 복잡해서 그것을 성공적으로 관리하기 위해서는 프로그래머들이 가능한 모든 속임수와 추상화를 이용할 필요가 있다는 주장을 처음으로 제기했다.
Dijkstra는 컴퓨터 공학에 대한 공학적인 견해의 가장 유명한 반대자 중 한 명이었다. 피터 나우르나 크리스텐 니가르드처럼 디크스트라는 말은 바로 '컴퓨터 과학'이라는 말을 싫어했다. 디크스트라가 지적했듯이 컴퓨터 과학은 더 나은 이름을 가질 가치가 있다. 그는 이것을 '컴퓨팅 과학'이라고 부를 수 있다고 제안한다. 컴퓨터, 즉 컴퓨터 기술 대신에, 디크스트라는 컴퓨터 과학이 복잡성을 정복하기 위해 사용하는 추상적인 메커니즘을 강조하고 싶었다. 컴퓨터 과학의 추상성을 표현할 때 그는 이렇게 썼다.
훨씬 더 오래 서 있는 혼란은 준비되지 않은 사람들이 기계를 설계하고, 만들고, 유지해야 할 전자 기술자들을 포함시켰다는 사실에서 비롯되었다. 그 일은 사실 당대의 전자 기술을 넘어섰고, 그 결과 물리적 장비를 어떻게 좀 더 작동 상태로 유지하고, 또 어떻게 하면 유지시킬 수 있을까 하는 문제가 초창기에 전방위적인 관심사가 되었다. 그 결과, 주로 미국에서 일찍부터 '컴퓨터 과학'이라고 불리게 되었는데, 이는 사실상 수술을 '칼 과학'이라고 부르는 것과 같다. 그리고 그것은 컴퓨터 과학이 기계와 그 주변 장비에 관한 것이라는 사실을 사람들의 마음에 확실히 심어주었다. 쿼드 논 [라틴어: "어느 것이 사실이 아니니"] 우리는 이제 전자 기술이 물리적 장비보다 더 이상 컴퓨팅에 기여할 수 없다는 것을 안다. 우리는 이제 프로그램 가능한 컴퓨터가 와이어 한 개를 바꾸지 않고도 상상할 수 있는 어떤 메커니즘도 실현하기 위한 아주 편리한 장치라는 것을 알고 있으며, 컴퓨팅 과학의 핵심 도전은 그러므로 우리가 우리 자신의 제조의 복잡함 속에서 잃어버리지 않고 상상할 수 있는 개념적인 것, 즉 어떤 (추상적인) 메커니즘이라는 것을 알고 있다..[85]
디크스트라는 '겸손한 프로그래머'(1972년)에서 "프로그램을 만드는 것이 우리의 [컴퓨터 과학자들]의 일이 아니라, 원하는 행동을 보여줄 컴퓨팅 클래스를 설계하는 것이 우리의 일이라는 것을 잊어서는 안 된다"고 썼다.
Dijkstra는 또한 학문적인 컴퓨터 과학의 산하에 소프트웨어 공학을 포함시키는 것에 반대했다. 그는 "경제학은 '참담한 과학'으로 알려져 있는 만큼 소프트웨어 공학은 목표가 자기 모순적이어서 목표에 접근조차 할 수 없어 망한 '불운한 규율'로 알려야 한다"고 썼다. 그리고 "소프트웨어 엔지니어링은 '할 수 없는 경우 프로그램하는 방법'이라는 헌장으로 받아들였다.'"[86]
성격과 작업 스타일
단순함은 큰 미덕이지만 그것을 성취하기 위해서는 노력과 그것을 감상하기 위해서는 교육이 필요하다. 설상가상으로 복잡성이 더 잘 팔린다는 겁니다. 컴퓨터 산업만이 그 쓰라린 진실을 발견한 것은 아니다: 학계도 그렇다. 처음부터 끝까지 확연한 강의를 하면, 청중들은 "그것들은 모두 다소 시시했다, 그렇지 않은가?"라는 강의실을 떠나면서 속이고 중얼거리는 느낌을 받는다.
— E.W. Dijkstra, "On the Nature of Computing Science" (EWD896), August 1984
네덜란드의 작은 마을에서 잘 알려지지 않은 컴퓨터 과학자를 눈치채지 못한 M.I.T.를 탓할 수는 없다.
컴퓨터 과학계에서 디크스트라는 "캐릭터"로 잘 알려져 있다. 그는 저서 『프로그래밍의 규율』(1976)의 서문에서 다음과 같이 진술하였다. "도서관의 부재에 대하여 나는 설명도 사과도 하지 않는다." 사실 그의 글과 책에는 대부분 참고자료가 전혀 없다.[16] 참고문헌에 대한 이러한 접근방식은 일부 연구자들에 의해 개탄되었다. 그러나 디크스트라는 자신의 자립심을 보존하기 위해 이런 방법을 택했다.
일생 동안 대학 교수로서, Dijkstra는 가르침은 단지 필요한 활동일 뿐만 아니라 진지한 연구 노력이라고 보았다.[14] 그의 가르치는 방식은 파격적이었다.[89] 그의 강의 문체는 특이하다고 묘사되어 왔다. 강의를 할 때 문장 사이에 긴 공백이 생기는 것은 영어가 디크스트라의 모국어가 아니기 때문이다. 그러나 그 일시정지 또한 그가 발로 차서 생각할 수 있는 하나의 방법이었고 그는 강의에 종사하는 동안 빠르고 깊은 사상가로 여겨졌다. 오스틴에서 그의 학생들을 위한 수업은 컴퓨터 공학과는 거의 관련이 없었지만, 그들은 수학적 증거의 발표를 다루었다.[16] 매 학기 초에 그는 학생들의 이름을 외우기 위해 각각의 학생들의 사진을 찍곤 했다. 그는 교과서가 준비되는 동안 교과서를 전혀 따라가지 않았다. 강의할 때, 그는 머리 위 포일을 사용하기보다는 칠판에 분필로 교정본을 쓰곤 했다. 그는 학생들에게 아이디어를 제안하도록 초대했는데, 그 후 그는 그것을 탐구하거나, 그들이 그의 주의의 일부를 위반했기 때문에 탐구하기를 거부했다. 그는 도전적인 숙제 문제를 내주었고, 학생들의 해결책을 철저히 연구했다. 그는 마지막 시험을 일주일 내내 구두로 치렀다. 각각의 학생들은 디크스트라의 사무실이나 집에서 검사를 받았고, 시험은 몇 시간 동안 계속되었다.[14]
사회가 요구하는 것을 제공하는 것이 대학의 과제가 아니라 사회가 필요로 하는 것을 주는 것이다. [사회가 요구하는 것은 일반적으로 이해되고, 당신은 그것을 위해 대학이 필요하지 않다; 대학은 다른 누구도 제공할 수 없는 것을 제공해야 한다.]
— E.W. Dijkstra, "Answers to questions from students of Software Engineering" (EWD1305), November 2000
Dijkstra는 또한 직업에 대한 사람들의 능력을 평가하는 그의 방식에서 매우 독창적이었다. 1990년 블라디미르 리프시츠가 취업 면접을 위해 오스틴에 왔을 때, 디크스트라는 그에게 퍼즐을 주었다. 블라디미르는 그것을 해결했고 그때부터 오스틴에서 일하고 있다.[16]
소프트웨어의 많은 기술을 발명했음에도 불구하고, 그는 수십 년 동안 자신의 일에 컴퓨터를 사용하는 것을 삼갔다. UT 동료들의 격려에 굴복해 매킨토시 컴퓨터를 손에 넣은 뒤에도 e메일과 월드 와이드 웹 검색에만 사용했다.[90] Dijkstra는 결코 컴퓨터를 사용해서 기사를 쓰지 않았다. 그는 타자기와 나중에 몽블랑 펜에 의존하는 것을 더 좋아했다.[16] 디크스트라가 가장 좋아하는 필기는 몽블랑 마이스터슈튀크 만년필이었다. 그는 다른 펜들을 반복해서 시도했지만 몽블랑을 대체한 사람은 없었다.
그는 거친 초안이나 재작성, 중요한 편집 없이 편지나 글을 쓸 수 있어야 한다고 믿고 워드프로세서를 쓸 필요가 없었다. 그는 펜을 종이에 붙이기 전에 모든 것을 머릿속에서 풀곤 했는데, 한번은 그가 물리학 학생이었을 때 레이든의 거리를 거닐면서 그의 머릿속의 숙제 문제를 해결하겠다고 언급한 적이 있다.[14] 디크스트라의 출판물은 대부분 그 혼자 쓴 것이다. 그는 비서가 한 명도 없었고 혼자서 모든 서신을 처리했다.[16] 동료들이 스프링거-베를랙이 발표한 60세 생일을 맞아 페스트슈리프트를 준비하자 그는 수기로 쓴 편지로 61명의 기부자들에게 각각 따로 감사의 뜻을 표하는 수고를 했다.[16]
디크스트라의 경력 내내 그의 작품은 우아함과 경제성이 특징이었다.[16] 다작 작가인 디크스트라는 (특히 수필가로서) 1,300개 이상의 논문을 썼으며, 많은 논문들이 그의 정확한 대본에 손으로 쓰여졌다. 그들은 수필과 비유, 동화 그리고 경고, 포괄적인 설명과 교육학적 구실이었다. 대부분은 수학과 컴퓨터 과학에 관한 것이었고, 다른 것들은 방문한 사람들과 장소들에 관한 것보다 그들의 저자에 대해 더 많이 드러내는 여행 보고서였다. 각각의 논문을 복사하여 다른 제한된 과학자 집단에 복사하여 전달하는 것이 그의 습관이었다.[91] 소박함에 대한 그의 연애는 어린 나이에 어머니의 지도 아래 이루어졌다. 그는 삼각법이 어려운 주제인지 어머니께 물어본 적이 있다고 말한 적이 있다. 그녀는 그가 모든 공식들을 배워야 하고, 더 나아가 그가 무언가를 증명하기 위해 다섯 줄 이상을 요구한다면, 그는 잘못된 길을 가고 있다고 대답했다.[92]
디크스트라는 재치, 웅변, 무례함, 갑작스러움, 동료 전문가들에 대한 종종 잔인함 등으로 유명했으며, "기계들이 생각할 수 있는가 (…)"는 그의 말에서 "잠수함이 헤엄칠 수 있는가"[93]라는 질문만큼이나 적절한 말이다. 연구 주제를 어떻게 선정하느냐고 물었던 유망한 연구자에게 그가 조언한 것은 '너만이 할 수 있는 일만을 하라'[14]는 현명한 말이었다. 디크스트라는 동료들과 교류할 때 목소리에 대한 비판과 사회성이 결여된 것으로도 알려져 있다. 거침없고 비판적인 선지자답게 베이직의 가르침에 강하게 반대했다.[94]
디크스트라는 그의 보다 재치 있는 수필에서 자신이 회장으로 재직했던 가상의 회사를 묘사했다. 이 회사는 소프트웨어 회사들이 컴퓨터 프로그램 생산을 상품화한 것과 같은 방식으로 수학 이론의 생산을 상업화했다고 그가 상상했던 회사인 Mathical, Inc.로 불렸다. 그는 수학 주식회사의 많은 활동과 도전을 발명했고 그것들을 EWD 시리즈의 여러 논문에 기록하였다. 이 상상의 회사는 리만 가설에 대한 증거를 만들었지만, 리만 가설을 가정하여 결과를 증명했던 수학자들로부터 로열티를 모으는 데 큰 어려움을 겪었다. 그 증거 자체가 영업비밀이었다.[95] 회사의 증빙서류 중 다수가 문밖으로 뛰쳐나왔고, 그 후 회사의 노력의 상당 부분을 유지관리에 써야 했다.[96] 더 성공적인 노력은 피타고라스의 정리를 위한 표준 증명이었는데, 이 증명서는 100개가 넘는 양립할 수 없는 현존하는 증명들을 대체했다.[97] Dijkstra는 수학을 "사상 가장 흥미진진하고 비참한 사업"이라고 묘사했다.[95] EWD 443(1974)은 그의 가상 회사가 세계 시장 점유율 75% 이상을 차지하고 있다고 설명한다.[98][99]
EWD 원고
디크스트라는 만년필로 조심스럽게 원고를 작곡하는 습관으로 잘 알려져 있었다. 이 원고는 Dijkstra가 자신의 이니셜인 EWD로 번호를 매겼기 때문에 EWDs라고 불린다. 디크스트라 본인에 따르면 EWD는 암스테르담의 수학 센터에서 아인트호벤 공과대학(당시 테크니쉬 호게스쿨 아인트호벤)으로 옮기면서 시작됐다. 디크스트라는 아인트호벤에 간 뒤 1년 넘게 작가 블록을 경험했다. Dijkstra는 그의 동료들에게 새로운 EWD의 복사물을 배포했다. 많은 수신자들이 복사를 하고 사본을 전달했기 때문에, EWD는 국제 컴퓨터 과학계 전체에 퍼졌다. 주제는 컴퓨터 과학과 수학이었고, 여행 보고서, 편지, 연설 등이 포함되어 있었다. 이 짧은 기사들은 40년에 걸쳐 있다. 1972년 이후에 등장한 거의 모든 EWD는 수기로 작성되었다. 15페이지를 넘는 경우는 드물고 연속적으로 번호가 매겨진다. 마지막 1318번은 2002년 4월 14일이다. 컴퓨터 과학 내에서 그것들은 EWD 보고서 또는 간단히 EWD 보고서로 알려져 있다. 1300개 이상의 EWD가 스캔되었고, 점점 더 많은 수가 검색을 용이하게 하기 위해 기록되었으며, 텍사스 대학의 Dijkstra 아카이브에서 온라인으로 이용 가능하다.[100]
사생결단
Dijkstra는 스파르타인이 될 정도로 겸손한 생활 방식을 이끌었다.[16] 누에넨에 있는 그와 아내의 집은 소박하고 작고 겸손했다. 그는 TV, VCR, 휴대폰을 가지고 있지 않았고, 영화관에 가지 않았다.[16] 그는 피아노를 연주했고, 오스틴에 있는 동안, 콘서트에 가는 것을 좋아했다. 클래식 음악을 열렬히 듣는 디크스트라가 가장 좋아하는 작곡가는 모차르트였다.[14]
Dijkstra는 2002년 8월 6일에 죽었다. 텍사스 대학의 관계자에 따르면, 사망 원인은 암이라고 한다.[101][102][103]
영향과 인식
컴퓨터 프로그래머와 컴퓨터 과학자의 차이는 직업 제목이다. 에드거 디크스트라는 몇 년째 컴퓨터를 만지지 않았지만 자랑스럽게 '컴퓨터 프로그래머'로 불리고 싶어 한다.(...) 그의 큰 장점은 비타협적이라는 것이다. C++의 프로그래밍을 생각하면 몸이 불편할 것이다.
1972년, 컴퓨터 기계 협회(ACM)는 Dijkstra에게 뛰어난 튜링 상을 수여함으로써 그 분야에 대한 디즈크스트라의 공헌을 인정했다. 이 상의 표창장에는 다음과 같이 적혀 있다.[105]
Edsger Dijkstra는 명확성과 수학적 엄격함의 모델이 된 고급 프로그래밍 언어인 ALGOL의 개발에 1950년대 후반에 주된 기여를 했다. 그는 프로그래밍 언어의 전반적인 과학과 예술의 주요 주창자 중 한 사람으로, 언어의 구조와 표현, 구현에 대한 우리의 이해에 크게 기여했다. 그의 15년간의 출판물은 그래프 이론에 관한 이론적 논문에서부터 프로그래밍 언어 분야의 기본 매뉴얼, 해설서, 철학적 사색에 이르기까지 다양하다.
시상식에서 주어진 소개는 디크스트라에 대한 찬사다.[105]
모든 곳에서 프로그래머들의 일하는 어휘는 E.W.에 의해 유래되거나 강제로 공포된 단어들로 채워져 있다. Dijkstra – 디스플레이, 치명적인 포옹, 세마포어, 고투리(Go-to-less) 프로그래밍, 구조화된 프로그래밍. 그러나 프로그래밍에 대한 그의 영향력은 어떤 용어집이 나타낼 수 있는 것보다 더 만연하다. 이 튜링상이 인정하는 소중한 재능은 디크스트라의 스타일: 높은 지적 도전으로서의 프로그래밍에 대한 그의 접근법, 프로그램이 정확성으로 디버깅되는 것이 아니라 정확하게 구성되어야 한다는 그의 웅변적인 고집과 실용적인 증명, 그리고 프로그램 데시그의 기초에서 문제에 대한 그의 밝은 인식이다.n. (…) 우리는 좋은 문학을 중시하는 것과 거의 같은 방식으로 좋은 프로그램을 중시하게 되었다. 그리고 이 운동의 중심에는 유용함 못지 않게 아름다운 패턴을 창조하고 반영하고 있는 E.W. Dijkstra가 서 있다.
Dijkstra의 장례식에서 그가 전한 FRS의 토니 호어 경의 말에 따르면:[14]
Edsger는 많은 깊은 질문들에 대해 깊이 생각해 본 사람으로 널리 알려져 있다; 가장 깊은 질문들 중 하나는 전통적인 도덕 철학의 그것이다. 사람이 어떻게 살아야 하는가? Edsger는 이 질문에 대한 그의 대답을 그의 인생 초반에 찾았다. 그는 새로운 과학 분야인 컴퓨팅 과학에 대한 연구를 수행하면서 학문적 과학자로 살기로 결심했다. 그는 컴퓨터를 엄격한 과학 분야로 확립할 기초를 닦고, 그의 연구와 가르침과 글에서, 그는 다른 모든 관심사를 배제하기 위해 완벽을 추구할 것이다. 이러한 약속에서 그는 결코 벗어나지 않았고, 그것이 그가 선택한 연구과목에 그가 한 평생 동안 할 수 있는 가장 큰 공헌을 한 방법이다.
2003년 3월 분산 컴퓨팅 커뮤니티에 다음과 같은 e-메일이 발송되었다.[106]
이는 과거 'PODC 영향력-종이상'으로 알려진 이 상이 분산 컴퓨팅 분야의 선구자였던 고(故) 에드저 Dijkstra의 뒤를 이어 '분산 컴퓨팅 분야의 에드거 W. 디크스트라 상'으로 명칭이 변경되었음을 알리기 위함이다. 동시성 원시성(세마포어 등), 동시성 문제(상호 배제 및 교착 상태 등), 동시성 시스템에 대한 추론, 자기 안정화에 대한 그의 기초적인 작업은 분산 컴퓨팅 분야가 구축되는 가장 중요한 지원 중 하나로 구성된다. 분산 컴퓨팅의 원칙에서 연구에 더 큰 영향을 미친 개인은 없다.
전 ACM 대통령 피터 J. 데닝은 디즈크스트라에 대해 다음과 같이 썼다.[107]
우리 분야의 거인 중 한 사람이자 프로그램과 프로그래밍에 대한 수학적 관점을 열정적으로 믿는 에드거 디크스트라(...) 그는 지난 25세기 동안 프로그래밍으로서 이 분야의 많은 위대한 지적 도전들 - goto 성명, 구조화된 프로그래밍, 동시 프로세스, 세마포어, 교착 상태, 재발.알골에서 프로그래밍을 하고, 올바른 프로그램을 도출한다.
수상 및 수상
Dijkstra의 상과 영예는 다음과 같다.[90]
- 네덜란드 왕립 예술 과학 아카데미 회원 (1971년)[108]
- 영국 컴퓨터 협회의 저명한 동료(1971)
- 컴퓨터 기계 협회 오전.M. 튜링상 (1972)[109]
- IEEE 컴퓨터 소사이어티 (1974년)의 해리 H. 구드 기념상.[110]
- 미국예술과학아카데미 외국인 명예회원(1975)
- 퀸즈 대학교 벨파스트의 과학 박사 (1976년)
- IEEE 컴퓨터 협회의 컴퓨터 개척자 헌장 수령자(1982)
- ACM/SIGCSE 컴퓨터 과학 교육에 기여한 공로상(1989)
- 컴퓨터 기계 협회 회원(1994)[111]
- 그리스 아테네 경제경영대학 명예박사(2001)
1969년, 영국 컴퓨터 협회(BCS)는 영국 컴퓨터 협회(DFBCS)의 상과 펠로우십에 대한 승인을 받았으며, 영국 컴퓨터 협회(DFBCS)는 왕실 헌장 제7조에 따라 수여된다. 1971년, 디크스트라에게 첫 선거가 치러졌다.[112]
1990년, 디크스트라의 60번째 생일을 맞아, 오스틴의 텍사스 대학 컴퓨터 과학학부(UTCS)는 그를 기리기 위해 이틀간의 세미나를 조직했다. 연사는 미국과 유럽 각지에서 왔고, 컴퓨터 과학자 그룹은 연구 기사를 기고했는데, 이 기사는 책으로 편집되었다.[14][113]
2002년 일본 C&C재단은 디즈크스트라가 "기본 소프트웨어 이론, 알고리즘 이론, 구조화 프로그래밍, 세마포어 등에 대한 창조적 연구를 통해 컴퓨터 소프트웨어의 과학적 기반을 확립하는 데 선구적인 공헌을 한 것"을 인정하였다. 디크스트라는 살아서 이 상을 통지받았지만, 그의 사후 시상식에서 그의 가족들에 의해 받아들여졌다.
2002년 사망하기 직전, Dijkstra는 프로그램 연산의 자기 안정화에 관한 연구로 분산 컴퓨팅 분야에서 ACM PODC 영향력-종이 상을 받았다. 이 연례 상은 이듬해 그를 기리기 위해 Dijkstra Prize (Edsger W. Dijkstra Prize in Distribution Computing)로 이름이 바뀌었다.
컴퓨터 과학 분야에서 뛰어난 학업 성취에 대한 디즈크라 상(로욜라 대학 시카고, 컴퓨터 과학 학부)은 에드거 Dijkstra의 이름을 따서 명명되었다. 2005년부터 시작된 이 상은 컴퓨터 과학 전공 졸업생의 최고 학업 성적을 인정한다. 선발은 모든 전공과목의 내신성적과 학과 교수진 선거로 이뤄진다.[114]
텍사스 오스틴 대학의 컴퓨터 과학학부(UTCS)는 2010년 10월 12일 제1회 Edsger W. Dijkstra 메모리얼 강연을 개최했다. 토니 호어 옥스퍼드 명예교수 겸 마이크로소프트 리서치 수석 연구원이 이 행사의 연사로 나섰다. 이 강연 시리즈는 Schlumberger로부터 Dijkstra의 기억을 기리기 위해 아낌없이 기부함으로써 가능해졌다.
참고 항목
- Dijkstra의 알고리즘.
- 식당 철학자들 문제
- 가드 커맨드 언어
- 술어 변압기 의미론
- 가장 약한 전제조건 미적분학
- 세마포레
- 스무스소트
- 유해하다고 간주되는 진술로 이동
- 컴퓨터 과학을 가르치는 것의 잔인성에 대하여
- 컴퓨터 과학의 선구자 목록
- 컴퓨터 과학의 중요 출판물 목록
- 이론 컴퓨터 과학의 중요 출판물 목록
- 동시, 병렬 및 분산 컴퓨팅의 중요 출판물 목록
선택한 게시물
- 책들
- — (1962). A Primer of ALGOL 60 Programming: Together with Report on the Algorithmic Language ALGOL 60. Academic Press. ISBN 978-0122162503.
- —; Dahl, Ole-Johan; Hoare, C.A.R. (1972). Structured Programming. Academic Press. ISBN 978-0-12-200550-3.
- — (1976). A Discipline of Programming. Prentice Hall. ISBN 978-0132158718.
- — (1982). Selected Writings on Computing: A Personal Perspective. Monographs in Computer Science. Springer. ISBN 978-0387906522.
- —; Feijen, W.H.J.; Sterringa, Joke (1988). A Method of Programming. Addison-Wesley. ISBN 978-0201175363.
- —; Scholten, Carel S. (1990). Predicate Calculus and Program Semantics. Texts and Monographs in Computer Science. Springer-Verlag. ISBN 978-0387969572.
- 선택된품목
- — (1959). "A Note on Two Problems in Connexion with Graphs" (PDF). Numerische Mathematik. 23 (3): 269–271. CiteSeerX 10.1.1.165.7577. doi:10.1007/BF01386390. S2CID 123284777.
- — (1962). "Some Meditations on Advanced Programming". Proc. IFIP Congress. Amsterdam: North-Holland. pp. 535–8.
- —(1965년).(기술 보고서)순차적 프로세스 협력하여.Technische Hogeschool 아인트호벤.EWD-123.209월 2020년 Retrieved.Genuys, F,(1968년)에 Reprinted.프로그래밍 언어:N.A.T.O. 고급 여름 학교 헬드 Villard-de-Lans는 1966년.학술 출판부.를 대신하여 서명함. 43–112.OCLC 499952053.데이 크스트라, E.W.(1968년)으로 출판 되었다."순차적 프로세스 협력".한센에서, 영국 약전.(교육.).기원은 동시 프로그래밍의.뉴욕:스프링거.를 대신하여 서명함. 65–138. doi:10.1007/978-1-4757-3472-0_2.아이 에스비엔 978-1-4419-2986-0.
- — (1965). "Solution of a Problem in Concurrent Programming Control". Comm. ACM. 8 (9): 569. doi:10.1145/365559.365617. S2CID 19357737.
- — (1965). "Programming Considered as a Human Activity". Proc. IFIP Congress. pp. 213–7.
- — (1968). "Go To Statement Considered Harmful". Letters to the editor. Comm. ACM. 11 (3): 147–8. doi:10.1145/362929.362947. S2CID 17469809.
- — (1968). "A Constructive Approach to the Problem of Program Correctness". BIT Numerical Mathematics. 8 (3): 174–186. doi:10.1007/bf01933419. S2CID 62224342.
- — (May 1968). "The Structure of the 'THE'-Multiprogramming System". ACM Symp. on Operating Systems. Comm. ACM. 11 (5): 341–346. doi:10.1145/363095.363143. S2CID 2021311.
- — (April 1970). Notes on Structured Programming (PDF) (Report). 70-WSK-03 – via E.W. Dijkstra Archive. Center for American History, University of Texas at Austin.
- — (1971). A Short Introduction to the Art of Computer Programming. Eindhoven: Technische Hogeschool. OCLC 3474242. EWD316.
- — (1971). "Hierarchical Ordering of Sequential Processes". Acta Inform. 1 (2): 115–138. doi:10.1007/bf00289519. S2CID 31573213.
- — (1972). "The Humble Programmer". Comm. ACM. 15 (10): 859–866. doi:10.1145/355604.361591.
- — (June–July 1974). "Programming as a Discipline of Mathematical Nature". American Mathematical Monthly. 81 (6): 608–612. doi:10.2307/2319209. JSTOR 2319209.
- — (1974). "On the role of scientific thought". E.W. Dijkstra Archive, Center for American History, University of Texas at Austin. EWD447.
- — (1974). "Self-stabilizing Systems in Spite of Distributed Control". Comm. ACM. 17 (11): 643–4. doi:10.1145/361179.361202. S2CID 11101426.
- — (1975). "How do we tell truths that might hurt?". Selected Writings on Computing: A Personal Perspective. Monographs in Computer Science. Springer (published 1982). pp. 129–131. ISBN 978-0387906522.
- — (1975). "Craftsman or Scientist". ACM Pacific 1975. pp. 217–223.
- — (1975). "On the teaching of programming, i. e. on the teaching of thinking". Language Hierarchies and Interfaces. 1975: 1–10.
- — (1977). "Programming: From Craft to Scientific Discipline". International Computing Symposium. 1977: 23–30.
- — (1978). "On the Interplay between Mathematics and Programming". Program Construction. Lecture Notes in Computer Science. 69. pp. 35–46. doi:10.1007/BFb0014649. ISBN 978-3-540-09251-3. S2CID 26233314.
- — (1975). "Correctness Concerns And, Among Other Things, Why They Are Resented". (ACM) Proceedings of the International Conference on Reliable Software. 21–23 April 1975, Los Angeles, California, USA: 546–550.
- — (1975). "Guarded Commands, Nondeterminacy and Formal Derivation of Programs". Comm. ACM. 18 (8): 453–7. doi:10.1145/360933.360975. S2CID 1679242.
- — (1978). "Finding the Correctness Proof of a Concurrent Program". Program Construction. 1978: 24–34.
- — (1984). "The threats to computing science". E.W. Dijkstra Archive, Center for American History, University of Texas at Austin. EWD898.
- — (1986). "On a Cultural Gap". The Mathematical Intelligencer. 8 (1): 48–52. doi:10.1007/BF03023921. S2CID 120847834.
- — (1987). "Mathematicians and Computing Scientists: The Cultural Gap". Abacus. 4 (4): 26–31.
- — (1989). "On the Cruelty of Really Teaching Computer Science". A debate on teaching computing science. Comm. ACM. 32 (12): 1398–1404. doi:10.1145/76380.76381. S2CID 16961489.
- — (1999). "Computing Science: Achievements and Challenges". ACM SIGAPP Applied Computing Review. 7 (2): 2–9. doi:10.1145/335527.335528. S2CID 34430415.
- — (2001). "The End of Computing Science?". Comm. ACM. 44 (3): 92. doi:10.1145/365181.365217. S2CID 31142279.
- — (2001). "What led to Notes on Structured Programming". E.W. Dijkstra Archive, Center for American History, University of Texas at Austin.
참조
- ^ Hoare, C.A.R. (12 October 2010). "The 2010 Edsger W. Dijkstra Memorial Lecture: What Can We Learn from Edsger W. Dijkstra?". Department of Computer Science, The University of Texas at Austin. Retrieved 12 August 2015.
- ^ a b c d 니클라우스 위스(2005년) : "파스칼에게 큰 영향을 준 것은 E. W. 디크스트라가 내놓은 구조화된 프로그래밍이었다. 이러한 설계 진행 방법은 자유롭게 결합되고 내포될 수 있는 구조화된 언어인 구조화된 언어를 사용함으로써 망각될 수 있다. 프로그램의 텍스트 구조는 제어 흐름을 직접 반영해야 한다."
- ^ a b c d e Wirth, Niklaus (July–September 2008). "A Brief History of Software Engineering" (PDF). IEEE Annals of the History of Computing. 30 (3): 32–39. doi:10.1109/MAHC.2008.33. S2CID 9035976. Retrieved 22 September 2020.
In 1965 Dijkstra wrote his famous Notes on Structured Programming and declared programming as a discipline in contrast to a craft. Also in 1965 Hoare published an important paper about data structuring. These ideas had a profound influence on new programming languages, in particular Pascal. Languages are the vehicles in which these ideas were to be expressed. Structured programming became supported by a structured programming language.
- ^ 2004년 회고록 '프로그래머 스토리: '컴퓨터 선구자' 브린치 한센은 RC 4000에서 멀티프로그래밍을 구현하는 작업을 지도하기 위해 '순차적 프로세스 협력'을 사용했다며 "컴퓨터 프로그래밍의 위대한 작품 중 하나로 이 걸작이 동시 프로그래밍의 개념적 기반을 마련했다"고 설명했다.
- ^ a b c d e f Lamport, Leslie (2002). "2002 PODC Influential Paper Award". ACM Symposium on Principles of Distributed Computing. Retrieved 22 September 2020.
Edsger W. Dijkstra started the field of concurrent and distributed algorithms with his 1965 CACM paper "Solution of a Problem in Concurrent Programming Control", in which he first stated and solved the mutual exclusion problem. That paper is probably why PODC exists; it certainly inspired most of my work.
- ^ a b c d e f 램포트(2015년)
- ^ a b Dolev, Shlomi: 자기안정화 (Cambridge, MA: MIT Press, 2000) ISBN 978-0-262-04178-2
- ^ a b Lo Russo, Graziano (1997). "An Interview with A. Stepanov (Edizioni Infomedia srl.)". STLport.org. Retrieved 21 December 2017.
Alexander Stepanov: "...I also discovered books of two great computer scientists from whose work I learned the scientific foundation of my trade: Donald Knuth and Edsger Dijkstra. Knuth taught me the answers. Dijkstra taught me the questions. Time and time again I come back to their works for new insights."
- ^ "Edsger Dijkstra Dutch computer scientist".
- ^ 이스트레일(2008년). "다작 작가인 그는 1,300여 편의 논문을 썼는데, 많은 논문들이 그의 정확하고 우아한 대본에 수작업으로 쓰여졌다. 그들은 수필과 비유, 동화 그리고 경고, 포괄적인 설명과 교육학적 구실이었다. 대부분은 수학과 컴퓨터 과학에 관한 것이었고, 다른 것들은 방문한 사람들과 장소들에 관한 것보다 그들의 저자에 대해 더 많이 드러내는 여행 보고서였다. 이러한 "다이크스트라니아식"의 문체는 기술 컴퓨팅 과학과 그 현저한 발전을 입증하는 철학 사이의 국경에 번성했다. 각각의 논문을 복사해서 다른 한정된 과학자 집단에 논문을 복사해서 전달할 소수의 동료 집단에게 배포하는 것이 그의 습관이었다. (...) 기쁨과 흥분으로 그것들을 읽었고 수학과 컴퓨터 과학에 대한 나의 사랑은 그의 작품들에 의해 적지 않은 영향을 받아왔다."
- ^ Hoare, Tony (March 2003). "Obituary: Edsger Wybe Dijkstra". Physics Today. 56 (3): 96–98. Bibcode:2003PhT....56c..96H. doi:10.1063/1.1570789.
- ^ a b c 라플란테(1996년).
- ^ a b c 라플란테(2008)
- ^ a b c d e f g h i j k l m n o p q r s Faulkner, Larry R.; Durbin, John R. (19 August 2013). "In Memoriam: Edsger Wybe Dijkstra" (PDF). University of Texas at Austin. Retrieved 20 August 2015.
- ^ O'Regan, Gerard (2013). Giants of Computing: A Compendium of Select, Pivotal Pioneers. Springer. pp. 91–92.
- ^ a b c d e f g h i j k l m n o 아파트(2002)
- ^ Gries, David (1978). Programming Methodology: A Collection of Articles by Members of IFIP WG2.3. Springer. p. 7. ISBN 978-1-4612-6315-9.
- ^ a b Markoff, John (10 August 2002). "Edsger Dijkstra: Physicist Who Shaped Computer Era". New York Times. Retrieved 10 April 2015.
- ^ Schofield, Jack (19 August 2002). "Edsger Dijkstra: Pioneering computer programmer who made his subject intellectually respectable". The Guardian. Retrieved 19 April 2015.
- ^ Knuth, Donald (1974). "Structured Programming with Go To Statements". Computing Surveys. 6 (4): 261–301. CiteSeerX 10.1.1.103.6084. doi:10.1145/356635.356640. S2CID 207630080.
A revolution is taking place in the way we write programs and teach programming, because we are beginning to understand the associated mental processes more deeply. It is impossible to read the recent book Structured Programming [by Dijkstra, Ole-Johan Dahl, and Tony Hoare (1972)], without having it change your life. The reason for this revolution and its future prospects have been aptly described by E.W. Dijkstra in his 1972 Turing Award Lecture, The Humble Programmer.
- ^ 브로이 & 데너트(2002년), 페이지 19.
- ^ Nakagawa, Toru (18 July 2005). "Software Engineering And TRIZ (1) — Structured Programming Reviewed With TRIZ". TRIZ Journal. Retrieved 18 August 2015.
- ^ Hashagen, Ulf; Keil-Slawik, Reinhard; Norberg, A., eds. (2002). History of Computing: Software Issues (International Conference on the History of Computing, ICHC 2000 April 5–7, 2000 Heinz Nixdorf MuseumsForum). Paderborn, Germany: Springer. p. 106.
- ^ Henderson, Harry (2009). Encyclopedia of Computer Science and Technology (revised ed.). Facts on File. p. 150. ISBN 978-0-816-06382-6.
- ^ a b c Meyer, Bertrand (2009). Touch of Class: Learning to Program Well with Objects and Contracts. Springer. p. 188. ISBN 978-3540921448.
- ^ 램포트(2015년). "수년동안 동시 프로그램 실행이 고려되어 온 동안, 동시성의 컴퓨터 과학은 상호 배제 문제를 도입한 Edsger Dijkstra의 1965년 논문으로 시작되었다. (...) 내결함성에 대한 첫 번째 과학적인 조사는 Dijkstra의 1974년 논문은 자기 안정화에 관한 것이었다. (...) 그 후 수십 년 동안 다음과 같은 현상을 보아왔다. 동시성에 대한 엄청난 관심 증가 - 분산된 시스템의 증가. 이 분야의 기원을 돌아보면 눈에 띄는 것은 이 역사를 헌신하는 에드제르 디크스트라가 하는 근본적인 역할이라고 말했다.
- ^ a b c "Edsger W. Dijkstra Prize in Distributed Computing". ACM Symposium on Principles of Distributed Computing.
– "Dijkstra Prize". European Association for Theoretical Computer Science (EATCS).
– "Dijkstra Prize". International Symposium on Distributed Computing (DISC).
– "분산 컴퓨팅 분야의 선구자인 Edsger W. Dijkstra 상은 분산 컴퓨팅 분야의 선구자인 Edsger Wybe Dijkstra(1930–2002)의 이름을 따서 명명되었다. 동시성 원시성(세마포어 등), 동시성 문제(상호 배제 및 교착 상태 등), 동시성 시스템에 대한 추론, 자기 안정화에 대한 그의 기초적인 작업은 분산 컴퓨팅 분야가 구축되는 가장 중요한 지원 중 하나로 구성된다. 그 어떤 개인도 분산 컴퓨팅의 원칙에서 연구에 더 큰 영향을 끼치지 못했다." - ^ "Edsger Wybe Dijkstra". Stichting Digidome. 3 September 2003. Archived from the original on 6 December 2004.
- ^ a b 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.
- ^ a b c Dijkstra, Edsger W. (1972). "The Humble Programmer". ACM Turing Lecture 1972. EWD340.
- ^ James, Mike (1 May 2013). "Edsger Dijkstra — The Poetry of Programming". i-programmer.info. Retrieved 12 August 2015.
- ^ Silberschatz, Abraham; Peterson, James L. (1988). Operating System Concepts. p. 512.
- ^ Goodwins, Rupert (8 August 2002). "Computer science pioneer Dijkstra dies". Retrieved 22 December 2010.
- ^ Chen, Peter P. (2002). "From Goto-less to Structured Programming: The Legacy of Edsger W. Dijkstra". IEEE Software. 19 (5): 21. doi:10.1109/MS.2002.1032847. S2CID 29320163.
- ^ Hart, P. E.; Nilsson, N. J.; Raphael, B. (1968). "A Formal Basis for the Heuristic Determination of Minimum Cost Paths". IEEE Transactions on Systems Science and Cybernetics SSC4. 4 (2): 100–107. doi:10.1109/TSSC.1968.300136.
- ^ Frana, Philip L (2001). "An Interview with Edsger W. Dijkstra (OH 330)". Comm. ACM. 53 (8): 41–47. doi:10.1145/1787234.1787249.
- ^ Jarník, V. (1930), "O jistém problému minimálním" [About a certain minimal problem], Práce Moravské Přírodovědecké Společnosti (in Czech), 6: 57–63
- ^ Prim, R. C. (November 1957), "Shortest connection networks And some generalizations", Bell System Technical Journal, 36 (6): 1389–1401, Bibcode:1957BSTJ...36.1389P, doi:10.1002/j.1538-7305.1957.tb01515.x
- ^ Dijkstra, E. W. (1959), "A note on two problems in connexion with graphs" (PDF), Numerische Mathematik, 1: 269–271, CiteSeerX 10.1.1.165.7577, doi:10.1007/BF01386390, S2CID 123284777
- ^ Pettie, Seth; Ramachandran, Vijaya (2002), "An optimal minimum spanning tree algorithm" (PDF), Journal of the ACM, 49 (1): 16–34, doi:10.1145/505241.505243, MR 2148431, S2CID 5362916
- ^ Dijkstra, Edsger (1961). Algol 60 Translation: An Algol 60 Translator for the X1 and Making a Translator for Algol 60 (Report). Stichting Mathematisch Centrum.
- ^ Dolev (2000), 페이지 16.
- ^ "Glossary 'Garbage Collection'". People Behind Informatics. University of Klagenfurt. Retrieved 12 August 2015.
- ^ Hudson, Richard (31 August 2015). "Go GC: Prioritizing low latency and simplicity". Go Programming Language Blog. Retrieved 21 September 2015.
- ^ Jeuring, Johan; Meertens, Lambert; Guttmann, Walter (17 August 2016). "Profile of IFIP Working Group 2.1". Foswiki. Retrieved 2 September 2020.
- ^ Swierstra, Doaitse; Gibbons, Jeremy; Meertens, Lambert (2 March 2011). "ScopeEtc: IFIP21: Foswiki". Foswiki. Retrieved 2 September 2020.
- ^ van Emden, Maarten (6 May 2008). "I remember Edsger Dijkstra (1930–2002)". Retrieved 22 December 2010.
- ^ Hoare, C.A.R. (December 1973). "Hints on Programming Language Design" (PDF). p. 27.
- ^ Stroustrup, Bjarne (2014). Programming: Principles and Practice Using C++ (2nd ed.). Addison-Wesley Professional. p. 827.
- ^ Sestoft, Peter (2015). "Early Nordic Compilers and Autocodes". In Gram, Christian; Rasmussen, Per; Østergaard, Søren Duus (eds.). History of Nordic Computing 4, Revised Selected Papers. 4th IFIP WG 9.7 Conference, HiNC 4, Copenhagen, Denmark, August 13–15, 2014. Springer. p. 358.
- ^ Daylight, E. G. (2011). "Dijkstra's Rallying Cry for Generalization: the Advent of the Recursive Procedure, late 1950s – early 1960s". The Computer Journal. 54 (11): 1756–1772. doi:10.1093/comjnl/bxr002.
- ^ Haigh, Thomas (April–June 2010). "Computing the American Way: Contextualizing the Early US Computer Industry" (PDF). IEEE Annals of the History of Computing. 32 (2): 8–20. doi:10.1109/MAHC.2010.33. S2CID 10691009. Retrieved 19 September 2020.
- ^ Randell, Brian. The 1968/69 NATO Software Engineering Reports. Dagstuhl-Seminar 9635: "History of Software Engineering" Schloss Dagstuhl, August 26–30, 1996.
- ^ Peter Naur; Brian Randell, eds. (January 1969). Report on a conference sponsored by the NATO Science Committee Garmisch, Germany, 7th to 11th October 1968 (PDF) (Report).
- ^ Dijkstra, Edsger W. A Case against the GO TO Statement (EWD-215) (PDF). E.W. Dijkstra Archive. Center for American History, University of Texas at Austin. (설명)
- ^ Dijkstra, E. W. (March 1968). "Letters to the editor: go to statement considered harmful". Comm. ACM. 11 (3): 147–8. doi:10.1145/362929.362947. S2CID 17469809.
- ^ 크누스(1974년).
- ^ 밀스, 할란 D. (1986) 구조화된 프로그래밍: Retrospect and Progress.(IEEE 소프트웨어 3(6): 58–66, 1986년 11월).
- ^ Reilly, Edwin D. (2004). Concise Encyclopedia of Computer Science. John Wiley & Sons. p. 734. ISBN 978-0-470-09095-4.
- ^ Ryder, Barbara G.; Soffa, Mary Lou; Burnett, Margaret (October 2005). "Impact of Software Engineering Research on Modern Programming Languages". ACM Transactions on Software Engineering and Methodology. 14 (4): 431–477. CiteSeerX 10.1.1.216.7772. doi:10.1145/1101815.1101818. S2CID 8593990.
- ^ 라일리(2004년), 페이지 734. "첫 번째 유의미한 SP[구조화 프로그래밍] 언어는 알골 60(q.v.)이었다. 그 후 현재 사용되고 있는 SP 언어는 에이다, C (q.v.), C++ (q.v.), Pascal, Java (q.v.)가 개발되었다.
- ^ Graba, Jan (1998). Up and Running with C++. Springer. p. 1. ISBN 978-3-540-76234-8.
- ^ 라일리(2004년), 페이지 734.
- ^ Broy & Denert (2002년), 페이지 .
- ^ 헨더슨 (2009), 페이지 .
- ^ 셀비, 리처드 W. (2007) 소프트웨어 엔지니어링: Barry W. Boem의 소프트웨어 개발, 관리 및 연구에 대한 평생 기여(IEEE Computer Society), 페이지 701–702
- ^ Dijkstra, Edsger W (1982). "On the role of scientific thought". Selected writings on Computing: A Personal Perspective. New York, NY, USA: Springer-Verlag. pp. 60–66. ISBN 978-0-387-90652-2.
- ^ Brown, Kyle; Craig, Gary; Hester, Greg; Amsden, Jim; Pitt, David; Jakab, Peter M.; Berg, Daniel; Stinehour, Russell; Weitzel, Mark (2003). Enterprise Java Programming with IBM WebSphere (2nd ed.). IBM Press. p. 5. ISBN 978-0-321-18579-2.
Most experienced IT professionals will agree that developing and adhering to a standard architecture is key to the success of large-scale software development. Computer pioneer Edsger Dijkstra validated this notion when he developed THE operating system in 1968. Since then, layered architectures have proved their viability in technological domains, such as hardware and networking. Layering has proved itself in the operating system domain; however, the same benefits are available when applied to e-commerce or to thin client–oriented applications. Layered architectures have become essential in supporting the iterative development process by promoting reusability, scalability, and maintainability.
- ^ Grier, David Alan. "Closer Than You Might Think: Layers upon Layers". IEEE Computer Society. Retrieved 12 August 2015.
- ^ Albin, Stephen T. (2003). The Art of Software Architecture: Design Methods and Techniques. Wiley. p. 3. ISBN 978-0-471-46829-5.
- ^ Dijkstra, Edsger W. Over seinpalen (EWD-74) (PDF). E.W. Dijkstra Archive. Center for American History, University of Texas at Austin. (설명)
- ^ 브린치 한센(2002년), 페이지 8.
- ^ Anderson, J.H.; Kim, Y.-J.; Herman, T. (2003). "Shared-Memory Mutual Exclusion: Major Research Trends Since 1986". Distributed Computing. 16 (2–3): 75–110. CiteSeerX 10.1.1.74.3990. doi:10.1007/s00446-003-0088-6. S2CID 17615199.
- ^ Alagarsamy, K. (2003). "Some Myths About Famous Mutual Exclusion Algorithms" (PDF). ACM SIGACT News. 34 (3): 94–103. CiteSeerX 10.1.1.113.3361. doi:10.1145/945526.945527. S2CID 7545330.
- ^ Raynal, Michel (2012). Concurrent Programming: Algorithms, Principles, and Foundations. Springer. p. vi. ISBN 978-3-642-32027-9.
- ^ James, Mike (1 May 2013). "Edsger Dijkstra – The Poetry of Programming". i-programmer.info. Retrieved 12 August 2015.
- ^ Hoare, C. A. R. (2004). "Communicating Sequential Processes" (PDF). Prentice Hall International.
- ^ Raynal, Michel (2012). Concurrent Programming: Algorithms, Principles, and Foundations. Springer. ISBN 978-3-642-32027-9.[페이지 필요]
- ^ McCormick, John W.; Singhoff, Frank; Hugues, Jérôme (2011). Building Parallel, Embedded, and Real-Time Applications with Ada. Cambridge University Press. p. 5.
- ^ Dolev (2000), 페이지 3.
- ^ Back, Ralph-Johan; von Wright, Joakim (2012) [1978]. Refinement Calculus: A Systematic Introduction. Texts in Computer Science. Springer. ISBN 978-1-4612-1674-2.
- ^ Morgan, Carroll; Vickers, Trevor, eds. (2012) [1992]. On the Refinement Calculus. Springer. ISBN 978-1-4471-3273-8.
- ^ Back & von Wright (2012), 페이지 v.
- ^ Stabler, Edward P. (2014). "Recursion in Grammar and Performance". In Roeper, Tom; Speas, Margaret (eds.). Recursion: Complexity in Cognition. Studies in Theoretical Psycholinguistics. 43. Springer International Publishing. pp. 159–177. doi:10.1007/978-3-319-05086-7_8. ISBN 978-3-319-05085-0.
- ^ Dijkstra, Edsger W. On a cultural gap (EWD-924) (PDF). E.W. Dijkstra Archive. Center for American History, University of Texas at Austin. (설명)
–Dijkstra, E.W. (1986). "On a cultural gap". The Mathematical Intelligencer. 8 (1): 48–52. doi:10.1007/bf03023921. S2CID 120847834. - ^ Dijkstra, Edsger W. On the cruelty of really teaching computer science (EWD-1036) (PDF). E.W. Dijkstra Archive. Center for American History, University of Texas at Austin. (설명)
- ^ Dijkstra, E.W. (1996년 7월), 효과적인 추리의 첫 번째 탐구 [EWD896] (E.W. Dijkstra Archive, 미국 역사 센터, 텍사스 대학교 오스틴)
- ^ 샤샤, 데니스, 라제르, 캐시: 그들의 마음에서 벗어남: 15명의 위대한 컴퓨터 과학자들의 삶과 발견. (뉴욕, 뉴욕: 스프링거, 1998, ISBN 978-0-387-98269-4) 페이지 64
- ^ Irfan Hyder, Syed(2013년)[full citation needed]
- ^ a b In Memoriam Edsger Wybe Dijkstra (memorial), University of Texas
- ^ 이스트레일(2008년).
- ^ Dijkstra, Edsger. "Denken als Discipline". VPRO. Noorderlicht. Retrieved 21 June 2016.
- ^ Dijkstra, Edsger W. The threats to computing science (EWD-898) (PDF). E.W. Dijkstra Archive. Center for American History, University of Texas at Austin. (설명)
- ^ Dijkstra, Edsger W. How do we tell truths that might hurt? (EWD-498) (PDF). E.W. Dijkstra Archive. Center for American History, University of Texas at Austin. (설명)
- ^ a b Dijkstra, Edsger W. EWD-475 (PDF). E.W. Dijkstra Archive. Center for American History, University of Texas at Austin. (설명)
- ^ Dijkstra, Edsger W. EWD-539 (PDF). E.W. Dijkstra Archive. Center for American History, University of Texas at Austin. (설명)
- ^ Dijkstra, Edsger W. EWD-427 (PDF). E.W. Dijkstra Archive. Center for American History, University of Texas at Austin. (설명)
- ^ Dijkstra, Edsger W. EWD-443 (PDF). E.W. Dijkstra Archive. Center for American History, University of Texas at Austin. (설명)
- ^ Dijkstra, Edsger W (1982). Selected Writings on Computing: A Personal Perspective. Berlin: Springer-Verlag. ISBN 978-0-387-90652-2.
- ^ "The manuscripts of Edsger W. Dijkstra". E. W. Dijkstra Archive. University of Texas.
- ^ "World-renowned University of Texas at Austin computer scientist Edsger Dijkstra dies". UT News. 7 August 2002. Retrieved 4 August 2020.
- ^ Dale, Nell; Lewis, John (31 December 2014). Computer Science Illuminated. Jones & Bartlett Publishers. p. 316. ISBN 978-1-284-05592-4.
- ^ "Edsger Dijkstra Passes Away". Dr. Dobb's Journal. 27: 14. 2002.
- ^ Woehr, Jack (1 April 1996). "An interview with Donald Knuth". Dr. Dobb's Journal. Retrieved 12 August 2015.
- ^ a b Edsger W. Dijkstra – 어워드 수상자 – ACM 어워드(M이 준비한 튜링 어워드 인용문 제외) 1972년 8월 14일 보스턴에서 열린 ACM 연례 회의에서 ACM Turing Awards 위원회의 더그 매킬로이 위원장)
- ^ 데일, 넬, 루이스, 존(2011년). 컴퓨터 과학 조명, 제4판(Jones and Barlett Publishers, LLC), 페이지 313
- ^ Denning, Peter J. (2004). "The Field of Programmers Myth" (PDF). Comm. ACM. 47 (7): 15–20. doi:10.1145/1005817.1005836. S2CID 415372.
- ^ "Edsger Wybe Dijkstra (1930–2002)". Royal Netherlands Academy of Arts and Sciences. Retrieved 17 July 2015.
- ^ "A. M. Turing Award". Association for Computing Machinery. Retrieved 5 February 2011.
- ^ "Edsger W. Dijkstra 1974 Harry H. Goode Memorial Award Recipient". IEEE Computer Society. Retrieved 17 January 2014.
- ^ "ACM Fellows – D". Association for Computing Machinery. Archived from the original on 24 January 2011. Retrieved 15 February 2011.
- ^ "Roll of Distinguished Fellows". British Computer Society. Archived from the original on 4 March 2016. Retrieved 10 September 2014.
- ^ 페이젠 & 그리스(1990).
- ^ "Awards". Loyola University Chicago.
추가 읽기
- Altisen, Karine; Devismes, Stéphane; Dubois, Swan; Petit, Franck; Raynal, Michel (2019). Introduction to Distributed Self-Stabilizing Algorithms. San Rafael, CA: Morgan & Claypool Publishers. ISBN 9781681735375.
- Apt, Krzysztof R. (2002). "Edsger Wybe Dijkstra (1930–2002): A Portrait of a Genius". Formal Aspects of Computing. 14 (2): 92–98. arXiv:cs/0210001. Bibcode:2002cs.......10001A. doi:10.1007/s001650200029. S2CID 12482128.
- Brinch Hansen, Per (2002). The Origin of Concurrent Programming: From Semaphores to Remote Procedure Calls. Springer. ISBN 978-0-387-95401-1.
- Ben-Ari, M. (2006). Principles of Concurrent and Distributed Programming (2nd ed.). Addison-Wesley. ISBN 978-0-321-31283-9.
- Broy, M.; Denert, Ernst, eds. (2002). Software Pioneers: Contributions to Software Engineering. Springer. ISBN 978-3-540-43081-0.
- Chen, Peter P. (2002). "From Goto-less to Structured Programming: The Legacy of Edsger W. Dijkstra". IEEE Software. 19 (5): 21. doi:10.1109/MS.2002.1032847. S2CID 29320163.
- Daylight, Edgar G. (2012). The Dawn of Software Engineering: from Turing to Dijkstra. Lonely Scholar. ISBN 9789491386022.
- Daylight, Edgar G. (2011). "Dijkstra's Rallying Cry for Generalization: The Advent of the Recursive Procedure, Late 1950s–Early 1960s". The Computer Journal. 54 (11): 1756–72. doi:10.1093/comjnl/bxr002.
- Dolev, Shlomi (2000). Self-stabilization. MIT Press. ISBN 978-0-262-04178-2.
- Feijen, W.H.J.; Gries, David, eds. (1990). Beauty Is Our Business: A Birthday Salute to Edsger W. Dijkstra. Springer. ISBN 978-0-387-97299-2.
- Istrail, Sorin (Fall–Winter 2008). "Storytelling About Lighthouses: Criticizing Professor Dijkstra Considered Harmless" (PDF). Conduit. Vol. 17 no. 2. Brown University Department of Computer Science. pp. 10–17.
- Istrail, Sorin (Spring–Summer 2010). "Storytelling About Lighthouses: When Professor Dijkstra Slapped Me in the Quest for Beautiful Code" (PDF). Conduit. Vol. 19 no. 1. Brown University Department of Computer Science. pp. 10–12.
- James, Mike (2013). "Edsger Dijkstra – The Poetry of Programming". I-programmer.info.
- Lamport, Leslie (June 2015). "Turing Lecture: The Computer Science of Concurrency: The Early Years". Comm. ACM. 58 (6): 71–76. doi:10.1145/2771951. S2CID 19164754.
- Laplante, Phillip A. (1996). Great papers in computer science. IEEE Press. ISBN 978-0-7803-1112-1.
- Laplante, Phillip A. (2008). "Great Papers in Computer Science: A Retrospective" (PDF). Journal of Scientific and Practical Computing. 2 (1): 31–35. CiteSeerX 10.1.1.559.2457. Archived from the original (PDF) on 5 May 2018.
- Lee, J.A.N. (1991). "Frontiers of Computing: A Tribute to Edsger W. Dijkstra on the Occasion of his 60th Birthday". Ann. Hist. Comp. 13 (1): 91–96. doi:10.1109/MAHC.1991.10000.
- Markoff, John (2002). "Edsger Dijkstra, 72, Physicist Who Shaped Computer Era". The New York Times.
- Milone, Lorenzo (2009). "E.W. Dijkstra, una vita da informatico [in Italian]" (PDF). Mondo Digitale. 9 (2).
- O’Regan, Gerard (2013). Giants of Computing: A Compendium of Select, Pivotal Pioneers. Springer. ISBN 978-1-4471-5340-5.
- Payette, Sandy (2014). "Hopper and Dijkstra: Crisis, Revolution, and the Future of Programming". IEEE Annals of the History of Computing. 36 (4): 64–73. doi:10.1109/MAHC.2014.54. S2CID 9029390.
- Shasha, Dennis; Lazere, Cathy (2 July 1998). Out of their Minds: The Lives and Discoveries of 15 Great Computer Scientists. Springer. ISBN 978-0-387-98269-4.
외부 링크
위키미디어 커먼즈에는 에드거 와이베 디크스트라와 관련된 미디어가 있다. |
Wikiquote는 Edsger W. Dijkstra와 관련된 인용구를 가지고 있다. |
- "E.W. Dijkstra Archive". Center for American History, University of Texas at Austin.
- "Dijkstra's Rallying Cry for Generalization". A site devoted to Dijkstra’s works and thoughts, created and maintained by the historian of computing Edgar Graham Daylight.