서지정보
서명: 컴퓨터 프로그래밍의 예술 1: 기초 알고리즘
저자: 도널드 커누스(Donald E. Knuth)
역자: 류광
출판사: 한빛미디어
출간일: 2006년 9월 18일
원서명: The Art of Computer Programming, Vol. 1: Fundamental Algorithms
원서 출간일: 1997년
생각
『컴퓨터 프로그래밍의 예술 1: 기초 알고리즘』은 『내가 검찰을 떠난 이유』에 이어 올리는 빌린책챌린지 책입니다. 전산학을 공부하는 학생과 종사자들이 한 번은 그래도 읽어 봐야지… 하는 책이고, 별로 안 읽히는 책이기도 합니다. 800페이지에 달하는 B5 양장본에, 빼곡한 내용과 수많은 연습문제는 정말 강한 의지를 요하지요.
제가 책을 읽는 이유는 그냥 재미있어서입니다. 그 주제에 대해 배우려면 어떤 순서로 읽어야 하는지 같은 것들을 고려하지 않고 읽는다거나, 지식을 어디에 활용하겠다는 목적도 그다지 없지만 '아무튼 책을 읽은 나'는 소중하기 때문에, 지적 허영의 범주에 들어가겠거니 하고 스스로 생각하기도 합니다.
TAOCP라는 약어로만 불러도 알 사람은 다 아는 이 책을 지금 제가 읽는 것은 정말 그런 허영의 일종이겠지요. 도서관에서 "이 기회에 읽으면 좋겠다"라고 가볍게 생각해 고르고, 연습문제를 풀지도 않고, 이 책이 다루는 중요한 가상 어셈블리 언어인 MIX로 된 코드를 제대로 읽지 않고, 책상에 두고 여유가 날 때마다 진도를 나가는 식으로 읽었습니다.
그럼에도 불구하고, 대학생일때는 1장의 첫 부분만 읽다가 끝나버린 이 책을 지금 어쨌든 끝까지(2장까지) 한 번 훑었습니다. 알게 된 것이 있다면 다음과 같습니다. 대학생 때 수강했던 데이터 구조라는 과목의 내용은 2장에 대부분 포함되며, JAVA로 했을 때는 그저 데이터 구조의 개념을 이해하기 위한 형식이었지만 이것을 어셈블리로 하게 되면 컴퓨팅의 더 깊은 단계(low level)와 닿아 있다는 것. 예를 들자면:
- 프로그램이 어떻게 실제로 메모리에 적재되고, 특히 서브루틴을 어떻게 체계적으로 배치할 수 있는가?
- 메모리의 할당과 해제는 어떻게 실제로 수행될 수 있는가?
같은 문제들 말이지요. 제가 대학생때 배웠던 데이터구조와 이 책이 보여준 예제들의 차이는, 마치 고등학생 때 배운 행렬과 대학생 때 배운 선형대수학의 차이처럼 보였습니다. 그것이 그때 제가 배우기에 적합한 수준으로 잘려나갔다는 데에는 동의할 수 있지만, 이것이 왜 중요한지, 이것을 어디에 유용하게 쓸 수 있는지를 모르는 상태에서 '일단 익혀두면 어디에든 쓸테니 일단 배워둬라' 같은 식으로 배우게 되었다는 점에서 말이지요.
아무튼 공부는 끝이 없고 정말 재미있는 것들을 많이 알 수 있어서 좋습니다. 남들이 보기에는 한심할 수도 있겠지만, 뭐 제가 재미있는데요.