책 욕심이 있어서 그런지 공짜로 받을 기회가 있다면 마다하지 않는다. 이또한 그렇게
받은 것인데 부끄러운 일이 있다. 내가 읽지도 않은 책을 본 것처럼 꾸며서 리뷰를 작성했다. 그렇게 책을 받았기 때문이다.
그러나 기쁨도 잠시, 당시 프로그래밍에 대해 잘 몰랐던 내게 이 책은 말도 안되게 어려웠다. 그저 책꽂이의 장식품을 받은 것에
지나지 않았다. 읽으려고 시도할 때마다, 쏟아지는 엄청난 졸음. 한글이라는 것 외에는 납득할 수 없는 기괴한 느낌. 이런 것들이
섞여 오랫동안 깨끗이 보관되어 있었다.
이제는 프로그래밍 질도 몇 년했고, 무엇보다 조금씩 삭아드는 책이 아까웠다. 게다가, 집에 아직도 안 읽은 책들이 있다니!
특히 기술 서적 위주로 말이다. 여담이지만 이 책들을 모두 볼 때까지는 도서관에 가지 않겠다... 그리 결심하고 독파를 하기로 한
첫째 책이 이것이다. 읽는데 거진 두 달은 걸린 것 같다. 부끄럽지만 또 인정해야할 일이 있다. 아직도 많은 부분이 이해가 되지
않는다. 일부분은 실용성에 대해 의심하고 있다. 나머지에 대해서는 감탄하며 쪽을 넘겼다. 저자의 탁월한 응용력과 박식함을
찬탄하며 말이다.
라이브러리를 만들기 위한 책이라 그런가. 후반으로 갈수록 템플릿 기법은 더욱 복잡해지고 기교를 부린 것처럼 보인다. 비지터
구현에 이르러서는 정점에 달한 듯 싶다. 매크로와 템플릿이 어지러이 교차하여, 유지 보수가 힘들고 코드 자체로 설명이 안되는
코드가 예시로 나온다. 점점 머리에 어떤 생각이 든다. 이렇게 코드를 짜놓고 나가버리면 볼만하겠군...
그리고 다른 생각도 든다. 저자는 C++가 가진 가능성을 보여주려 했다고. 어떤 문제도 해결 가능한 만능 언어임을 보여주려고
했던 것은 아닐까. 이해가 잘 되지 않음에도 템플릿 덕에 유연하고 확장 가능해진 코드를 보았다. 그렇게 바라보니, 이 책은 매우
가치있는 실험 기록처럼 보인다. 확실히 라이브러리 레벨에서 템플릿 사용은 정말 매력적이다. 그 유명한 STL을 보자. 템플릿을
이용한 자동 타입 캐스팅과 단위 전략이 없었다면? 이런 식으로 함수는 로직과 인터페이스가 분리되고, 확고히 단일 진입점을 가지게
되었다.
경고한다. 책은 정말 어렵다. 내게만 어려울 수도 있겠다. 또한 현장에 쉽사리 도입하기도 어려울 것 같다. 설령 내가
100% 이해했다 하더라도, 나만 이해했다면 무슨 소용이겠는가? 유지 불가능한 코드는 지속 불가능하다. 게다가 어떤 책에서 읽은
문구도 생각난다. 복잡하면 도태한다고 했었나. 단순함은 엔트로피를 억제한다. 템플릿-템플릿 전략은 분명 오류 대처를 힘들게 할
것이다. 매크로-템플릿 조합은 코드를 주문처럼 보이게 한다. 부수적으로 개발자가 코드에 접근할 엄두를 못 내게 하는데 효과적이다.
허나 이 책을 실험 기록으로 보면 초점이 달라진다. 멋진 아이디어와 창의적인 접근 방식으로 가득한 이 책을 추천한다. 특히
타입리스트(Typelist)는 정말로 경탄했다. 그리고 모르고 안 쓰는 것과 알고 안 쓰는 것은 차원이 다르다. C++에 대한
지평을 넓히고 싶다면, 한번 읽고 좌절해보는 것도 나쁘지 않다. 부스러기조차 보석처럼 보이고, 이 책으로 많은 것을 배웠다.
그리고 나처럼 한때나마 C++에 대해 전부 아는 것처럼 행세했다면 더욱 읽어보길 바란다.
