도널드 커누스 (Donald Ervin Knuth)
우쥔이 말하는 도널드 커누스
구글 수석 엔지니어였고, 텐센트 부사장을 지냈던 우쥔 박사는 '컴퓨팅의 정수'에서 다음과 같이 도널드 커누스에 대해 평한 바 있다. 찬양하는 표현이 과해 받아들이기 어려운 글이긴 하지만 읽어볼만 하다.
많은 프로그램이 작성된 후 자주 사용되지 않았기 때문에 아무도 소프트웨어 품질에 주의를 기울이지 않았다. 1960년대가 되면서 비즈니스에서 컴퓨터가 대중화되면서 많은 사용자가 반복적으로 사용할 수 있도록 상용 프로그램을 제공해야 했다. 프로그램이 합리적으로 설계됐는지, 얼마나 효율적인지, 얼마나 많은 리소스를 사용하는지 진지한 고민이 필요했고, 부족한 컴퓨터 알고리즘 이론을 누군가가 채워야 했다. 이때 컴퓨터 알고리즘의 기초를 다진 사람이 바로 도널드 커누스다.
도널드 커누스는 대학을 다니면서 컴퓨터 분야에서 탁월한 재능을 보였다. 케이스웨스턴리저브대 학교 Case Western Reserve University에 다녔고 농구팀의 일원이었고, 매 경기 대학농구리그 선수들의 득점, 어시스트, 스틸, 리바운드, 블록 및 기타 데이터를 분석하는 프로그램을 작성했다. 스포츠 산업에서 빅데이터를 가장 먼저 성공적으로 적용한 사례다. 당시 CBS 방송국의 취재 대상이 됐고 도널드의 팀과 커누스가 사용한 컴퓨터인 IBM 650 사진은 IBM 제품 브로슈어에 인쇄됐다.
많은 뛰어난 과학자처럼 도널드 커누스 역시 우리 삶에 많은 공헌을 했다. 간단히 말해 커누스의 업적은 크게 다섯 가지로 알려졌다.
첫째, 컴퓨터 알고리즘 분석의 창시자다. 컴퓨터 알고리즘 평가 기준을 제시했다.
둘째, 컴퓨터 과학 분야의 바이블인 《컴퓨터 프로그래밍의 예술》 시리즈(한빛미디어)를 썼다. 당시 출판사에서는 박사 학위를 받기 1년 전 원고를 요청했지만 4년 후에도 원고를 제출하지 않았다. 출판사는 조급해졌다. 원고를 요청했지만 커누스는 3천 쪽밖에 쓰지 않았으며 아직 책 주제 또한 논의되지 않았다고 말했다. 결국 출판사는 일단 3천 쪽 분량의 원고를 별도의 책으로 출판했다. 그렇게 출판된 첫 번째 책이 《컴퓨터 프로그래밍의 예술 1: 기초 알고리즘》이다. 이 책으로 알고리즘을 배운 빌 게이츠는 훌륭한 프로그래머가 되고 싶다면 이 책을 읽을 것을 추천했다. 그러나 도널드 커누스는 냉정하게 말했다. "이 책을 읽을 수 없다면 프로그래머가 되지 마시오."
셋째, 현재까지 최연소 튜링상 수상자다. 35세(1973년)에 《컴퓨터 프로그래밍의 예술: 3 정렬과 검색》을 완성했다. 이듬해 튜링상 선정 위원회는 알고리즘, 특히 불후의 책을 쓴 커누스의 공헌을 고려해 튜링상을 직접 수여했다. 《컴퓨터 프로그래밍의 예술》세트는 현재 4권까지 출간했다(7권으로 계획했다). 각 권은 600~700쪽 정도 분량이다. 책 세트가 몇백 달러의 가격이었지만 몇 년 동안 100만 부 이상 배포됐다.
넷째, 《컴퓨터 프로그래밍의 예술》 시리즈를 집필할 때 좋은 편집 및 조판 소프트웨어가 없었기에 조판 소프트웨어로 유명한 TeX(나중에 더 편리한 LaTeX로 만들어졌다)를 만들었다. TeX는 출판계 혁명이었고, 오늘날까지도 사실상 전 세계 학문적 조판의 표준으로 남았다. TeX는 세계에서 가장 버그가 적은 소프트웨어다. TeX 버그에 2.56달러(커누스 말로는 '16진수 1달러'라고 한다)에서 시작해 기하급수적으로 증가(2.56, 5.12, 10.24, 20.48, 40.96, 81.92…)하는 현상금을 걸었다. 그러나 세 번째 현상금을 건 후에는 아무도 실수를 찾지 못했다. 만약 소프트웨어에 열여덟 개 이상의 버그가 있었다면 도널드 커누스는 파산했을 것이다. 파산할 수도 있다는 위험을 무릅쓰고 조건을 건 것은 코드 품질에 매우 자신 있었다는 것을 보여준다. 도널드 커누스는 우수한 컴퓨터 과학자와 소프트웨어 개발자의 자질을 함께 지니고 있었다.
다섯째, 도널드 커누스는 실리콘 밸리의 수많은 튜링상 수상자 중 가장 유명하고 가장 프로그래밍에 능한 사람이었다. 실리콘 밸리는 튜링상 수상자로 가득하다. 실리콘 밸리에서는 매년 프로그래밍 대회를 개최했다. 대회 참가자에는 커누스 외에도 윈도우 발명가인 앨런 케이Alan Curtis Kay(스티브 잡스가 애플 컴퓨터와 모바일 그래픽 인터페이스 운영체제를 발명하는 데 영감을 줬다), 마빈 민스키 Marvin Minsky와 함께 인공지능 이론을 제시한 앨런 뉴얼Allen Newell 등이 있었다.
도널드 커누스는 이 사람들 사이에서 가장 느린 컴퓨터 한 대만으로 1등을 차지했다. 어떻게 1등을 했을까? 커누스는 프로그래밍을 배울 때 컴퓨터가 너무 느리고 메모리도 너무 적어 프로그래밍 전후로 컴파일하고 오류를 수정하는 데 너무 많은 시간이 걸렸고, 항상 처음부터 오류 없이 올바르게 프로그래밍하려고 노력했으며 최적의 알고리즘을 설계할 수밖에 없었다고 설명했다. 이는 마치 오래된 라이카 Leica 카메라로도 최고의 사진을 찍을 수 있는 탁월한 사진 작가들을 생각나게 하는데, 많은 사람은 최신 DSLR로도 단순히 이미지를 기록하는 용도로만 사용한다. 커누스와 비교하면 오늘날 소위 말하는 '스타 개발자'는 모두 초등학생 정도밖에 안 된다. 진정한 일류 프로그래머를 단 한 명 꼽는다면 도널드 커누스다. 1
1972년, 바빌로니아 점토판의 알고리즘
1972년 스탠퍼드대학교의 컴퓨터공학자인 도널드 누스(Donald Knuth)는 (절반은 런던의 대영박물관에, 4분의 1은 베를린의 국립미술관에 보관되어 있고, 나머지는 소실된) 작은 책 크기의 고대 바빌로니아 점토판에서 옛날 옛적의 알고리즘으로밖에 설명할 수 없는 내용을 보게 된다.
저수지.
높이는 3,20, 용적은 27,46,40. 가로가 세로보다 50 초과.
높이 3,20의 역수는 18.
여기에 용적 27,46,40을 곱하면 8,20.
50의 반을 제곱하면 10,25.
여기에 8,20을 더하면 8,30,25.
제곱근은 2,55.
이를 둘로 복사하여 하나에는 더하고 다른 하나에는 빼면
가로는 3,20, 세로는 2,30.
이것이 절차임."이것이 절차임"은 감사 기도처럼 일반적인 마무리였으며, 누스에게는 의미를 암시했다. 누스는 루브르에서도 버로우즈(Burroughs) B5500의 스택 프로그램을 떠올리게 하는 '절차'를 발견했다. 누스는 이렇게 말했다. "알고리즘 그 자체를 정의하는 사례를 통해 알고리즘을 설명하는 훌륭한 방식을 개발한 바빌로니아인들을 칭송해야 한다." 당시 알고리즘을 정의하고 설명하는 일에 몰두하던 누스는 고대 점토판에서 발견한 내용들을 보고 놀라지 않을 수 없었다. 바빌로니아인들은 수를 특정한 자리에 놓아서 수의 '사본'을 만들고, 수를 '머릿속에' 저장하는 방법을 기록했다. 추상적 자리를 차지하는 추상적 양이라는 개념은 오랜 세월이 지난 후에야 다시 등장했다.2
참고문헌
- 인포메이션 / 제임스 글릭 저/김태훈, 박래선 역/김상욱 감수 / 동아시아 / 2017년 01월 18일 / 원제: The Information: A History, A Theory, A Flood
- 컴퓨팅의 정수 / 우쥔(吴军) 저/신준기 역 / 제이펍 / 1쇄 발행: 2023년 08월 08일 / 원제: 计算之魂