티스토리 뷰


Donald E. Knuth ((高德纳)), Professor Emeritus of The Art of Computer Programming at Stanford University,

Donald E. Knuth


내 인생에서 제일 창의적이었던 일들을 꼽으려고 회고해 보면, 그것들이 모두 어느 한 시절, 가장 많은 제약조건과 잡무로 치이고 있었던 시기에 일어났었다는 것을 알게된다. 예를 들어 1967년이 되겠는데, 그 해는 내 인생에서 가장 정신없던 시절이었지만 동시에 내 연구중에서 중요하다고 평가받는 많은 결과들이 샘솟았던 행운의 해이기도 하다. 속성 문법 (attribute grammar), 크누스-벤딕스 완성 (Knuth-bendix completion), LL(k)파싱 (LL(k) parsing) 등이 모두 그 해에 나온 아이디어들이다. 사실 그 해에 나는 연구할 시간이 없었다. 쓰고있던 책(The Art of Computer Programming)이 곧 출판을 준비하고 있었고, 태어난 애기 둘을 아내와 함께 돌봐야 했고, 잠깐 입원까지 하기도 했었고, Caltech에서의 강의 이외에 외국의 다섯 나라에서 다섯가지 다른 주제로 강연하러 다니기도 했었다. 하지만 그러면서도 내가 할 수 있는 한 최대로 연구 시간을 쪼개내려고 노력했다. 한번은, 학회에 참가해서는 대부분의 논문발표 세션을 빼먹고 해변에 가앉아서 내 연구에 몰두하기도 했었다. 그 시절을 생각하면 종종 의문이인다, 내가 그 해에 보다 더 안정적이었다면 어땠을까, 내 연구가 과연 더 생산적이었을까 덜 생산적이었을까?

이러한 내 경험에 비추어 볼 때 연구소를 제일 잘 운영할 수 있는 방법은, 연구진들에게 좋은 연구실말고 다락방같은 형편없는 곳에서 지내도록 하고, 심하게는 연구와 관련없는 일들까지 시키는 것이다. 이상한 방식이긴 하겠지만, 그러한 제약조건을 만들어 놓으면 최대의 창의력이 솟아나는 것이 사실인것 같다.


If I look back at my own life and try to pick out the parts that were most creative, I can't help but notice that they occurred when I was forced to work under the toughest constraints. For example, 1967 was surely the most hectic year of my life, but that was the year when I was lucky enough to come up with several ideas that are now considered important, like "attribute grammar" and "Knuth-Bendix completion" and "LL(k) parsing." I actually had no time to do research that year, because The Art of Computer Programming was nearing publication, and my wife and I had two babies to take care of, and I needed to be hospitalized briefly, and I gave lectures in five countries on five different subjects, in addition to the classes I was teaching at Caltech. Yet I stole time to look at new things whenever I could; for example, at one conference I remember that I skipped most of the lectures so that I could sit on the beach and do research. I often wonder whether I would have been more productive or less productive if my life had been more stable that year.

My experiences suggest that the optimum way to run a research think tank would be to take people's nice offices away from them and to make them live in garrets, and even to insist that they do non-researchy things. That's a strange way to run a research center, but it might well be true that the imposition of such constraints would bring out maximum creativity.



Help Wanted

Dear people, this webpage is a help message unlike what you get by clicking `Help' in the menu bar: I am asking for your help, so that I can make my books as useful and complete as possible.

One way you can help is by reporting errors that I don't already know about. See the books page for pointers to the current errata lists of individual books.

I also need help proofreading the names of people who use ``exotic'' alphabets. If you can read Chinese, Japanese, Korean, Russian, Greek, Hebrew, Arabic, and/or Indian languages like Hindi, Bengali, or Tamil, etc., please take a look at my database of non-latin names and tell me if any corrections are needed.

Another project for which I'll soon be seeking volunteers is the job of converting MIX programs to a new RISC computer; see the MMIX page.

크누스 교수의 전설

난 한 번에 한 가지 일만 합니다. 이것은 바로 컴퓨터 과학자들이 일괄 처리 (batch processing) 라 부르는 것이지요. 다른 대안은 스왑-인 (swap-in) 과 스왑-아웃 (swap-out) 을 실행하는 것인데, 난 스왑-인이나 스왑-아웃은 하지 않습니다.


어떻게 전설을 낳았는가

  많은 사람들의 입을 통해 크누스는 역사상 가장 위대한 컴퓨터 프로그래머라는 전설이 전해지고 있다. 앨런 케이가 들려 주는 다음의 일화를 생각해 보자.

  내가 스탠퍼드에서 AI 프로젝트를 맡고 있던 시절 (1960 년대 후반) 매년 추수감사절 때마다 가졌던 행사 가운데 하나는 그 샌프란시스코 만안 지방 (Bay area) 에서 연구 프로젝트에 종사하고 있는 사람들로 프로그래밍 컨테스트를 여는 것이었습니다. 상품은 칠면조였던 것으로 기억됩니다.

  문제는 주로 매커시가 출제하였지요. 한 해는 크누스가 그 대회에 참가해서 가장 빠른 시간에 프로그래밍을 실행시킨 사람에게 주는 상과 알고리즘을 가장 빨리 실행하는 사람에게 주는 상을 모두 휩쓸었습니다. 그는 윌버 (Wilbur) 시스템이라는 원격 일괄 시스템을 이용해 최악의 시스템에서 그것을 해 내었지요. 그는 기본적으로 모든 참가자들을 바보로 만들어 버렸습니다.

  그들은 그에게 이렇게 물었지요. "저, 혹시 어떻게 이 일을 할 수 있었습니까?" 그의 대답은 이런 것이었습니다. "내가 프로그래밍을 배울 때 당신들이 만일 하루에 5 분씩만 그 기계와 시간을 가졌다면 좋았을 겁니다. 프로그램이 작동하도록 만들고 싶으면 그저 그것을 제대로 작성되기만 하면 되었지요. 그래서 사람들이 그저 돌에 조각을 하는 것처럼 프로그래밍을 배웠습니다. 그냥 그것을 향해 조금씩 다가가기만 하면 됩니다. 그것이 바로 내가 프로그래밍을 익힌 방법입니다."