How to Design Programs (Hardcover) -
Felleisen, Matthias/Mit Pr
이 책을 어떻게 구매하게 됐는지 기억이 잘 나지 않는다. 어디선가 본 프로그래머가 읽어야 될 책 100선 같은 웹 상의 글에서 그걸 본 것 같은 희미한 기억이 있는데 확실하진 않다.
어찌됐든 비싼 원서를 구매해서, (내 기억이 맞다면, 이 전 회사에서 비용처리를 했던 것 같다) 책상 한 구석에 두다가, SICP 스터디가 끝나고 다음으로 가기 전 쉬어가는 의미로 이 책을 읽기 시작했다.
읽었다기 보다는 연습문제를 풀어보았다는 게 나한테 맞는 표현이겠다. 책의 타겟 독자층이 프로그래밍에 처음 입문한 초심자들을 위한 거라 책의 앞 부분 텍스트는 조금 지루했다. 그래서 건너뛰고, 문제만 냅다 풀면서 결국은 마지막 43장 까지 대충 수박 겉핥기로 마쳤다.
하지만, 아무리 입문서라고 해도, 책 중간에 나오는 인상깊은 구절들의 울림도 있다. 나는 웹 상에 있는 텍스트로 스터디를 하다 보니 줄을 치며 읽지는 못했지만, 밑에 옮겨 온 에필로그의 한 구절을 봐도, 프로그래밍 랭귀지를 가르쳐 주는 입문서와는 조금 다름을 알 수 있을 것이다.
For that reason, the design of every program -- whether it is small and for personal use or large and for business use -- must start with an analysis of the surrounding world of information and a description of the classes of data that represent the relevant information. If the classes are unusual or new, we make up examples so we understand the structure of the class description. After we understand the world of information surrounding our project and its data representation, we make a plan.
SICP 와 HTDP 를 읽고나니, 프로그래밍 입문자에게 C 나 C++ 을 가르치는 것보다 스킴을 가르치는 것이 더 좋을 것 같다는 생각이 든다.