컴퓨터 프로그램의 구조와 해석 (SICP, 해럴드 애빌슨 외 2인, 2007) 독후감
MIT의 공통 핵심 과정으로 이 책을 공부한다. 생각하는 방식과 그 생각을 프로그래밍 언어로 표현하는 방법을 가르치는 마법사 책으로 명성이 자자하다. 많은 대학에서 전공 필수로 가르치는 책이기도 하다. <조엘 온 소프트웨어>로 유명한 조엘은 대학교 때 이 책을 배우는 게 너무 힘들어 교수님께 어려워서 못 해먹겠다는 질질 짜는 메일을 보냈다고 한다. 하지만, 이후 무슨 바람이 불었는지, <조엘 온 소프트웨어를 넘어서(More Joel on Software)>에서 이 책을 극찬한다. 아마 뒤에 이 책의 진가를 알았으리라.
MIT가 이 책과 같이 붙어 다녀서일까? 이 책을 접하기 전에도 뭔가 대단한 책이고 어려운 책처럼 느껴졌다. 물론 보고 난 뒤에 내가 제대로 느꼈다고 느꼈다. 말로만 들어보고 접해보지 않았지만, 책의 명성때문에 공부하는 중에 책이 어떠냐고 물어보는 사람이 많았다. 그때마다 항상 이렇게 대답하곤 했다. “3장까지 리스프의 dialect(방언)인 스킴(Scheme)을 배우고 4장에서는 스킴의 인터프리터를 만들더니 5장에서는 레지스터 기계 시뮬레이터를 만들고 4장에서 만든 인터프리터를 시뮬레이터에 올리면서 끝나.” 크… 내가 이제까지 본 책 중에서 가장 쇼킹한 책이었다.
프로그래머는 제일 처음 배운 언어에 영향을 많이 받는다고 한다. 생각을 표현하기 위해 언어를 사용한다고 믿으나 실은 언어로 생각하기 때문에 그런 것 같다. C 언어가 가장 먼저 접한 프로그래밍 언어였는데, 이 언어에서 얻은 지식과 사고의 폭이 이 책을 이해하는데 걸림돌이 된 적이 몇 번 있었다. 만약 처음 배운 언어가 Lisp나 Scheme 이었다면 내 사고의 폭이 좀 더 넓어지지 않았을까 생각해본다.
스터디에서 이 책을 같이 공부했는데, 혼자 공부했으면 아마 다 보지 못했을 것이다. 다음에 기회가 생긴다면 한 번 더 보고 싶은 책~
Update
표지 사진 교체