컴퓨터 프로그램의 구조와 해석해럴드 애빌슨 외 지음, 김수정 외 옮김, 이광근 감수 / 인사이트
오래 전에 Lisp를 처음 공부하려고 찾아봤을 때 이 책을 처음 알게 되었다. MIT에서 전공 기초 교재로 쓴다는 말은 들었는데, MIT에서도 패배자가 매우 많아서 애초에 재능 없는 학생들을 걸러내는 용도로도 쓰였다는 얘기가 있다. (사실일까?) Lisp 공부는 ANSI Common Lisp 책으로 잘 했지만, 그래도 언젠가 SICP를 한 번 볼 날이 있지 않을까 생각만 하고 있었는데 번역서가 나왔다는 얘기가 들려서 냅다 SIG를 질렀다. (SIG는 일종의 스터디 그룹으로 Special Interest Group의 약자이다.) 게다가 무려 이광근 교수님께서 감수하셨다지 않나.
솔직한 심정으로 말하자면, 괜한 일을 벌렸구나 싶었다. 이 책은 입문자를 위한 것이지만 입문용으로는 지나치게 많은 내용을 담고 있다. 처음 시작할 때는 목차도 제대로 안 봤는데 전체 5장의 내용 중 3장이 거의 끝나가는 시점에서 이제는 말할 수 있다. 미적분학, 자료구조, 논리설계, 멀티스레딩, 컴퓨터 구조론, 프로그래밍 언어론, 컴파일러 등 일일이 열거하기도 힘든 컴퓨터 공학의 큰 줄기를 한 번에 다 훑어내려간다. 미치지 않고서야 이 내용을 한 학기만에 쫓아가겠는가. 게다가 이 책은 본문의 텍스트보다 문제 설명이 더 많다. 대부분의 문제를 풀고 넘어가야 이 책을 제대로 봤다고 말할 수 있는 것이다.
10번째 모임이 끝나면 3장이 끝나는데, 말만 들어도 무시무시한 4장의 "메타서큘러 실행기"에 이제는 다들 GG를 선언하고 싶은 눈치다. 4장부터 언어를 만들고 컴파일러를 만들고 레지스터 기계를 만든다는데 겁먹지 않을 사람이 있겠는가. 나는 컴퓨터 공학 수업 많이 듣지는 않았어도 핵심적인건 대략 다 들었다고 생각했는데, 학부 다 마친 사람에게도 이 책은 절대 쉽지 않다. 하물며 지금 같이 공부를 하는 전공자도 아닌 1, 2학년들은 더 말할 것도 없는 것이다.
어쨌든 기본 개념을 다시 다지면서 Scheme 코드를 거의 자연스럽게 읽을 수 있게 되었다는 점에서 후회는 없다. Common Lisp의 CLOS도 어떤 원리로 만들어졌는지 이해할 수 있게 되었다. 새 학기가 시작되고 앞으로도 몇 달은 더 공부해야겠지만, 일단 시작했으니 다들 포기하지 말고 끝까지 달려서 마법사가 되었으면 바랄 뿐 (..) 다 함께 오지 않았다면 나도 몇 쪽 넘기지 못 했을거란 생각이 든다. 그만큼 독한 마음 먹지 않고는 독파하기 힘든 책.




덧글
잇힝♡ 2008/02/22 19:54 # 답글
패배자를 걸러낸다...