Thoughts2007.10.24 00:02
오늘 출간된지 이틀밖에 안된 따끈따끈한 책을 받았습니다. 바로 "컴퓨터 프로그램의 구조와 해석(Structure and Interpretation of Computer Programs. SICP로 줄여서 부르기도...)"의 2판입니다. 인사이트에서 내놓은 번역본입니다.

책을 받자마자 지하철 안에서 25페이지 가량을 읽어보았습니다. 이 책에 대한 평가가 칭찬 일색이라 첫 페이지를 넘기는 순간 뭔가 압도되는 느낌을 받지 않을까, 내심 기대를 했었습니다. 하지만 25페이지까지는 전혀 그런 기분을 느낄 수 없더군요. -_-; 왜 그런가 잠깐 생각을 해 봤는데... 적어도 28페이지까지 이 책은 여타의 C 책이나, 여타의 Java 책이나, 여타의 C++ 책이나, 여타의 Ruby 책과 전혀 다를 바가 없습니다. 사실 40페이지까지도 계속 그런 식입니다. Scheme(Lisp의 후손 쯤 되는)이라는 언어의 문법에 대해서만 설명하고 있거든요.

진짜 재미있는 부분은 41페이지 부터입니다. 책의 일부분을 잠깐 인용해보죠.

스스로 새로운 무언가를 만들어 내는 일을 할 때에는 언제나 그러하듯이, 프로그램 짜는 일을 하는 사람이라면 어떤 일을 하고 나서 어떤 결과가 나올지 머릿 속에 그려낼 줄 알아야 한다. 전문 사진작가가 되려면, 담고 싶은 장면을 잡아내는 눈이 있어야 하고, 노출이나 현상 조건에 따라 어떤 곳이 얼마나 나올지 미리 헤아릴 줄 알아야 한다. 그런 다음에야, 사진의 틀을 잡고 모자란 빛을 더하고 조리개를 맞추고 사진을 떠내는 따위 일을 어떻게 할지 계획을 세워, 바라던 효과를 얻어낼 수 있다. 프로그램 짜는 일도 이와 똑같다. 어떤 일을 하기 위해 어떤 프로세스를 밟아야 할 지 미리 정해놓으려고 짜는 게 프로그램이다. 그러므로 전문가가 되려면, 여러 가지 프로시저(절차)가 만들어 내는 프로세스(과정)을 미리 그려낼 수 있도록 공부해야 한다. 이런 기술을 깨닫고 익힌 다음에야 생각한 대로 돌아가는 프로그램을 어떻게 짜는 지 배울 수 있다.

돌이켜 생각해보건대, 제가 들었던 프로그래밍 언어 관련 수업에서 이런 말을 들었던 적은 단 한번도 없었던 것 같아요. 어떻습니까. 위의 한 단락만 봐도 이 책을 왜 읽어야 하는지, 느낌이 좀 오지 않으시나요?

하지만 이 책에는 여러가지 진입장벽이 있습니다. 우선 Scheme(혹은 Lisp) 라는 '생소한' 언어에 대한 알러지 반응이 그것이죠. 이 언어는 우선 널리 사용되는 언어가 아닙니다. C/C++/Java/Ruby 등등의 절차형 언어의 후손들과는 아주 다른 모습을 하고 있죠. 예전에 논문 자격시험 보겠다고 멋모르고 프로그래밍 언어 과목을 신청했다가 (지금 생각해보면 얼마나 오만한 선택이었던지 ㅋㅋ) Erlang이라는 언어를 일주일 만에 떼야 하는 난감한 상황에 처했던 적이 있었거든요. (Erlang이 Scheme과 아주 비슷합니다) Erlang[각주:1]이 제가 알던 프로그래밍 언어들과는 아주 달라서, 무척 혼이 났었습니다. 하지만 다르다는 것 뿐이지, Erlang이라는 언어가 다른 언어에 비해서 특별히 어렵거나 하지는 않습니다. 오히려 배워야 할 문법적 구성물들은 단순하고 간단한 편이죠. '뭔가 색다른 언어'에 대한 호기심이 왕성한 편인 독자라면, 이 책을 한번 읽어보는 것도 좋겠습니다.

사용자 삽입 이미지

두 번째 진입장벽은, 이 책에 담긴 내용들에 대한 '신화'에 가까운 부풀려짐이죠. 사실 이 책에 담긴 내용은 프로그래머라면 한번쯤 고민해봐야 할 그런 내용들에 불과합니다. 다만 어렵게 느껴지는 것은, 우리가 그동안 세상이 어떻게 돌아가는지를 살펴보느라 너무 바빠서 (돌이켜보면 세상은 얼마나 빠르게 변해 왔습니까? 웹 개발에 사용된 프로그래밍 언어만 따져봐도 bash, Perl, C/C++/Java, PHP, 그리고 최근에는 Ruby까지... 언어가 아닌 개발 프레임워크까지 계산에 넣는다면 JSP, Rails, Spring 등등...) 본질적인 문제들에 눈을 돌릴 여유가 없었기 때문일 거에요. 그러니 '프로그래밍의 본질'이 무엇인지에 대해 진지하게 성찰해보고 싶은 사람이라면, 이 책을 일독해 보는 것이 좋겠습니다.

+ + +

이건 어디까지나 사견입니다만, 저는 이런 책일 수록 화장실이 어울린다고 생각합니다. 화장실에 대한 세간의 선입견이 좀 드러워서 그렇지, 사실 화장실은 굉장히 고즈넉할 뿐 아니라 (뿌지직거리는 소리만 빼면), 세상사의 구질구질함에서 한발짝 비켜설 수 있는 유일한 공간이기도 합니다.

불가에서도 이야기하는 내용입니다만, 세상은 곧 우(곧, 근심)입니다. 따라서 세상사라는 것은 곧 근심의 원인이자 근심 그 자체일 수 밖에 없습니다. 그러니 불가에서 화장실을 해우소라고 부르는 것은 굉장히 의미심장합니다. 먹고 사는 문제는 사실 세상사와 밀접한 관련이 있거든요. 먹고 살려면 불가피하게 세상에 발을 담구게 됩니다. 불가도 결코 그런 문제에서 자유롭지 않죠. 그런데 유일하게 '화장실'에서는, 그런 먹고사는 문제(곧, 근심)를 버릴 수 있습니다. 어떻게? 배설을 통해서.

그러니까 저는 이런 책일 수록 화장실이 어울린다고 생각합니다. 세상사에서 한발 비켜서서 모든 근심을 버릴 수 있는 곳에서 (세상이 어떻게 돌아가건 상관하지 않으며) 오직 프로그래밍이라는 것의 본질적인 문제에 대해서 고민해 본다는 것, 멋지지 않습니까?

다만 한가지 유의할 점.

화장실에 너무 오래 앉아있으면 치질에 걸릴 수 있습니다.



  1. Ericsson에서 개발한, 선언적/함수형 프로그래밍 언어. [본문으로]
신고
Posted by 이병준

소중한 의견, 감사합니다. ^^

  1. 서평 재밌게, 잘 보고 갑니다.
    저도 화장실에서 보는 책이 꼭 있는데 - 설득의 심리학 같은.- 화장실만큼 정말 집중 잘되고 머리에 쏙 들어오는 곳이 없더군요
    요즘은 게으름으로 인해, 지하철 출퇴근길에 책을 주로 읽습니다. 지금 읽고 있는 책 마치면 꼭 한번 읽어 보고 싶네요 ^^;

    2007.10.24 12:40 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 와주셔서 감사합니다. 저는 요즘 화장실에서 "솔라리스"라는 SF 소설을 읽고 있습니다. :-)

      2007.10.24 17:07 신고 [ ADDR : EDIT/ DEL ]
  2. emilie

    잘 봤습니다. 구해서 읽어봐야겠네요 ^^

    2007.10.25 14:42 신고 [ ADDR : EDIT/ DEL : REPLY ]
  3. 명저라길래 원서를 주문해놨습니다. 이제 보니 이 책은 곁에 두고 꾸준히 봐야 되는 것이었군요. 이거 화장실에서 꼬부랑 말을 접하면 응가도 곱게 나오지 않겠는데요. :)

    2007.10.25 22:46 신고 [ ADDR : EDIT/ DEL : REPLY ]